C#泛型中无约束类型参数规则解析及示例请求
无约束类型参数示例解析
什么是无约束类型参数
无约束类型参数指未通过where子句添加约束条件的泛型类型参数,比如public class SampleClass<T>中的T,它可以接受任意类型作为实参(引用类型、值类型均可)。
规则1:无约束类型参数可与null比较
不管T是引用类型还是值类型,都能直接将T类型的实例与null做比较,语法完全合法。示例代码:
public class SampleClass<T> { public bool CheckIfNull(T item) { // 直接与null比较,无语法错误 return item == null; } }
规则2:若类型实参为值类型,与null的比较始终返回false
当T的实参是值类型(如int、DateTime、自定义结构体)时,item == null的结果永远是false——因为普通值类型本身无法被赋值为null。示例验证:
public static void Main() { // 引用类型实参:string var stringSample = new SampleClass<string>(); Console.WriteLine(stringSample.CheckIfNull(null)); // 输出: True Console.WriteLine(stringSample.CheckIfNull("hello")); // 输出: False // 值类型实参:int var intSample = new SampleClass<int>(); Console.WriteLine(intSample.CheckIfNull(100)); // 输出: False // 值类型实参:自定义结构体 var structSample = new SampleClass<MyStruct>(); Console.WriteLine(structSample.CheckIfNull(new MyStruct())); // 输出: False } public struct MyStruct { }
运行结果清晰体现:
- 当
T为引用类型时,传入null会返回true,传入有效实例返回false; - 当
T为值类型时,无论传入什么值,与null的比较结果都是false。
内容的提问来源于stack exchange,提问作者YaSecu
相关产品推荐
相关产品推荐

