C# 将列表中的值定义为重载和在重载之外定义它们之间有什么区别?

C# 将列表中的值定义为重载和在重载之外定义它们之间有什么区别?,c#,C#,我正在为C#做一个练习,我在列表中赋值的方式与解决方案代码不同。(我对编程比较陌生,如果我的术语不准确,我深表歉意。)这是我的代码: //Displays how many vowels are in the string the user inputed Console.Write("Enter a word: "); var input = Console.ReadLine().ToLower(); var vowels = new List<char>() { 'a', '

我正在为C#做一个练习,我在列表中赋值的方式与解决方案代码不同。(我对编程比较陌生,如果我的术语不准确,我深表歉意。)这是我的代码:

//Displays how many vowels are in the string the user inputed

Console.Write("Enter a word: ");
var input = Console.ReadLine().ToLower();

var vowels = new List<char>() { 'a', 'e', 'i', 'o', 'u'};
var vowelCount = 0;
foreach (var character in input)
{
    if (vowels.Contains(character))
    {
        vowelCount++;
    }
}

Console.WriteLine(vowelCount);

//Keep console open until user presses key
Console.ReadKey();
//显示用户输入的字符串中有多少元音
控制台。写(“输入一个单词:”);
var input=Console.ReadLine().ToLower();
var元音=新列表(){'a','e','i','o','u'};
var-vouelcount=0;
foreach(输入中的变量字符)
{
if(元音。包含(字符))
{
元音计数++;
}
}
控制台写入线(元音计数);
//保持控制台打开,直到用户按键
Console.ReadKey();
此代码与解决方案代码之间的唯一区别在于如何将字符分配给列表:

var vowels = new List<char>(new char[] {'a', 'e', 'o', 'u', 'i'});
var元音=新列表(新字符[]{'a','e','o','u','i'});

为什么您要使用
newchar[]{…}
作为重载,而不是像我使用的方法那样简单地分配字符?

简短回答:您不会。目前,只有当您“手中”有一个实际数组并希望将其转换为列表时,该重载才有用。您的初始化方法称为a,实际上它只是一系列
Add
调用的简写。这样代码更简洁,也避免了数组分配

简而言之:你不会的。目前,只有当您“手中”有一个实际数组并希望将其转换为列表时,该重载才有用。您的初始化方法称为a,实际上它只是一系列
Add
调用的简写。这样代码更简洁,也避免了数组分配

将数组(
newchar[]…
)传递给构造函数的习惯用法可以追溯到石炭纪的C。您使用的习惯用法称为“集合初始值设定项”,是该语言中最近添加的一种。现在人们更喜欢你的方法,但两种方法都可以。如果你的老师更喜欢旧的方法,那么在你的作业中用旧的方法,但是在你自己的代码中继续使用现代的习惯用法。我认为他的意思是构造函数重载。你将数组(
new char[]…
)传递给构造函数的习惯用法可以追溯到石炭纪的C。您使用的习惯用法称为“集合初始值设定项”,是该语言中最近添加的一种。现在人们更喜欢你的方法,但两种方法都可以。如果你的老师更喜欢老方法,那么在作业中就用老方法,但在你自己的代码中继续使用现代习惯用法。我认为他的意思是构造函数过载