c#将字符串放入数组中

时间:2013-12-10 20:18:46

标签: c# arrays string

这可能非常简单,但我如何将字符串放置或转换为数组呢?

我拥有的代码如下:

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:无法将类型'string'隐式转换为'string []'

谢谢你的帮助!

4 个答案:

答案 0 :(得分: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));

将生成以逗号分隔的数组中的所有元素

答案 1 :(得分:2)

看起来您正在尝试使用初始化语法进行分配。这应该有效:

two = new string[] {one};

或只是

two = new [] {one};

因为编译器会推断您需要string[]

我认为你会对Response.Write(two);产生的内容感到惊讶......

答案 2 :(得分: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]

答案 3 :(得分: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 };