亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#特性 匿名類型與隱式類型局部變量使用介紹

2020-01-24 02:13:25
字體:
來源:轉載
供稿:網友

在本篇中我要介紹兩個概念,我覺得這兩個東西必須一起來介紹,這樣才能連貫。
C# 2.0里我們已經匿名方法了,現在類型也玩起匿名來了,怪不得大家“舉報”的時候都喜歡匿名,為啥?因為匿名被舉報人就找不著報復對象了唄,是的,匿名就是把名字隱藏起來,沒有名字誰還能找得到你啊。

匿名類型


在C#里有這樣一些類型,它是作為臨時儲存數據的,生命周期只在這個方法內,方法結束了,這個類型的生命周期也沒有了。那么這里我們就可以使用一個匿名類型。

復制代碼 代碼如下:

var KeyPair = new {Key=”yuyi”,Value=”20”};

這個KeyPair就是一個匿名類型,注意KeyPair這里是一個變量名,并不是類的名字。嗯,前面還有一個var,這又是什么呢?這是C# 3.0里面的隱式局部變量。


隱式類型局部變量

還是先介紹一下隱式類型局部變量吧:
在C# 3.0里多了一個關鍵字var,他表示這樣的一種類型:C#編譯器可以根據上下文推斷的出來
比如var I = 5;編譯器可以根據后面的賦值推斷的出來i應該是個整型。既然是局部變量,那么它就只能用在方法內部了,注意C#是強類型的,引入了一個var并不是像javascript那樣,變成了一個弱類型的語言。在編譯器第一次編譯后var就會被確定的類型所替代的。所以對于隱式類型局部變量要注意以下幾點:

1.它只能存在于方法內部
2.它不是一個新的類型,只是一個關鍵字,或者叫做一個占位符,在C#編譯器編譯后它就會被確定的類型所替代
3.它是編譯器根據上下文推斷出來的,所以所有一切不能被編譯器推斷出來的用法都是錯誤的。比如不能這樣使用:var nullValue = null;因為null啥也不是,他是一個空指針,是一個不確定的東西。也不能這樣使用:var I = 5;I = “abc”;編譯器根據第一個賦值會推斷出它是一個整型,但是隨后又將一個字符串賦值給它,這是怎么回事呢?

對于var我的建議是不到逼不得已的時候不用,那什么是逼不得已呢?來看我們的匿名類型吧。

回到匿名類型

剛才說了,匿名類型是沒有名字的類型,沒有名字你怎么來稱呼它,怎么來聲明它?但是匿名類型真的是沒有名字的么?
看看C#編譯器又在我們背后干了些什么:
使用ILDASM打開編譯過的程序集,發現多了一個類型:

復制代碼 代碼如下:

<>f__AnonymousType0<<Key>j__TPar, <Value>j__TPar>

這個類型是直接繼承自System.Object的,并且是internal seald(只在程序集內可見,并且不能被繼承)。有心的你也許會發現,這個類型還是一個泛型類型,那么只要我們在使用一個匿名類型的時候參數個數,參數名稱不發生變化,編譯器是不會為我們產生更多的類型的:

復制代碼 代碼如下:

var KeyPair1 = new { Key="yuyi",Value="Programer"};
var KeyPair2 = new { Key="y",Value=3};
var KeyPair3 = new { Key=4,Value="abc"};

上面三個匿名類型,編譯器只會為我們在背后產生一個新類型,一個泛型的新類型。如果我們將這個匿名類型內的屬性名修改一下:對

復制代碼 代碼如下:

var KeyPair1 = new { Key="yuyi",Value="Programer"};
var KeyPair2 = new { Key="y",Value1=3};

就會產生兩個新泛型了:

復制代碼 代碼如下:

<>f__AnonymousType0<<Key>j__TPar, <Value>j__TPar>
<>f__AnonymousType1<<Key>j__TPar, <Value1>j__TPar>

看看,這個命名還是有規律可循哦。
如果你給這個匿名類型添加一個新屬性呢?
這樣又產生了一個新類型了:

復制代碼 代碼如下:

<>f__AnonymousType1<<Key>j__TPar, <Value1>j__TPar, <Test>j__TPar>

嗯,這個問題還是值得關注的,所以我們在使用匿名類型的時候應該盡量保持“一致性”:
屬性個數一致(這個盡量了)。
屬性名稱一致,這個比較好把握。
只要保持了這個一致性,編譯器會為一致的產生同一個類型,而不一致的會新產生一個類型,如果不一致的太多我想是不是會產生“代碼爆炸”而致使”WorkSet”過大造成性能的損失?這個只是我個人認為,沒有經過測試。

繼續隱式類型局部變量

