有人能帮我把这行Powershell代码转换成C#吗?
$query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count
此表达式:
,2 * $count
创建长度为$count
的[int[]]
([int]
的数组),其中每个项的值都初始化为2
。
在C#中,您可以使用Enumerable.Repeat()
:创建相同的数组
query.TextFileColumnDataTypes = Enumerable.Repeat(2, worksheet.Cells.Columns.Count).ToArray()
或者手动初始化每个项目:
var array = new int[worksheet.Cells.Columns.Count];
for(int i = 0; i < array.Length; i++)
array[i] = 2;
query.TextFileColumnDataTypes = array;
补充Mathias R.Jessen的有用答案:
-
.NET Core 2.0+/.NET 5+/.NET Standard 2.1+/strong>-但不是.NET Framework-现在提供了一种方便的静态
Array.Fill()
方法:var a = new int[3]; // Note: There is also an overload to target a *subrange*. Array.Fill(a, 42); // -> int[3] { 42, 42, 42 }
-
Enumerable.Repeat()
是方便的,但与for
解决方案相比慢。 -
为了减轻
for
解决方案的繁琐,您可以根据这个答案定义一个扩展方法。public static T[] Fill<T>(this T[] a, T value ) { for (int i = 0; i < a.Length; ++i) { a[i] = value; } return a; } // Sample call: var a = new int[3].Fill(42); // -> int[3] { 42, 42, 42 }