将null传递给方法时编译时错误

时间:2015-03-27 10:12:42

标签: c# methods

无论如何避免将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

3 个答案:

答案 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。它不会给你编译器错误,但会简化代码。