小编mve*_*ith的帖子

检查方法参数的最佳方法是什么?

我知道有两种方法可以检查方法的参数,并在需要时抛出异常.

1)检查每个参数并在错误时抛出异常:

public void Method(object parameter1, object parameter2)
{
    if (parameter1 == null)
    {
        throw new ArgumentNullException("parameter1");
    }

    if (parameter2 == null)
    {
        throw new ArgumentNullException("parameter2");
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

2)立即检查所有参数并为所有参数抛出相同的异常:

public void Method(object parameter1, object parameter2)
{
    if (parameter1 == null || parameter2 == null)
    {
        throw new ArgumentNullException();
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来,第一种方法更好,更清洁,但也涵盖了很多方面.例如,实际执行2行代码的方法 - 以这种方式代码将为每个参数增加4行(包括空行).

我感兴趣的是有经验的程序员使用的方法.有没有比这两个更好的方法?

c# validation parameters

9
推荐指数
2
解决办法
2万
查看次数

在方法的参数中使用IEnumerable <T>类型

以前我用过IEnumerable<T>type,如果我把collection作为方法的参数传递.

但最近,我遇到了IEnumerable<T>以类似方式创建的类型集合的问题:

var peoples = names.Select(name => new People(name));
Run Code Online (Sandbox Code Playgroud)

在这种情况下,总是,如果我使用集合人(例如,foreach),它会创建类People的新实例,并且很容易导致错误.

所以我想问一下使用IEnumerable <T>type参数是否正确.我认为这可能会导致问题(参见上面的示例),不应使用此类型.你推荐什么替代(ICollection<T>,IList<T>等),以及何时使用哪一种选择?

或者你认为这是一个愚蠢的问题,因为在Select方法中创建对象只使用傻瓜?

当然,我知道我可以使用ToArray()ToList()从而解决问题.但是使用这种方法的其他人,却无法知道.我想知道如何通过选择正确的类型参数来防止这种情况.当我想要"枚举"对象时,列表或数组对我来说太具体了.

c# collections parameters ienumerable

4
推荐指数
1
解决办法
4380
查看次数

标签 统计

c# ×2

parameters ×2

collections ×1

ienumerable ×1

validation ×1