【问题标题】:System.Collections.ArrayList [closed]System.Collections.ArrayList [关闭]
【发布时间】:2013-03-22 21:45:14
【问题描述】:

这里是新手

我这里有这行代码

lblDepart.Text = t.DepartureCities;

然后它返回

System.Collections.ArrayList

我猜这是一个 ArrayList....如何正确显示它?

【问题讨论】:

  • 你能解释一下你所说的显示是什么意思吗?网络?安慰? WinForm?
  • 我有一个标签 `lblDepart = "We are leave from" + t.DepartureCities;出发城市是 LA、Boston、Toronto...试图在标签中显示“我们将从 LA、Boston、Toronto 出发。
  • 另外,仅供参考,ArrayList 已过时。它不应该在新代码中使用。
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。

标签: c# arrays arraylist


【解决方案1】:
lblDepart.Text = String.Join(",", t.DepartureCities.OfType<YourType>());

相应地更改YourType。也许City

【讨论】:

  • 我收到了这个The type or namespace name 'YourType' could not be found (are you missing a using directive or an assembly reference?) 的错误
  • @user979331 你应该用正确的类型替换YourTypet.DepartureCities 中有什么内容?
  • 我不确定...我尝试了 City 和 ListItem 并收到此错误System.Collections.ArrayList' does not contain a definition for 'OfType'
  • @user979331 别忘了using System.Linq;
【解决方案2】:

如果你打电话

lblDepart.Text = t.DepartureCities;

然后 this 隐式调用

lblDepart.Text = t.DepartureCities.ToString();

这些内置类型的ToString()-方法通常返回对象的名称。 该对象是一个Collection-object,包含几个单独的对象。 如果要访问单个项目,请使用

foreach(var item in t.DepartureCities){
//use item in here
}

【讨论】:

    【解决方案3】:

    ArrayList 是元素的集合。为了向用户显示此值,您必须将所有元素组合成一个 string 值。有不同的方法可以做到这一点,但最简单的就是使用逗号

    ArrayList list = t.DepartureCities;
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < list.Count; i++) {
    
      if (builder.Length > 0) {
        builder.Append(", ");
      }
      object current = list[i];
      builder.Append(current);
    }
    lblDeparture.Text = builder.ToString();
    

    请注意,ArrayList 在 .Net 中通常被认为是过时的类型。如果您控制DepartureCities,则应该改用List&lt;T&gt;

    原因是强类型。对于ArrayList,我不知道您在集合中存储的是什么类型的元素:stringCity 等...对于List&lt;T&gt;,这很明显,因为它会直接说明它包含的元素:@ 987654331@、List&lt;City&gt;等...

    【讨论】:

    • 告诉用户 List 对于框架 >= 2.0 是首选的奖励积分
    • 我收到了这个错误The type or namespace name 'StringBuilder' could not be found (are you missing a using directive or an assembly reference?)
    • @user979331 确保将using System.Text 添加到文件顶部。
    猜你喜欢
    • 2021-12-03
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多