2012-11-28 98 views
0
foreach (string di_child in dirs) { 
Response.Write("\t<li class=\"directory collapsed\"><a href=\"#\" rel=\"" + drive + di_child.Name + "/\">" + di_child.Name + "</a>\n"); 
} 

VS抱怨操作符'+'不能應用於'string'和方法組類型的操作數。字符串連接不起作用

我只想連接這些字符串。我怎樣才能做到這一點? 在此先感謝

+1

什麼是驅動器,聽起來像是一種可能需要使用drive()的方法? –

+0

什麼是'驅動器'? – Habib

+2

因爲我們不知道涉及的類型......'drive','dirs','di_child.Name',所以無法分辨這裏發生了什麼。 – spender

回答

1

一個問題:

你迭代的字符串值和連接string.Name。我不認爲有任何屬性「名稱」附加到一個字符串。

+0

這是我的問題。謝謝 –

+0

大聲笑。你怎麼沒有看到沒有字符串類型的任何Name屬性的intellisense。 :) –

+1

歡迎!幾分鐘後,當我看到很多人回答不同的事情時,我也感到困惑。 --codespread.com – CodeSpread

0

你可以簡單的使用StringBuilder.Append(),這樣的事情: -

StringBuilder sb = new StringBuilder(); 
    sb.Append(someString); 

或試試這個:

"\t<li class=\"directory collapsed\"><a href=\"#\" rel=\"" + drive() + di_child.Name + "/\">" + di_child.Name + "</a>\n" 
+0

儘管它比+運算符更好,但我不會在這裏使用StringBuilder。在這樣一個簡單的例子中,我更喜歡'String.Format()'方法來實現目標。 –

+0

@ Nick.T: - 這是正確的。我剛剛推薦了一種方法,因爲我認爲如果使用大字符串,OP可能會使用這種方法!否則String.format絕對是另一種方法! –

0

我懷疑drive實際上是一個功能,在這種情況下你應該這樣稱呼它:

"\t<li class=\"directory collapsed\"><a href=\"#\" rel=\"" + drive() + di_child.Name + "/\">" + di_child.Name + "</a>\n" 
+0

你怎麼知道驅動器的功能是不可變的。 –

+2

可能是因爲他讀了問題中的錯誤,並沒有像6個其他人那樣編寫一個標準字符串concat答案 – wdavo

+0

drive是一個DriveInfo局部變量。當我的foreach函數是foreach時,它連接到di_child(System.IO.DirectoryInfo di_child在dirs中) –

0

試試這個:

foreach (string di_child in dirs) { 
    Response.Write(String.Format("\t<li class=\"directory collapsed\"><a href=\"#\" rel=\"{0}{1}/\">{2}</a>\n",drive,di_child.Name,di_child.Name)); 
} 
0

出現錯誤消息是因爲drivedi_child.Name是一種方法而不是字符串。

在您的foreach循環中,聲明di_childstringName不是string的有效屬性。

您能否確認驅動器的類型?如果它是一個函數,你可能需要使用它作爲drive()

問題實際上可能因爲編譯器使用的擴展方法的名字,你只需要使用di_child代替di_child.Name

0

您在您的意見,推動一個說的是一個DriveInfo局部變量

給出那個di_chld是一個字符串變量,並且給定的DriveInfo類有一個Name屬性,我猜你正在調用.Name的錯誤的東西,所以我猜你應該有這個:

Response.Write("\t<li class=\"directory collapsed\"><a href=\"#\" rel=\"" + drive.Name + di_child + "/\">" + di_child + "</a>\n"); 

正如有些人所說,通常使用String.Format或StringBuilder進行字符串連接更好