在Microsoft的文档中,我注意到以下示例:
[get: System.Security.SecurityCritical]
public virtual System.Windows.Media.Imaging.BitmapSource Thumbnail { get; }
Run Code Online (Sandbox Code Playgroud)
注意,目标“ get:”已应用于属性。
但是,在他们的C#文档 中没有这样的目标。他们只列出:
assembly, module, field, event, method, param, property, return, type
我在这两个页面上都没有看到任何特定于版本的内容。
此外,C#语言规范也不包含get:任何一个(第395页)。
我还是在VS 2015的示例中尝试使用它,并且IDE报告了错误:
“ get”不是公认的属性位置。此声明的有效属性位置为“属性”。此块中的所有属性将被忽略。
是get:在某些情况下有效?他们的文档有误吗?
仅供参考,很难甚至不可能在SO上搜索字符串“ get:”。我希望已经找到了答案,但这很难做到。
正如@nineberry 所指出的,问题中显示的文档中的示例与 .NET Framework 的实际代码不同。问题有:
[get: System.Security.SecurityCritical]
public virtual System.Windows.Media.Imaging.BitmapSource Thumbnail { get; }
Run Code Online (Sandbox Code Playgroud)
但实际的代码是:
public virtual BitmapSource Thumbnail
{
[SecurityCritical ]
get
{
...
Run Code Online (Sandbox Code Playgroud)
还有人认为这可能是文档自动生成方式中的一个缺陷。我不知道这些文档是如何维护的,但它们已经被修改了。
截至今天,文档显示的是:
public virtual System.Windows.Media.Imaging.BitmapSource Thumbnail
{ [System.Security.SecurityCritical] get; }
Run Code Online (Sandbox Code Playgroud)
这与代码一致并且不使用临时get:目标。
这似乎非常令人信服,没有(也从来没有)这样的目标。