2014-02-06 81 views
-3

我是linq新手,難以從linq轉換到c#。將linq轉換爲c#

private static char[] createCharArray(int length, char defaultChar) 
{ 
    return (from c in new char[length] select defaultChar).ToArray(); 
} 

請幫忙嗎?

+12

LINQ *是* C#,你想要做的究竟是什麼? –

+0

什麼是'defaultChar'是你的代碼中定義的'default(char)'或一些'defaultChar' – Habib

+0

我正在將一個使用linq的應用程序翻譯成Java。我無法理解這裏發生了什麼:/ – user3237553

回答

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

2

第一個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(); 
+1

第一個例子是這在java中看起來像什麼。 – danludwig

0
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喜歡做同樣的使用字符串構造

+0

這是使得'char []'比OP更糟糕的一種方式。誠然,這很容易翻譯成Java,但仍然... –

+0

哈哈是啊,你是對的,由於某種原因,當我看到新的字符[長度]時,我的「字符串」卡在我的頭上, –

1

試試這個s:

private static char[] createCharArray(int length, char defaultChar) 
{ 
    return new string(defaultChar, length).ToCharArray(); 
}