今天,当我想验证对象是否已使用注入(inject)的参数正确实例化时,我会执行以下操作:

public class SomeObject
{
    private object _someArgument;

    public SomeObject(object someArgument)
    {
        if (someArgument == null)
        {
            throw new ArgumentNullException("someArgument");
        }

        this._someArgument = someArgument;
    }
}

但是我在徘徊,如果我能在编译时发现此类问题,以避免运行时出错。

例如。
// Get a compilation error since null was passed
var someInstance = new SomeObject(null);

有可能吗?

最佳答案

您可以使用Code Contracts。它不会产生编译时错误。但是,它会对您的代码执行静态检查,并在检测到var someInstance = new SomeObject(null);之类的代码时发出警告

您可以像这样使用它:

public SomeObject(object someArgument)
{
    Contract.Requires(someArgument != null);

    this._someArgument = someArgument;
}

关于c# - 将null作为构造函数/方法参数传递时出现编译错误-C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33275346/

10-10 16:45