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

C# 是否可以使具有多个不同类型参数的函数在不重载的情况下按任意顺序获取参数?,c#,function,parameter-passing,C#,Function,Parameter Passing,例如,如果一个函数包含3个不同类型的参数: public void myFunction (int myInt, double myDouble, bool myBool) { //Some code here } 是否可以在不重载的情况下,以任意顺序传递参数来调用它 myFunction(aBool, anInt, aDouble); myFunction(aDouble, aBool, anInt); etc.. 不,你不能直接做。有一些选择: 您可以使用命名参数来允许任意顺序。

例如,如果一个函数包含3个不同类型的参数:

public void myFunction (int myInt, double myDouble, bool myBool)
{
    //Some code here
}
是否可以在不重载的情况下,以任意顺序传递参数来调用它

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

不,你不能直接做。有一些选择:

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

 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);
public void myFunction(参数对象[]args)
{
int myInt=args.OfType().FirstOrDefault();
...
}
myFunction(2.4,false,3);

不,你不能直接做。有一些选择:

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

 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);
public void myFunction(参数对象[]args)
{
int myInt=args.OfType().FirstOrDefault();
...
}
myFunction(2.4,false,3);

不,你不能直接做。有一些选择:

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

 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);
public void myFunction(参数对象[]args)
{
int myInt=args.OfType().FirstOrDefault();
...
}
myFunction(2.4,false,3);

不,你不能直接做。有一些选择:

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

 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);
public void myFunction(参数对象[]args)
{
int myInt=args.OfType().FirstOrDefault();
...
}
myFunction(2.4,false,3);


不是以您显示的方式,但是您可以引用参数,通过它们的名称进行设置,IIRC允许您以任意顺序指定它们。简而言之,像
public void myFunction(object[]args){}
-不是真的..您可以使用参数名称,请参见下面的示例。不是以您显示的方式,但是,您可以引用参数来设置它们的名称,IIRC允许您以任意顺序指定它们。简而言之,像
public void myFunction(object[]args){}
-不是真的..您可以使用参数名称,请参见下面的示例。不是以您显示的方式,但是,您可以引用参数来设置它们的名称,IIRC允许您以任意顺序指定它们。简而言之,像
public void myFunction(object[]args){}
-不是真的..您可以使用参数名称,请参见下面的示例。不是以您显示的方式,但是您可以引用参数来设置它们的名称,IIRC允许您以任意顺序指定它们。简而言之,像
public void myFunction(object[]args){}
-不太可能..您可以使用参数名称,请参见下面的示例。OP询问一种不过载的方法。OP询问一种不过载的方法。OP询问一种不过载的方法。OP询问一种不过载的方法。OP询问一种不过载的方法。那不是
params object[]args
?那不是
params object[]args
?那不是
params object[]args
?这不是
参数对象[]args