【问题标题】:Implicitly Typed Object Array and Variable隐式类型对象数组和变量
【发布时间】:2015-07-24 15:07:15
【问题描述】:

在我看来,我有一个隐式类型的对象数组和不同类型的变量(字符串、整数)。单击表单上的按钮时,我可以为每个数组项显示一条消息。但是,我希望能够将这些项目中的每一个添加到列表框中。我的代码的最新版本(在尝试了许多不同的事情后见下文)产生了错误 "Error 1 Use of unassigned local variable 'x'"

如何将这些不同类型的值分别添加到列表框中?

谢谢

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TheWriteLineMethodForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string x;
            Object[] values = { true, 12.632, 17908, "stringValue",
                                 'a', 16907.32m };
            foreach (var value in values)
                //Console.WriteLine(value);
                //    MessageBox.Show(value.ToString());
                x = value.ToString();
                listBox1.Items.Add(x);

        }
    }
}

【问题讨论】:

  • foreach 中使用块{ ... };缩进是不够的。仅在该块内声明x,可能使用var。不要在方法体的顶部声明x
  • 谢谢大家。括号……就是这样!

标签: c# arrays variables object typed


【解决方案1】:

您的代码中的一个主要故障,您忘记了括号

    foreach (var value in values)
        //Console.WriteLine(value);
        //    MessageBox.Show(value.ToString());
        x = value.ToString();
        listBox1.Items.Add(x);

所以你的代码相当于

string x;
foreach (var value in values) { x = value.ToString(); }
listBox1.Items.Add(x);

当您执行 listBox1.Items.Add(x) 时,它只添加最后一个值“16907.32m”

我应该说最简单的方法是使用

values.ToList().ForEach(x => listeBox1.Items.Add(x));

【讨论】:

  • 为什么要将整个数组复制到一个新的List<>?如果你真的喜欢ForEach 方法(很多人不喜欢),那么就说Array.ForEach(values, listBox1.Items.Add);。或者如果你需要添加字符串,那么Array.ForEach(values, x => listBox1.Items.Add(x.ToString()));。要考虑的另一件事是listBox1 可能有一个很自然的AddRange 方法。
猜你喜欢
  • 2011-10-06
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多