第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

class A<T>where T:new()是什么意思?

class A<T>where T:new()是什么意思?

class A<T>where T:new()是什么意思
查看完整描述

5 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

這是C#泛型類聲明的語(yǔ)法
class A<T> 表示 A類接受某一種類型,泛型類型為T,需要運(yùn)行時(shí)傳入
where表明了對(duì)類型變量T的約束關(guān)系。where T:new()指明了創(chuàng)建T的實(shí)例時(shí)應(yīng)該具有構(gòu)造函數(shù)。一般情況下,無(wú)法創(chuàng)建一個(gè)泛型類型參數(shù)的實(shí)例。然而,new()約束改變了這種情況,要求類型參數(shù)必須提供一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù)。

查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
動(dòng)漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊

where表明了對(duì)類型變量T的約束關(guān)系。where T: A表示類型變量是繼承于A的,或者是A本身。where T:new()指明了創(chuàng)建T的實(shí)例時(shí)應(yīng)該使用的構(gòu)造函數(shù)。

查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

要T是繼承于A
where T: A
要T繼承于B的
where T: B

在定義泛型類時(shí),可以對(duì)客戶端代碼能夠在實(shí)例化類時(shí)用于類型參數(shù)的類型種類施加限制。如果客戶端代碼嘗試使用某個(gè)約束所不允許的類型來(lái)實(shí)例化類,則會(huì)產(chǎn)生編譯時(shí)錯(cuò)誤。這些限制稱為約束。約束是使用 where 上下文關(guān)鍵字指定的。下表列出了六種類型的約束:

約束
說(shuō)明

T:結(jié)構(gòu)
類型參數(shù)必須是值類型??梢灾付ǔ?Nullable 以外的任何值類型。有關(guān)更多信息,請(qǐng)參見(jiàn)使用可以為 null 的類型(C# 編程指南)。

T:類
類型參數(shù)必須是引用類型;這一點(diǎn)也適用于任何類、接口、委托或數(shù)組類型。

T:new()
類型參數(shù)必須具有無(wú)參數(shù)的公共構(gòu)造函數(shù)。當(dāng)與其他約束一起使用時(shí),new() 約束必須最后指定。

T:<基類名>
類型參數(shù)必須是指定的基類或派生自指定的基類。

T:<接口名稱>
類型參數(shù)必須是指定的接口或?qū)崿F(xiàn)指定的接口??梢灾付ǘ鄠€(gè)接口約束。約束接口也可以是泛型的。

T:U
為 T 提供的類型參數(shù)必須是為 U 提供的參數(shù)或派生自為 U 提供的參數(shù)。這稱為裸類型約束。

//---------------------------------
補(bǔ)充,由于泛型約束表達(dá)式全部是“AND”關(guān)系,所以不可能表示出“或”關(guān)系來(lái),而且C#不支持多重繼承,所以樓主的,這種或繼承自A,或繼承自B的需求,是無(wú)法實(shí)現(xiàn)的。



查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

第一:where只用于泛型,所以應(yīng)該是:
public class BaseClass<T> where T : new()
{
public T SomeMethod()
{
return new T();
}
}
第二:
where T : new()的意思是,這個(gè)T必須有public構(gòu)造函數(shù),如果new BaseClass<T>()的時(shí)候,這個(gè)T沒(méi)有public 構(gòu)造函數(shù),將編譯錯(cuò)誤.

第三:
除了new(),where后面可以有好多種內(nèi)容,去約束T.
比如:public class MyGenericClass<T> where T:IComparable { }等.

查看完整回答
反對(duì) 回復(fù) 2019-06-01
?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊

這個(gè)規(guī)定了T的類型必須要有一個(gè)無(wú)參的公有的構(gòu)造方法.
不過(guò)你這類的簽名是不是有問(wèn)題?
BaseClass<T> where T : new()
應(yīng)該是這樣.
看下樓上給的MSDN地址吧,講的比較細(xì).
"The type argument must have a public parameterless constructor. When used together with other constraints, the new() constraint must be specified last."
這句我給你翻譯下吧...有很多程序員不懂英語(yǔ)的..
"類型參數(shù)必須有一個(gè)公有的,無(wú)參數(shù)的構(gòu)造方法.當(dāng)和別的約束一起使用的時(shí)候,new()約束必須放在最后"

查看完整回答
反對(duì) 回復(fù) 2019-06-01
  • 5 回答
  • 0 關(guān)注
  • 3542 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)