这可能非常简单,但我如何将字符串放置或转换为数组呢?
我拥有的代码如下:
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 []'
谢谢你的帮助!
答案 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 };