首页 > 后端开发 > C++ > 为什么 C# 中不允许泛型类型作为属性基类型?

为什么 C# 中不允许泛型类型作为属性基类型?

Mary-Kate Olsen
发布: 2025-01-18 22:57:10
原创
882 人浏览过

Why Are Generic Types Not Allowed as Attribute Base Types in C#?

为什么 C# 限制泛型类型作为属性基

C# 不允许泛型类型作为属性基类型。 尝试这样做,如下所示,会导致编译时错误:

<code class="language-csharp">public sealed class ValidatesAttribute<T> : Attribute
{

}

[Validates<string>]
public static class StringValidation
{

}</code>
登录后复制

尽管 C# 拥有广泛的泛型支持,但这一限制仍然让许多人感到困惑。

原因仍然难以捉摸

CLI 规范没有明确禁止通用属性。 然而,直接 IL 检查表明他们的创造可能的。 这指出了源自 C# 语言本身的限制。

尽管记录了其他属性限制,但 C# 3 规范(第 10.1.4 节)和 ECMA C# 2 规范都没有对此禁令提供明确的解释。

务实的方法

C# 社区的领军人物 Eric Lippert 建议该限制简化了语言及其编译器。 与它们可能引入的潜在复杂性相比,允许通用属性所带来的好处被认为是微不足道的。

以上是为什么 C# 中不允许泛型类型作为属性基类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板