首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要求的最小值为一个值的C#参数

要求的最小值为一个值的C#参数
EN

Stack Overflow用户
提问于 2013-03-27 10:43:45
回答 2查看 3.8K关注 0票数 12

是否有一种更优雅的方法来确保构造函数总是以至少一个值调用,而不是我在这里得到的值?我已经这样做了,因为我希望编译器错误,如果没有提供的值。

代码语言:javascript
复制
public class MyClass
{
    private readonly List<string> _things = new List<string>();
    public string[] Things { get { return _things.ToArray(); } }

    public MyClass(string thing, params string[] things)
    {
        _things.Add(thing);
        _things.AddRange(things);
    }
}

编辑

根据评论,我把代码改成了.

代码语言:javascript
复制
public class Hypermedia : Attribute
{
    private readonly Rel[] _relations;
    public IEnumerable<Rel> Relations { get { return _relations; } }

    public Hypermedia(Rel relation, params Rel[] relations)
    {
        var list = new List<Rel> {relation};
        list.AddRange(relations);
        _relations = list.ToArray();
    }
}

很抱歉之前为了隐藏我想要做的事情而编辑了代码。直接从我的代码编辑器中粘贴就更容易了!

EN

回答 2

Stack Overflow用户

发布于 2013-03-27 10:53:29

Code Contracts

代码语言:javascript
复制
public MyClass(params string[] things)
{
    Contract.Requires(things != null && things.Any());
    _things.AddRange(things);
}

代码契约包括标记代码的类、用于编译时分析的静态分析器和运行时分析器。

至少你会从静态分析器那里得到警告。您可以在发布模式下关闭运行时分析,以避免性能受到影响。

票数 15
EN

Stack Overflow用户

发布于 2013-03-27 10:48:09

我相信您正在寻找RequiredAttribute (可从.NET 3.5开始使用)。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.requiredattribute.aspx

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15656925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档