2015-02-12 145 views
0

這是一個非常基本的問題,但無論出於何種原因,我無法弄清楚這一點。 該計劃返回Foreach循環檢查特定字符C#

錯誤1類型和標識在foreach語句

int i = 0; 
char g = '.'; 
char s1 = '!'; 
char s2 = '?'; 

foreach(g in textBox1.Text) 
{ 
    i++; 
} 

我知道我反覆變,我試圖讓克至被定義爲東西都需要例子來解釋我會把代碼日常用語下面

foreach(Period in textBox1.Text) 
{ 
    i++; 
} 

//答案有3句在文本框1

+0

您需要爲您正在迭代的變量輸入一個類型。 foreach(textBox1.Text中的var c) { i ++; } – dbugger 2015-02-12 02:10:40

+0

「類型和標識符都是必需的」< - 答案就在那裏..''g'是一個標識符,但是你沒有給它一個類型。 – Blorgbeard 2015-02-12 02:14:33

+1

如果你只是檢查'String'是否包含一個字符,你應該使用'Contains()'擴展方法或'IndexOf'方法而不是for循環。見http://stackoverflow.com/questions/8879774/how-can-i-check-if-a-string-contains-a-character-in-c – 2015-02-12 02:30:37

回答

2
foreach(g in textBox1.Text) 

您需要定義的類型爲g

foreach(char g in textBox1.Text) 

,你也錯誤地使用變量g兩次,在foreach必須有類型,因此包括G的意志之一必須更改它的名稱

+0

好點 - 編輯。 thx – 2015-02-12 02:26:47

+0

這也適用於'foreach(動態g在ListOfUnkownTypes){DoBlahWith(g);}' – THBBFT 2015-02-12 02:36:25

+1

@THBBFT請不要這樣做。你有美麗的'var'。 – SimpleVar 2015-02-12 02:56:54

0

foreach循環的語法表示您必須在foreach循環中聲明變量類型。看看MSDN implementation。你有兩個選擇:

答:

foreach(var c in textBox1.Text) 
{ 
    // Boop. 
} 

B:

foreach(char c in textBox1.Text) 
{ 
    // Boop. 
} 

還回答hereherehere

最後一件事,這裏是初始化字符的更好的辦法:

char c = '\0'; 

這是在ASCII table空。