是否可以使一个具有多个不同类型参数的函数在不重载的情况下按任何顺序获取参数

本文关键字:重载 函数 情况下 任何 参数 获取 顺序 可以使 一个 是否 类型参数 | 更新日期: 2023-09-27 18:20:55

举个例子,如果一个函数有三个不同类型的参数:

public void myFunction (int myInt, double myDouble, bool myBool)
{
    //Some code here
}

在不重载的情况下,它可以被调用以任何顺序传递参数吗?

myFunction(aBool, anInt, aDouble);
myFunction(aDouble, aBool, anInt);
etc..

是否可以使一个具有多个不同类型参数的函数在不重载的情况下按任何顺序获取参数

  private void OperationOverLoadTest()
        {
            this.myFunction(1, 1.1D, true);
            this.myFunction(myDouble: 1.1D, myBool:false, myInt:1);
        }
        public void myFunction(int myInt, double myDouble, bool myBool)
        {
            //Some code here
        }

不,不能直接执行。有一些选择:

您可以使用命名参数来允许任意顺序。这将保留静态类型检查。

 myFunction(myBool:aBool, myInt:anInt, myDouble:aDouble);

您可以使用params并丢失类型检查。您需要检查传入的参数类型。这就是JavaScript通常实现参数数量可变的函数的方式:

public void myFunction (params object[] args)
{
    int myInt = args.OfType<int>().FirstOrDefault();
    ...
}
 myFunction(2.4, false, 3);