Powershell到C#的语法转换



有人能帮我把这行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 }
    

最新更新