首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是结构和ValueType等价的

是结构和ValueType等价的
EN

Stack Overflow用户
提问于 2020-08-06 08:58:46
回答 1查看 109关注 0票数 0

在定义泛型类型约束时,这两个等价项是:

代码语言:javascript
运行
复制
public void Method<T>(T parameter) where T : struct { }

代码语言:javascript
运行
复制
public void Method<T>(T parameter) where T : ValueType { }

博士,我强烈怀疑它们是一样的:

尽管ValueType是值类型的隐式基类,但不能创建直接从ValueType继承的类。相反,单个编译器提供语言关键字或构造(例如C#中的struct和结构…)。( Visual Basic中的End结构)以支持值类型的创建。

但我想确保。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 09:02:09

它们不一样,因为第二个不编译

错误CS0702:约束不能是特殊类“ValueType”

然而,是的:T : struct的意思是"T是一个值类型“。微妙的区别在于,在理论上,Method<ValueType>()本身会满足T : ValueType,而ValueTypeclass,而不是struct

此外,T : struct不允许您使用可空的T?,即Method<int?>是不合法的,尽管int? (又名Nullable<int>)是一种值类型。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63280159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档