" but not within "typeof()"?-6ren"> " but not within "typeof()"?-SA1125 : UseShorthandForNullableTypes 有这样的描述(取自 StyleCop 4.7 设置编辑器应用程序): Enforces the use of the sho-6ren">
gpt4 book ai didi

c# - SA1125 : why enforce "int?" as opposed to "Nullable" but not within "typeof()"?

转载 作者:太空狗 更新时间:2023-10-29 21:50:45 26 4
gpt4 key购买 nike

SA1125 : UseShorthandForNullableTypes 有这样的描述(取自 StyleCop 4.7 设置编辑器应用程序):

Enforces the use of the shorthand of a nullable type rather than the Nullable<T> except inside a typeof().

typeof() 有异常(exception)吗?陈述? typeof(int?)编译一样好 - 这只是 StyleCop 作者的偏好还是有更深层次的推理?

编辑:由于官方文档没有提到这个异常,我测试了如下代码:

var x = new Nullable<int>();
var y = new int?();
var z = typeof(Nullable<int>);
var v = typeof(int?);

结果:只有第一行引发SA1125警告。

编辑 2:The work item for StyleCop asking to fix this behavior

最佳答案

虽然我实际上并不知道原因(因为我不是这条规则的开发者),但我怀疑它是这样设计的,不会针对 typeof 的这种特定用法生成警告。 :

typeof(Nullable<>)

话虽这么说,如果这是真正的官方原因,他们可以对这个特定用法的异常进行硬编码,而不是为 typeof(Nullable<X>) 的所有用法编写异常。 .

请注意,所有这些都只是假设


编辑来自source code of Stylecop :

// Check the declaration of the generic type for longhand, but allow Nullable<> which has no shorthand

所以据我了解,基本上搜索普通泛型类型,并处理 Nullable<> 的特殊情况他们允许,因为没有可用的简写形式。据我所知,Nullable<>只有在 typeof() 的上下文中才有意义,所以我猜他们为这种情况做了异常(exception)。

关于c# - SA1125 : why enforce "int?" as opposed to "Nullable<int>" but not within "typeof()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146157/

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