C# 将字符串数组或6个字符串传递给构造函数是否更有效?

C# 将字符串数组或6个字符串传递给构造函数是否更有效?,c#,.net,C#,.net,我将字符串数组传递给我的对象的构造函数,因为它们是相关的,但是我不需要以任何方式(排序或任何其他数组操作)操作集合,我只是将数组中的字符串分割成接收类中的不同变量。我发现传递数组比传递6个字符串更方便。这会导致任何性能问题吗 性能真的是个问题吗?你应该从一个角度来阅读 更重要的是设计。您希望避免使用参数过多的方法,因此,如果您的值确实是类型相似、独立的值的集合,则需要传递数组;如果这些值在逻辑上以某种“形式”归属在一起,则需要创建一个具有属性的类(我在这里试图避免使用“类”一词,但这实际上是对它

我将字符串数组传递给我的对象的构造函数,因为它们是相关的,但是我不需要以任何方式(排序或任何其他数组操作)操作集合,我只是将数组中的字符串分割成接收类中的不同变量。我发现传递数组比传递6个字符串更方便。这会导致任何性能问题吗

性能真的是个问题吗?你应该从一个角度来阅读


更重要的是设计。您希望避免使用参数过多的方法,因此,如果您的值确实是类型相似、独立的值的集合,则需要传递数组;如果这些值在逻辑上以某种“形式”归属在一起,则需要创建一个具有属性的类(我在这里试图避免使用“类”一词,但这实际上是对它的最好描述).

对于仅包含六个对象的数组,不需要担心性能问题

代码可读性和可维护性应该是您主要关心的问题:具有六个明确命名参数的构造函数比采用字符串数组的构造函数更具可读性

考虑以下两个例子:

Employee1(string first, string last, string position) {
    ...
}

Employee2(string[] args) {
    ...
}
Employee1
的调用者将得到一个IDE提示,解释每个参数的用途,而
Employee2
的调用者需要知道哪个参数在数组中的哪个位置

将命名参数传递给构造函数的替代方法仅适用于
Employee1
的用户:

var manager = new Employee1(position:"manager", first:"Vincent", last:"Nwonah");
此外,
Employee2
的实现需要担心调用者传递少于三个元素的数组或多于三个元素的数组


简而言之,
Employee1
提供了一个更具可读性和可维护性的替代方案。

在不知道调用该方法的频率等情况下,很难知道它是否会导致性能问题。对我来说,这是一种微观优化的味道。做最明显正确的事情(即不要违反最不令人惊讶的原则)。当你在几年后回到代码,它仍然有意义吗?特别是,在需要固定数量的参数时传递数组,这样就可以编写类似
var something=someArray[0]这样的代码
会让你自己暴露在错误面前。@spender我认为你的评论应该是一个答案。我明白你的意思,但在我现在的情况下,我认为传递数组更具可读性,因为我传递的值永远不会改变。我对一个用户进行身份验证,并将该用户的详细信息从数据库读取到“userDetailsArray”中。用户在整个会话中使用的每一个其他类都需要知道他的特权、用户名、年份等。我已经注意做了一个很好的注释,在这里我将详细信息写入了数组中,关于哪些详细信息进入了哪个数组索引。如果没有性能问题,我认为在这种特殊情况下传递数组更具可读性。感谢链接,我发现它非常有用。