无论如何避免将null传入方法。
类似的东西:
public static string Add([not null] string word1 , string word2)
{
return word1 + word2;
}
![enter image description here][1]
string sentence = Add(null, "world");
^^ compile error
答案 0 :(得分:3)
没有。编译器不是通灵的。在某些情况下,编译器根本无法提前判断将要传递的内容。
请考虑以下以及编译器可能如何保护您......
var rnd = new Random();
Foo(rnd.Next(2) == 0 ? "foo" : null);
答案 1 :(得分:1)
由于字符串是引用类型,因此无法在编译时检查它。 常见且有用的是检查运行时并抛出ArgumentNullException。一旦他以错误的方式使用它,该方法的用户将捕获异常。
例如:
public static string Add(string word1, string word2)
{
if (word1 == null) throw new ArgumentNullException("word1");
return word1 + word2;
}
答案 2 :(得分:0)
如果您希望与您的示例达到类似的语法,则可以使用PostSharp Code Contracts。免费版允许您为每个项目使用此类属性最多10个类,请查看示例PostSharp Code contracts examples。它不会给你编译器错误,但会简化代码。