【问题标题】:Powershell to C# syntax conversionPowershell 到 C# 语法转换
【发布时间】:2021-11-28 09:44:32
【问题描述】:

有人可以帮忙把这行 Powershell 代码转换成 C# 吗?

$query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count

【问题讨论】:

    标签: c# powershell


    【解决方案1】:

    这个表达式:

    ,2 * $count
    

    创建一个长度为$count[int[]][int] 的数组),其中每个项目的值都初始化为2

    在 C# 中,您可以创建相同的数组 with 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;
    

    【讨论】:

      【解决方案2】:

      补充Mathias R. Jessen's helpful answer

      • .NET Core 2.0+ / .NET 5+ / .NET Standard 2.1+ - 但不是 .NET Framework - 现在提供方便的静态 @987654322 @ 方法:

        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 解决方案中解脱出来,您可以定义一个扩展方法,改编自this answer

        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 }
        

      【讨论】:

        猜你喜欢
        • 2016-07-01
        • 2020-05-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 2012-05-10
        • 2011-04-21
        • 1970-01-01
        相关资源
        最近更新 更多