【问题标题】:c# add new item to existing string[,] Array [duplicate]c#将新项目添加到现有字符串[,]数组[重复]
【发布时间】:2017-05-19 06:49:53
【问题描述】:

我正在尝试使用多维字符串数组。 我可以轻松创建它:

string[,] array = new string[,]
{
 {"AA", "AB"},
 {"AC", "AD"},
};

这里没有问题。

这个想法是在之后添加更多项目。 假设我的数组可以扩展到许多“行”,但只有两个“列”。

我试过这样做:

array[0,0] = "AE";
array[0,1] = "AF";

但这似乎不起作用。为什么?

还有什么方法可以添加(连接/加入?)例如一口气:

new string[,] { {"AE", "AF"} }

array[i,???] = {"AE", "AF"}

其中 i 可以是可变的(例如到最后一个位置),并且不必定义列(基于数组中定义的 2 列)

这可以将新项目添加到现有数组中(在第 3 位)?

字符串[,] 是手动设置项目的非常好的解决方案,但如果您有需要添加到数组的外部数据,我在任何其他帖子中都找不到任何示例。

有人可以帮忙吗? 谢谢。

问候,

【问题讨论】:

  • 数组是固定大小的。您想使用不固定大小的数据结构(例如List<T>
  • 为什么不使用 List 并向数组中添加新项目?例如array = new List<string>(array) { "AE", "AF" }.ToArray();
  • 假设我的数组可以扩展到许多“行”但只有两个“列”。你为什么要这样假设?
  • 目前我遇到了一些问题。我已经开始使用 { { } } 结构,并且很容易(手动)添加项目。更改为列表会给我带来一个潜在的问题,必须返回并将其更改为列表。使用 List 意味着我必须使用 List.Add 到每个项目,这使得编写(和阅读)变得更加困难。
  • 我希望我的数组有我需要的尽可能多的行,但保持相同数量的列(就像我的示例一样只有 2 个)

标签: c# multidimensional-array


【解决方案1】:

您需要一个可以增长(和缩小)的数据结构

尝试:-

var array = new List<string[]> {new[] {"AE", "AF"}, new []{"A", "B"}};

然后

array.Add(new []{"XY", "AB"});

你可以像这样访问它:-

Console.WriteLine(array[0][0]);
array[0][0] = "BB";
Console.WriteLine(array[0][0]);

如果你喜欢数组初始化语法,你可以先这样做,然后将其转换为一个列表,如:-

var initial = new[,] {{"H", "I"}, {"R", "V"}};

var array = Enumerable.Range(0, initial.GetUpperBound(0) + 1)
    .Select(n => new[] {initial[n, 0], initial[n, 1]}).ToList();

【讨论】:

  • 以图形方式使用 { {"A", "B"}, {"C","D"} } 代替 array.Add(new []{"A", "B"} + array.Add(new[]{"C", "D"} + ...想象30行或更多。第一个选项总是更好重点。但是因为我需要扩展此选项并现在使用它超出手动设置的项目数(数组长度),所以我找不到前进的方法(由于我的知识限制)。这甚至可能吗?
  • 如果你看我的代码,你不必逐个添加,但你必须有 new[]。
  • 已更新以向您展示如何使用数组来播种列表
  • 如果我能理解正确,您的建议是无论如何都使用 List (这意味着我可能不得不将我的方法从 string[,] 更改为 List),但允许我仍然手动使用我的数组(需要时)并允许我将其转换为最后的列表?
  • 我可以使用一些技巧来说明如何使用数组选择单个字符串(我认为 .Select(n => new[] {initial[n, 0], initial[n, 1] }).ToList();) 和多少行(从 0 到最后一行?Enumerable.Range(0, initial.GetUpperBound(0) + 1) ?为什么“GetUpperBound(0) + 1”上的 + 1?
猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 2016-01-22
  • 2012-12-15
  • 2015-03-23
  • 1970-01-01
  • 2016-08-02
  • 2011-10-10
  • 2018-06-16
相关资源
最近更新 更多