SA1125: UseShorthandForNullableTypes имеет это описание (взятое из StyleCop 4.7 Настройки приложения редактора):SA1125: зачем применять «int?»? в отличие от «Nullable <int>», но не внутри «typeof()»?
навязывает использование стенографии из обнуляемого типа, а не
Nullable<T>
за исключением внутриtypeof()
.
Есть ли причина, по которой у него есть исключение для заявления typeof()
? typeof(int?)
компилируется так же хорошо - это просто предпочтение авторов StyleCop или есть более глубокие рассуждения?
Редактировать: поскольку официальная документация не упоминает это исключение, я тестировал следующий код:
var x = new Nullable<int>();
var y = new int?();
var z = typeof(Nullable<int>);
var v = typeof(int?);
Результат: только первая линия поднимает предупреждение SA1125.
Edit 2: The work item for StyleCop asking to fix this behavior
Где найти описание вы цитируете? Конечно, не в ссылке, которую вы предоставили, а также не в [официальной документации] (http://www.stylecop.com/docs/SA1125.html) –
Я бы предположил ошибку или пропущенное требование. ReSharper предлагает мне переписать 'Nullable' как 'int?' Даже в 'typeof()'. –
Я нашел описание в инструменте редактора настроек StyleCop. Теперь вопрос в том, является ли он точным ... –