我是linq的新手,很难从linq转换为c#。
private static char[] createCharArray(int length, char defaultChar)
{
return (from c in new char[length] select defaultChar).ToArray();
}
有什么帮助吗?
答案 0 :(得分:2)
看起来您正在尝试创建给定长度的char[]
(数组)并使用指定字符预填充它。如果是这种情况,那么您已经拥有的代码是完全有效的C#,因此您无需进行任何更改。
就个人而言,我更愿意使用以下LINQ:
private static char[] createCharArray(int length, char defaultChar)
{
return Enumerable.Repeat(defaultChar, length).ToArray();
}
但是,如果您的问题是将LINQ语句转换为非LINQ版本,因为无论出于何种原因您无法使用LINQ,那么您可以使用简单的for
循环:
private static char[] createCharArray(int length, char defaultChar)
{
char[] result = new char[length];
for(int i = 0; i < length; i++)
{
result[i] = defaultChar;
}
return result;
}
注意:作为警告,C#中的函数名称通常按惯例以大写开头,即CreateCharArray
答案 1 :(得分:2)
首先LINQ是C#。你的代码正在做什么,
创建一个字符数组,所有元素都设置为默认字符。
因此,如果您指定了length = 10
,您将获得10
个元素的字符数组,所有数组元素都设置为defaultChar
。
与:
相同char defaultChar = 'A';
int length = 10;
char[] charArray = new char[length];
for (int i = 0; i < charArray.Length; i++)
{
charArray[i] = defaultChar;
}
或者可以这样做:
char[] charArray = Enumerable.Repeat<char>(defaultChar, length).ToArray();
你也可以使用ToCharArray
之类的字符串构造函数来执行相同操作:
char[] charArray = new string(defaultChar, length).ToCharArray();
答案 2 :(得分:1)
试试这个:
private static char[] createCharArray(int length, char defaultChar)
{
return new string(defaultChar, length).ToCharArray();
}
答案 3 :(得分:0)
private static char[] createCharArray(int length, char defaultChar)
{
string ret = "";
for (int i = 0; i < length; i++)
ret += defaultChar;
return ret.ToArray();
}