[英]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.