" ;预期"设置数组值时出错

时间:2015-05-18 14:06:39

标签: c# arrays

string[] aryProp = { "Name", button.Name };
//ListViewItem lvi = new ListViewItem(aryProp);
aryProp={ "Width" , button.Width.ToString() };

" ;预期" (第3行) 为什么我会收到此错误?

编辑: @ jon,@ David,@ Grant:感谢您的帮助,但为什么我要使用不同的语法?这不合逻辑吗?

2 个答案:

答案 0 :(得分:5)

  

为什么我收到此错误?

因为虽然您的语法对于变量声明中的初始化有效,但 对于普通赋值有效。您可以使用:

aryProp = new[] { "Width" , button.Width.ToString() };

或者:

aryProp = new string[] { "Width" , button.Width.ToString() };

在规范术语中,{ ... } array-initializer ,而new string[] { ... } array-creation-expression (其中包含 array-initializer ,当然)。 array-initializer 不是可以用作值的单独表达式;它只能用于 array-creation-expression local-variable-initializer variable-initializer

在非规范术语中:是的,它看起来有些不一致,但我怀疑在任何地方都会有aryProp = { ... }的重大问题,但允许它进行声明很好......

答案 1 :(得分:3)

您正在使用一维数组,在您的情况下我怀疑您应该使用二维或字典:

  var aryProp = new Dictionary<string, string>();
  aryProp.Add("Name", button.Name);
  aryProp.Add("Width", button.Width.ToString());

  foreach (var element in aryProp)
  {
    Console.WriteLine(element.Key + " " + element.Value);
  }