[英]Are all reference types class types in C#?
C# 中是否有任何不是類的引用類型? 以下泛型中的約束是否包括所有引用類型?
static void f<T>() where T : class
{
T t = default;
Console.WriteLine(t);
}
你在問兩個不同的問題
C# 中的所有引用類型都是類類型嗎?
不
以下泛型 [
where T : class
] 中的約束是否包括所有引用類型?
是的,它將限制所有引用類型
首先,讓我們確定引用類型實際上是什么。
C#中有兩種類型:引用類型和值類型。 引用類型的變量存儲對其數據(對象)的引用,而值類型的變量直接包含其數據。
以下關鍵字用於聲明引用類型:
班級
界面
代表
C# 還提供了以下內置引用類型:
動態的
目的
細繩
注意:上面沒有提到, Array
類型也是從abstract
基類型Array
派生的引用類型
其次,讓我們弄清楚類約束約束了什么
where T : class
類型參數必須是引用類型。 此約束也適用於任何類、接口、委托或數組類型。
注意:上面沒有提到, class
約束還包括dynamic
作為一個額外的事實,從C# 7.3 開始,您還可以通過委托顯式約束
委托約束
同樣從C# 7.3開始,您可以使用
System.Delegate
或System.MulticastDelegate
作為基類約束。 CLR 始終允許此約束,但 C# 語言不允許它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.