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

首頁 > 編程 > C# > 正文

C# 泛型的約束

2020-01-24 00:46:33
字體:
來源:轉載
供稿:網友

1.引用類型約束

struct RefSample<T> where T:class         引用類型用Class表示約束,其他的引用類型為具體的約束。

表示對于的約束必須為一個類(引用類型)不能是值類型(int,char,datatime,struct),可以是接口interface

區分,數組為引用類型,因為定義數組時需要new出一個對象。

雖然定義成 RefSample<T> 傳入的必須為引用類型 但是RefSample仍然為值類型

2.值類型約束

class ValSample<T> where T:struct

為引用類型,因為int,char等類型都是struct

ValSample<int>

3.構造函數類型約束

public T CreateInstance<T>() where T:new(){  return new T();}

指定的類型T必須有構造函數,CreateInstance<int>和CreateInstance<object> 都是有效的。但是CreateInstance<strings>沒有構造函數。

4.轉換類型約束

一種約束允許你指定另一個類型,類型實參必須可以通過一致性、引用或裝箱轉換隱式地轉換為該類型。你還可以規定一個類型實參必須可以轉換為另一個類型實參――這稱為類型參數約束。

理解的意思:可以互換,就是我們可以通過裝箱或者強制類型轉換成目標類型的 類型都可以用于類型參數傳入。

class Sample<T> where T:Stream

有效:Sample<Stream> 這本身符合約束

無效:Sample<String> 因為String類型無法通過引用或者裝箱拆箱強制轉換成Stream、

struct Sample<T> where T:IDisposable

規定T必須為IDisposable 類型的 引用類型

有效:Sample<SqlConnection>引用轉換

無效:Sample<StringBuilder>

分析:為什么SqlConnection 可以而StringBuilder不可以?它們都是引用類型

1.SqlConnection實現了IDisposable接口,所以可以協變

2.StringBuilder只實現了ISerializable接口,無法通過途徑轉換為IDisposable

class Sample<T> where T:IComparable<T>

因為將IComparable<T>整體當作約束,分析IComparable<T>的類型,可以用Type.IsValueType判斷,true為值類型,false為引用類型

typeof(IComparable<T>).IsValueType   結果為false表示為引用類型

有效:Sample<int>(裝箱轉換)

無效:Sample<FileInfo>

也可以指定多種約束:

class sample<T> where T:stream,IEnumerable<string>,IComparable<int>

class Sample<T,U> where T:U

有效:Sample<Stream,IDisposable>

無效:Sample<string,IDiposable>

總結:要看傳入類參數是否可以轉換,查看規定參數和傳入類參數是否實現同一接口,如果實現則可以,否則不可以。

不可以是以下:System.Object,System.Enum,System.ValueType,System.Delegate,結構或密封類(String)

5.組合約束

對類型參數的約束有多個,注意:只能是一種類型,值類型和引用類型不能同時存在,沒用一個類型即是引用類型,又是值類型。

由于每一個值類型都有一個無構造函數,此后不能再有構造函數約束

有效:

class Sample<T> where T:class,IDisposable,new()
class Sample<T,U> where T:Stream where U:IDispsable

無效:

class Sample<T> where T:class,struct (沒有任何類型即時引用類型又是值類型的,所以為無效的)

class Sample<T> where T:Stream,class (引用類型約束應該為第一個約束,放在最前面,所以為無效的) Stream只是約束傳入參數為Stream具體類型,而class約束為引用類型,一開始我理解錯了
class Sample<T> where T:new(),Stream   (new() 必須放在最后)

class Sample<T> where T:IDisposable,Stream (類必須放在接口前面,所以為無效的)

