从其他一维数组初始化一维数组
Initializing a one-dimensional array from other one-dimensional arrays
我觉得这有一个非常简单的答案,但我无法理解,但在互联网上找不到任何相关内容后,这是我的镜头。
本质上,我想在 C# 中从 javascript 做这样的事情:
var abc = ["a", "b", "c"]
var abcd = [...abc, "d"]
"Spreading"将一维数组abc
的内容放入另一个一维数组abcd
,在初始化时加入新的值。
然而,在 C# 中复制此行为不会按预期工作:
string[] abc = { "a", "b", "c" };
string[] abcd = { abc, "d" };
我最接近在 C# 中复制它的是列表,如下所示:
string[] abc = { "a", "b", "c" };
var abcd = new List<string>();
abcd.AddRange(abc);
abcd.Add("d");
我可以通过直接用 "d" 字符串初始化列表来在上面的例子中节省一行(顺序对我来说并不重要,我只是检查一下如果集合包含我正在寻找的某个项目),但与初始化数组相比,使用列表本身效率非常低,因为我无意稍后修改或添加项目。
有什么方法可以在一行中从其他一维数组初始化一维数组?
第 1 行:
string[] abc = { "a", "b", "c" };
var abcd = new List<string>(abc) { "d" };
列表的构造函数可以采用另一个列表。
如果您正在寻找单线,您可以使用 Enumerable.Append()
method。如果希望 abcd
的类型为字符串数组,可以在末尾添加一个 .ToArray()
。
好了:
string[] abcd = abc.Append("d").ToArray();
注意:Append()
方法在 .NET Framework 4.7.1 及更高版本中可用
对于 .NET Framework 4.7 或更早版本,一种方法是使用 Enumerable.Concat()
method:
string[] abcd = abc.Concat(new[] { "d" }).ToArray();
string[] abcde = abc.Concat(new[] { "d", "e" }).ToArray();
我觉得这有一个非常简单的答案,但我无法理解,但在互联网上找不到任何相关内容后,这是我的镜头。
本质上,我想在 C# 中从 javascript 做这样的事情:
var abc = ["a", "b", "c"]
var abcd = [...abc, "d"]
"Spreading"将一维数组abc
的内容放入另一个一维数组abcd
,在初始化时加入新的值。
然而,在 C# 中复制此行为不会按预期工作:
string[] abc = { "a", "b", "c" };
string[] abcd = { abc, "d" };
我最接近在 C# 中复制它的是列表,如下所示:
string[] abc = { "a", "b", "c" };
var abcd = new List<string>();
abcd.AddRange(abc);
abcd.Add("d");
我可以通过直接用 "d" 字符串初始化列表来在上面的例子中节省一行(顺序对我来说并不重要,我只是检查一下如果集合包含我正在寻找的某个项目),但与初始化数组相比,使用列表本身效率非常低,因为我无意稍后修改或添加项目。
有什么方法可以在一行中从其他一维数组初始化一维数组?
第 1 行:
string[] abc = { "a", "b", "c" };
var abcd = new List<string>(abc) { "d" };
列表的构造函数可以采用另一个列表。
如果您正在寻找单线,您可以使用 Enumerable.Append()
method。如果希望 abcd
的类型为字符串数组,可以在末尾添加一个 .ToArray()
。
好了:
string[] abcd = abc.Append("d").ToArray();
注意:Append()
方法在 .NET Framework 4.7.1 及更高版本中可用
对于 .NET Framework 4.7 或更早版本,一种方法是使用 Enumerable.Concat()
method:
string[] abcd = abc.Concat(new[] { "d" }).ToArray();
string[] abcde = abc.Concat(new[] { "d", "e" }).ToArray();