由于匿名類型在我們編寫代碼的時候并不存在,所以匿名類型也不能作為方法的返回值和參數了。”var”一樣,也是只能在方法內部使用?,F在是不是有點明白什么時候才是逼不得已使用”var”???就是在使用匿名類型的時候,匿名類型編譯器可以推斷出來,但是靠人工又無法推斷了。所以我覺得只在編譯器可推斷而人不可推斷的時候才使用隱式類型局部變量,靠我們人工可以推斷的還是不建議使用,顯式的聲明變量類型可以增強代碼的可讀性,這是一個好的編程習慣,不要因為C# 3.0提供了這樣的特性就大用而特用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久男| 久久精品国亚洲| 日韩欧美国产一区二区| 亚洲天堂第一页| 国产欧美精品va在线观看| 国产成人久久久| 国产黑人绿帽在线第一区| 亚洲的天堂在线中文字幕| 亚洲综合大片69999| 亚洲加勒比久久88色综合| 欧美日韩精品国产| 亚洲一区美女视频在线观看免费| 欧美韩国理论所午夜片917电影| 欧美国产日韩中文字幕在线| 亚洲91精品在线观看| 欧美亚洲国产视频小说| 亚洲久久久久久久久久久| 国产亚洲日本欧美韩国| 欧美激情精品久久久久久蜜臀| 亚洲欧洲自拍偷拍| 久久久中精品2020中文| 国内精品久久久久久| 日本欧美精品在线| 国产精品久久久久久久久久久久| 国产一区二区免费| 精品调教chinesegay| 亚洲欧美成人一区二区在线电影| 亚洲人在线视频| 久久久久国产精品免费| 伊人久久男人天堂| 伊人激情综合网| 亚洲国产精品va在线看黑人动漫| 午夜精品三级视频福利| 91精品国产777在线观看| 国产精品国产三级国产aⅴ浪潮| 国外成人在线视频| 久久激情五月丁香伊人| 亚洲xxxx视频| 日韩成人在线视频观看| 亚洲成人动漫在线播放| 欧美黑人一区二区三区| 色777狠狠综合秋免鲁丝| 久久久久女教师免费一区| 国产亚洲精品一区二555| 成人性生交大片免费观看嘿嘿视频| 日韩视频―中文字幕| 中文字幕亚洲一区在线观看| 成人免费淫片视频软件| 国产日韩在线免费| 国产亚洲视频在线| 午夜精品视频网站| 97国产真实伦对白精彩视频8| 91视频九色网站| 91高清视频在线免费观看| 国产mv久久久| 中文字幕一区日韩电影| 在线观看日韩www视频免费| 欧美日韩国产色| 欧美另类极品videosbestfree| 国产视频久久久久| 国产视频久久久久| 少妇av一区二区三区| 久久成人国产精品| 久久久精品国产亚洲| 欧美在线视频一二三| 午夜精品久久久久久99热| 久久69精品久久久久久国产越南| 久久久噜噜噜久久中文字免| 亚洲欧美日韩天堂一区二区| 欧美日韩爱爱视频| 色哟哟亚洲精品一区二区| 国产精品wwww| 久久的精品视频| 日韩的一区二区| 热久久免费视频精品| 亚洲精品自拍第一页| 成人av在线天堂| 97福利一区二区| 中文国产成人精品久久一| 国产日韩欧美日韩大片| 国产精品一二三视频| 精品无人区太爽高潮在线播放| 日韩欧亚中文在线| 91亚洲国产成人精品性色| 日韩中文字幕网| 国产精品福利小视频| 亚洲人成电影网站色www| 午夜精品99久久免费| 97在线观看视频| 亚洲乱码av中文一区二区| 91精品久久久久久久久中文字幕| 久久青草精品视频免费观看| 国产精品嫩草视频| 色偷偷88888欧美精品久久久| 丁香五六月婷婷久久激情| 亚洲精品国产精品国自产观看浪潮| 日韩精品视频免费| 久久福利视频导航| 成人精品久久久| 91理论片午午论夜理片久久| 亚洲福利视频久久| 日韩av男人的天堂| 91夜夜未满十八勿入爽爽影院| 国产精品美女999| 国产精品久久久久久久久粉嫩av| 国产亚洲精品久久| 一本色道久久88亚洲综合88| 性欧美激情精品| 国产视频精品一区二区三区| 亚洲理论在线a中文字幕| 2019亚洲日韩新视频| 日韩亚洲欧美中文在线| 亚洲中国色老太| 国产午夜精品一区二区三区| 亚洲人成啪啪网站| 国产精品黄视频| 亚洲免费影视第一页| 中文字幕精品国产| 色综合久久久888| 久久影院在线观看| 国产成人avxxxxx在线看| 欧美精品精品精品精品免费| 精品久久久一区二区| 久久久亚洲国产天美传媒修理工| 色偷偷综合社区| 精品日韩美女的视频高清| 久久久国产视频91| www欧美日韩| 国产精品99久久久久久久久久久久| 国产中文日韩欧美| 麻豆国产精品va在线观看不卡| 亚洲精品一区二区在线| 成人疯狂猛交xxx| 欧美寡妇偷汉性猛交| 久久电影一区二区| 91精品久久久久久综合乱菊| 亚洲欧洲在线看| 国产精品自产拍在线观| 色综合久综合久久综合久鬼88| 日韩欧美aⅴ综合网站发布| 欧美午夜激情在线| 中文国产成人精品久久一| 国内精品久久久久久影视8| 91po在线观看91精品国产性色| 大量国产精品视频| 日本精品va在线观看| 亚洲综合视频1区| 久久久久中文字幕| 成人黄色免费网站在线观看| 国产精品人成电影| 亚洲第一福利网| 亚洲欧美日韩一区二区在线| 久久香蕉国产线看观看网| 亚洲二区在线播放视频| 91在线|亚洲| 日韩在线欧美在线国产在线| 亚洲国产小视频| 欧美美女操人视频| 亚洲一区中文字幕在线观看| 最好看的2019年中文视频| 97久久精品人人澡人人爽缅北| 欧美激情视频一区二区三区不卡| 日本一区二区三区在线播放| 亚洲人成电影在线播放|