gpt4 book ai didi

c# - 为什么属性目标 'typevar' 未记录?

转载 作者:IT王子 更新时间:2023-10-29 04:44:53 26 4
gpt4 key购买 nike

众所周知,在 C# 中,可以指定自定义属性规范的目标,如示例中所示

[method: SomeDecoration]
[return: SomeOtherMark]
int MyMethod();

“目标”method:return: 帮助指定属性属于代码中的哪个元素。

根据 C# 语言规范,存在以下属性目标:

  • 全局的:
    • 程序集
    • 模块
  • 其他:
    • 字段
    • 事件
    • 方法
    • 参数
    • 属性
    • 返回
    • 类型

它们中的一些,例如 field总是是多余的,因为无需指定它们,属性“位于”什么总是很清楚。

但是确实存在(至少在我这里的 Visual C# 的实现和版本中)一个额外的属性目标,即:

  • typevar

例如在代码中是允许的

class MyGenericCollection<[typevar: HereYouSee] TItem>    // legal
{
}

属性目标 typevar,就像 field 和其他,永远不是必需的。

我的问题: 有谁知道规范或文档中未提及 typevar: 的历史原因?在编写 C# 语言规范的 2.0 版时,这只是被遗忘了吗?或者,如果这不是疏忽,为什么要实现它?

最佳答案

实际上,typevar 属性 target 已记录在案,但似乎仅在标准化的 C# 2.0 语言规范中: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf#page=399

既不是 C# 3.0 , 也不 5.0语言规范提到 typevar。 (我没有找到 C# 4.0 规范。)

所以回答你的第二个问题,不,它在 C# 2.0 中没有被遗忘,但从那时起就被遗忘了 :) 我认为这一定是一个疏忽,因为 typevar 属性目标仍然是(C# 5.0) 有效。

关于c# - 为什么属性目标 'typevar' 未记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com