我是linq新手,難以從linq轉換到c#。將linq轉換爲c#
private static char[] createCharArray(int length, char defaultChar)
{
return (from c in new char[length] select defaultChar).ToArray();
}
請幫忙嗎?
我是linq新手,難以從linq轉換到c#。將linq轉換爲c#
private static char[] createCharArray(int length, char defaultChar)
{
return (from c in new char[length] select defaultChar).ToArray();
}
請幫忙嗎?
看起來你正在嘗試創建一個給定長度的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
第一個LINQ是C#。你的代碼正在做什麼,
它正在創建一個字符數組,其中所有元素都設置爲默認字符。
因此,如果您指定了length = 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 = new string(defaultChar, length).ToCharArray();
第一個例子是這在java中看起來像什麼。 – danludwig
private static char[] createCharArray(int length, char defaultChar)
{
string ret = "";
for (int i = 0; i < length; i++)
ret += defaultChar;
return ret.ToArray();
}
:
char[] charArray = Enumerable.Repeat<char>(defaultChar, length).ToArray();
您還可以ToCharArray
喜歡做同樣的使用字符串構造
這是使得'char []'比OP更糟糕的一種方式。誠然,這很容易翻譯成Java,但仍然... –
哈哈是啊,你是對的,由於某種原因,當我看到新的字符[長度]時,我的「字符串」卡在我的頭上, –
試試這個s:
private static char[] createCharArray(int length, char defaultChar)
{
return new string(defaultChar, length).ToCharArray();
}
LINQ *是* C#,你想要做的究竟是什麼? –
什麼是'defaultChar'是你的代碼中定義的'default(char)'或一些'defaultChar' – Habib
我正在將一個使用linq的應用程序翻譯成Java。我無法理解這裏發生了什麼:/ – user3237553