我正在通过函数参数与c#的strikt类型作斗争.

对于我的RPN计算器,所需的参数将由函数调用提交,该函数调用带有不同类型的逗号分隔的参数列表:

this.FxMath. RPN(this.Mt, this.L, 2, '*', this.F, '*')   // This.Mt are Variables as Objects)

函数本身将获得逗号分隔的参数作为.序列号:

RPN(ergebnis: VariableUnitBuilder, ...seq: any) {

如:

RPN(ergebnis: VariableUnitBuilder, ...seq: any) {

    let stack = [], i = 0;

    typeof seq[i] === 'object' ? seq[i] = seq[i].nominalValue : null;
    stack.push(seq[i]);
    i++;

    while (i <= seq.length) {

      typeof seq[i] === 'object' ? seq[i] = seq[i].nominalValue : null; // Zahlenwert extraieren oder nix.
      let item = seq[i];  // Number or operator

      if (isNaN(item)) {
        let a: number;
        let b: number;

        switch (item) {
          case '+':
            a = parseFloat(stack.pop());
            b = parseFloat(stack.pop());
            stack.push(a + b);

            break; 
...... }

现在我需要一些具有不同类型和未知长度的参数:

(this.Mt,this.L,2.5,‘*’,this.F,‘*’)//类,类,双精度,字符串,类,串

推荐答案

您可以使用params modifier,它允许方法接受可变数量的参数,并将其与包含System.Object的数组组合:

public void RPN(VariableUnitBuilder p, params object[] seq)
{
   // ...
}

电话看起来像是:

someInstance.RPN(someVariableUnitBuilder, 1, "2");
someInstance.RPN(someVariableUnitBuilder, 1, "2", 3, new object());

注意,对于value types,这将导致boxing,这可能是不期望的.

Csharp相关问答推荐

如何从顶部提取发票号作为单词发票后的第一个匹配

如何使嵌套for-loop更高效?

C#中使用BouncyCastle计算CMac

在发布表单时绑定包含附加(嵌套)列表的对象列表的正确语法是什么

在C#中使用类中的对象值

.NET 8 Web-API返回空列表

Blazor Foreach仅渲染最后一种 colored颜色

有没有办法在WPF文本框中添加复制事件的处理程序?

如何使用新的Microsoft.IdentityModel.JsonWebToken创建JwtSecurityToken?

如何将ASP.NET Core 2.1(在.NET框架上运行)更新到较新的版本?

MS Graph v5.42.0:在寻呼消息时更改页面大小

单行上的ReSharper数据标注

从另一个不同 struct 的数组创建Newtonsoft.Json.Linq.J数组

如何在我的C#应用程序中设置带有reactjs前端的SignalR服务器?

Regex字母数字校验

EF Core 7-忽略模型绑定中的虚拟属性

毛伊岛.NET 8图片不再适合按钮

在C#/ASP.NET Core 7中,什么可能导致POST请求作为GET请求发送

Xamarin Forms应用程序中登录页面的用户名和密码编辑文本之间不需要的空格

有没有更好的方法来使用LINQ获取整行的计算组