可选参数混淆

Sam*_*ack 0 .net c# c#-4.0

如果我有一个类似以下的方法..

void Foo (int x, int y = 23, int z=10) 
{
    Console.WriteLine (x); 
}
Run Code Online (Sandbox Code Playgroud)

我通过: Foo(20,30) 2个可选参数中的哪一个将获得30?
另外,如果我想将20 x和30 传递给z

Mar*_*ell 5

默认情况下,参数是位置的,先来先服务,所以x20,y30,并z取默认值10.如果你想要非位置,你需要明确:

Foo(20, z: 30);
Run Code Online (Sandbox Code Playgroud)

但是,一个简单的改变会让你发现:

Console.WriteLine ("x={0}, y={1}, z={2}", x, y, z); 
Run Code Online (Sandbox Code Playgroud)