class Sample<T> where T:XmlReader,IComparable,IComparable (對于轉換類型約束,同一個接口不能出現多次

class Sample<T,U> where T:struct where  U:Class,T (類型形參“T”具有“struct”約束,因此“T”不能用作“U”的約束,所以為無效的)

class Sample<T,U> where T:Stream ,U:IDisposable  語法錯誤

看到網上還有這種版本也是有效的我表示不理解:

class Sample<T> where T:struct,IDisapsable  IDisapsable為值類型?

class Sample<T,U> where T:class where U:struct ,T   T為引用類型為何與值類型一起約束U?

希望可以指正

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人福利网站在线观看| 国产一级揄自揄精品视频| 日韩欧美国产一区二区| 国产午夜精品免费一区二区三区| 亚洲va电影大全| 精品久久久久久久久中文字幕| 精品视频在线导航| 国产精品第一区| 国产欧美精品一区二区三区-老狼| 欧美日韩性生活视频| 久久精品最新地址| 欧美视频在线观看 亚洲欧| 亚洲一区精品电影| 国产成人免费91av在线| 日韩在线观看成人| 亚洲人成在线一二| 日韩av电影院| 久久视频免费在线播放| 日韩中文视频免费在线观看| 久久天天躁狠狠躁老女人| 国产精品毛片a∨一区二区三区|国| 日韩精品有码在线观看| 欧美激情一区二区三区在线视频观看| 国产一区二区三区免费视频| 日韩中文字幕免费视频| 97超碰色婷婷| 国产精品色午夜在线观看| 91精品国产91久久久久久最新| 欧美一区二区三区四区在线| 欧美性生交大片免费| 久久99久久99精品免观看粉嫩| 久热爱精品视频线路一| 性欧美长视频免费观看不卡| 在线视频亚洲欧美| 欧美大学生性色视频| 日韩电影第一页| 亚洲午夜小视频| 成人免费网站在线看| 国产精品91久久| 亚洲a∨日韩av高清在线观看| 亚洲午夜小视频| 欧美日韩性视频在线| 日韩欧美精品免费在线| 欧美国产日韩一区二区在线观看| 国产精品久久久久福利| 久久久精品国产一区二区| 亚洲福利在线观看| 亚洲区免费影片| 欧美日本在线视频中文字字幕| 一区二区三区国产在线观看| 国产精品视频资源| 精品久久久久久中文字幕大豆网| 伊人一区二区三区久久精品| 免费av在线一区| 操人视频在线观看欧美| 久久人人爽人人爽人人片av高清| 九九热视频这里只有精品| 亚洲精品美女在线观看播放| 亚洲毛片在线观看| 欧美最猛性xxxxx免费| 亚洲国产又黄又爽女人高潮的| 亚洲色图色老头| 国产一区二区三区在线观看视频| 日韩一区视频在线| 国产精品一区二区电影| 亚洲福利视频专区| 亚洲一区精品电影| 国产精品久久久999| 国内精品视频一区| 综合136福利视频在线| 亚洲性69xxxbbb| 国产精品国模在线| 韩国视频理论视频久久| 欧美成年人视频| 国产精品wwww| 成人妇女淫片aaaa视频| 久久天天躁狠狠躁夜夜躁| 欧美一区三区三区高中清蜜桃| 欧美中文在线观看国产| 68精品国产免费久久久久久婷婷| 久久亚洲精品一区二区| 国产精品成熟老女人| 日韩在线观看你懂的| 清纯唯美日韩制服另类| 一道本无吗dⅴd在线播放一区| 一区二区三区视频免费| 欧美视频不卡中文| 欧美午夜激情小视频| 岛国精品视频在线播放| 国产视频在线观看一区二区| 69久久夜色精品国产69乱青草| 欧美大片va欧美在线播放| 国内精品久久久| 成人有码视频在线播放| 久久久久女教师免费一区| 久久色精品视频| 亚洲欧美日韩一区在线| 在线精品高清中文字幕| 国产日韩精品电影| 97精品国产97久久久久久春色| 亚洲综合在线做性| 亚洲国产精品久久精品怡红院| 久久久久久av| 91精品久久久久| 久青草国产97香蕉在线视频| 欧美肥老太性生活视频| 国产中文日韩欧美| 欧美日韩另类视频| 亚洲欧美激情四射在线日| 国产亚洲精品美女| 欧美理论电影在线播放| 精品综合久久久久久97| 久久精品免费播放| 中文字幕精品www乱入免费视频| 国色天香2019中文字幕在线观看| 国产91成人video| 精品国产欧美一区二区三区成人| 亚洲国产精品小视频| 日韩免费在线播放| 欧美性xxxx极品高清hd直播| 国产精品高清免费在线观看| 国产成人精品视频在线观看| 国产精品99久久久久久久久久久久| 中日韩美女免费视频网站在线观看| 成人黄色大片在线免费观看| xxx欧美精品| 8x拔播拔播x8国产精品| 国产精品在线看| 欧美电影免费播放| 一区二区三欧美| 欧美人与性动交a欧美精品| 成人中文字幕+乱码+中文字幕| 中文字幕免费精品一区高清| 亚洲欧美一区二区三区久久| 91亚洲va在线va天堂va国| 日韩精品免费综合视频在线播放| 国产综合久久久久久| 午夜精品美女自拍福到在线| 日本精品视频在线播放| 国产精品美女久久| 亚洲日本中文字幕免费在线不卡| 亚洲在线一区二区| 欧美激情18p| 国产午夜精品美女视频明星a级| 亚洲自拍偷拍视频| 在线观看精品国产视频| 欧美网站在线观看| 久久99精品久久久久久青青91| 欧美精品18videos性欧| 欧美久久精品午夜青青大伊人| 久久99亚洲热视| 77777亚洲午夜久久多人| 日韩在线观看高清| 丝袜亚洲欧美日韩综合| 国产精品羞羞答答| 久久久国产一区二区| 日韩av电影免费观看高清| 欧美肥婆姓交大片| 精品国产鲁一鲁一区二区张丽| 成人免费视频网址| 三级精品视频久久久久| 日韩免费精品视频| 久久精品视频99| 欧美精品在线第一页|