当传递null作为构造函数/方法参数时编译错误- c#

本文关键字:参数 编译 错误 方法 null 构造函数 | 更新日期: 2023-09-27 18:18:50

今天,当我想用注入的参数验证对象是否正确实例化时,我这样做:

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);

有可能吗?

当传递null作为构造函数/方法参数时编译错误- c#

你可以使用代码契约。它不会产生编译时错误。但是,它对代码执行静态检查,并在检测到var someInstance = new SomeObject(null);

等代码时给出警告。

你可以这样使用:

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