2013-12-10 145 views
0

這可能非常容易,但是如何將字符串放入或轉換爲數組?c#將字符串放入數組

是我的代碼,如下:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string one; 
     string[] two; 

     one = "Juan"; 
     two = {one}; // here is the error 

     HttpContext.Current.Response.Write(two); 
    } 
} 

和錯誤是: 編譯器錯誤信息:CS0029:無法隱式轉換類型「字符串」到「字符串[]」

感謝您的幫助!

回答

5

替換此:

two = {one}; // here is the error 

隨着

two = new[] { one }; 

OR

two = new string[] { one }; 

你所得到的錯誤的原因是從錯誤信息清晰。

請參見:Object and Collection Initializers (C# Programming Guide)

當你正在做Response.Write以後,你會得到System.String[]作爲輸出,因爲two是一個數組。我想你需要所有由分隔符分隔的數組元素。你可以試試:

HttpContext.Current.Response.Write(string.Join(",", two)); 

將生產用逗號

+0

該系統顯示如下:在'型expected'同一條線。感謝您的快速回答。 –

+0

@JulianMoreno,嘗試'two = new string [] {one};' – Habib

+2

+1公平玩D Stanley – Micha

2

它看起來像你正在嘗試使用初始化語法的分配分開陣列中的所有元素。這應該工作:

two = new string[] {one}; 

或只是

two = new [] {one}; 

,因爲編譯器將推斷出你想要一個string[]

我想你也會驚訝什麼Response.Write(two);產生...

+0

+1,不確定爲什麼它被低估 – Habib

0

您正在使用靜態初始化程序語法嘗試將項添加到您的數組。這是行不通的。您可以使用類似的語法來分配一個值爲one - two = new string[] { one };的新數組 - 或者您可以分配數組,然後通過賦值來添加元素,例如;

string[] two = new string[10]; 
    two[0] = one; // assign value one to index 0 

如果你不喜歡這樣,你必須做一些邊界檢查例如下面將拋出一個IndexOutOfRangeException在運行時;

string[] two = new string[10]; 
    int x = 12; 
    two[x] = one; // index out of range, must ensure x < two.Length before trying to assign to two[x] 
0

即如果聲明在同一行數組變量語法({one})纔有效。所以,這個作品:

string one; 

one = "Juan"; 
string[] two = {one}; 

初始化一個數組,它在更多的地方工作的更常見的方式,是使用new關鍵字,並且任選地具有的類型來推斷,例如

string one; 
string[] two; 

one = "Juan"; 
// type is inferrable, since the compiler knows one is a string 
two = new[] {one}; 
// or, explicitly specify the type 
two = new string[] {one}; 

我通常聲明和初始化在同一行,並使用var來推斷類型,所以我可能會寫:

var one = "Juan"; 
var two = new[] { one }; 
相關問題