如何将不同类型的带有展开参数的javascript函数转换为c#风格?

问题描述 投票:0回答:1

我正在努力解决 c# 中函数参数的严格输入问题。

对于我的 RPN 计算器,所需的参数将通过函数调用提交,并使用逗号分隔的不同类型的参数列表:

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

函数本身将获取逗号分隔的参数,如 ...seq:

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, '*') // 类,类,双精度,字符串,类,字符串

c# typescript arguments
1个回答
0
投票

您可以使用

params
修饰符,它允许方法接受带有
System.Object
数组的可变数量的参数:

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

并且打电话的方式如下:

someInstance.RPN(variableOfSomeParamType, 1, "2", 1)
© www.soinside.com 2019 - 2024. All rights reserved.