例如,如果我有一个定义为...的方法
T Create()
{
T t = Factory.Create<T>();
// ...
Assert.IsNotNull(t, "Some message.");
// -or-
if (t == null) throw new Exception("...");
// -or- anything that verifies that it is not null
}
...我正在从其他地方调用该方法...
void SomewhereElse()
{
T t = Create();
// >><<
}
...在>><<
,我知道(意思是我,写这篇文章的人)t
保证不为空。有没有一种方法(可能是我尚未找到的属性)将方法标记为确保它返回或以其他方式传递出去的引用类型(可能是 out
参数)由内部逻辑保证不为空?
我不得不羞怯地承认 ReSharper 是我关心的主要原因,因为它突出显示了它认为可能导致 InvalidOperationException
的任何内容。或 NullReferenceException
.我想要么它正在阅读我可以在我的方法上标记的东西,要么它只知道 Assert.IsNotNull
,简单的 bool 检查或其他一些东西将消除某些东西为 null 的可能性,并且它可以消除高亮。
有什么想法吗?我只是成为我的天哪-resharper-highlights-it-I-have-to-fix-it 疾病的受害者吗?
最佳答案
如果 ReSharper 是您关心的原因,那么您可以标记 Factory.Create<T>()
用他们的方法 [NotNull]
在他们的 web help 中描述的属性
关于c# - 有没有办法将方法标记为确保 T 不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5317191/