众所周知,在C#中,可以指定自定义属性规范的目标,如示例中所示
[method: SomeDecoration]
[return: SomeOtherMark]
int MyMethod();
Run Code Online (Sandbox Code Playgroud)
其中"targets" method:并return:帮助指定属性所属的代码中的哪个元素.
根据C#语言规范,存在以下属性目标:
assemblymodulefieldeventmethodparampropertyreturntype其中一些,如同field,总是多余的,因为它总是很清楚属性"坐在"而没有指定它们.
但是确实存在(至少在Visual C#的实现和版本中我在这里)一个额外的属性目标,即:
typevar例如在代码中允许的
class MyGenericCollection<[typevar: HereYouSee] TItem> // legal
{
}
Run Code Online (Sandbox Code Playgroud)
属性目标typevar,就像field其他人一样,永远不需要.
我的问题:有没有人知道typevar:规范或文档中没有提到的历史原因?当编写2.0版本的C#语言规范时,这个被遗忘了吗?或者,如果不是疏忽,为什么要实施呢?
实际上,typevar属性目标已被记录,但似乎仅在标准化的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)有效.
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |