请问如何详细解释C概念?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1406个文字,预计阅读时间需要6分钟。
常用约束+约束告知编译器类型参数必须具备的功能。在没有约束的情况下,类型参数可以是任何类型。编译器只能假定类型参数是System.Object的成员,它是任何.NET类型的最终基类。
常用约束
约束告知编译器类型参数必须具备的功能。 在没有任何约束的情况下,类型参数可以是任何类型。 编译器只能假定 System.Object 的成员,它是任何 .NET 类型的最终基类。 如果客户端代码使用不满足约束的类型,编译器将发出错误。 通过使用 where 上下文关键字指定约束。 下表列出了七种类型的约束:
最常用的泛型约束为where T : struct、where T : class、where T : new()。
约束多个参数
可以对多个参数应用多个约束,对一个参数应用多个约束,如下例所示:
class Base { } class Test<T, U> where U : struct where T : Base, new() { }
对类型参数使用 == 和 != 运算符
在应用 where T : class 约束时,请避免对类型参数使用 == 和 != 运算符。编译器只知道 T 在编译时是引用类型,并且必须使用对所有引用类型都有效的默认运算符。
如果必须测试值相等性,建议同时应用 where T : IEquatable 或 where T : IComparable 约束,并在用于构造泛型类的任何类中实现该接口。
参考文章
类型参数的约束(C# 编程指南)——Microsoft
以上就是详解C#泛型的类型参数约束的详细内容,更多关于C#泛型的类型参数约束的资料请关注易盾网络其它相关文章!
本文共计1406个文字,预计阅读时间需要6分钟。
常用约束+约束告知编译器类型参数必须具备的功能。在没有约束的情况下,类型参数可以是任何类型。编译器只能假定类型参数是System.Object的成员,它是任何.NET类型的最终基类。
常用约束
约束告知编译器类型参数必须具备的功能。 在没有任何约束的情况下,类型参数可以是任何类型。 编译器只能假定 System.Object 的成员,它是任何 .NET 类型的最终基类。 如果客户端代码使用不满足约束的类型,编译器将发出错误。 通过使用 where 上下文关键字指定约束。 下表列出了七种类型的约束:
最常用的泛型约束为where T : struct、where T : class、where T : new()。
约束多个参数
可以对多个参数应用多个约束,对一个参数应用多个约束,如下例所示:
class Base { } class Test<T, U> where U : struct where T : Base, new() { }
对类型参数使用 == 和 != 运算符
在应用 where T : class 约束时,请避免对类型参数使用 == 和 != 运算符。编译器只知道 T 在编译时是引用类型,并且必须使用对所有引用类型都有效的默认运算符。
如果必须测试值相等性,建议同时应用 where T : IEquatable 或 where T : IComparable 约束,并在用于构造泛型类的任何类中实现该接口。
参考文章
类型参数的约束(C# 编程指南)——Microsoft
以上就是详解C#泛型的类型参数约束的详细内容,更多关于C#泛型的类型参数约束的资料请关注易盾网络其它相关文章!

