小编bas*_*hdy的帖子

使用params和optionals的C#方法重载

今天我发现了一些奇怪的事 我想知道为什么会这样:

static void Main(string[] args)
{
    Console.WriteLine(ExampleMethod(3));
    Console.ReadKey();
}

public static string ExampleMethod(int required, params int[] optionalint)
{
    return "ExampleMethod 2";
}

public static string ExampleMethod(int required, string optionalstr = "default string", int optionalint = 10) 
{
    return "ExampleMethod 1";
}
Run Code Online (Sandbox Code Playgroud)

想一想:调用ExampleMethod(3)时的结果是什么;

在我看来,它会导致不可预测的结果.在我的情况下,总是调用方法1.但是当我改变方法1的签名时,主方法称为方法2(当然).

我没想到会有这样的行为,我预料到"AmbiguousReferenceException"或者至少是编译器警告.

.net c# params

6
推荐指数
1
解决办法
139
查看次数

标签 统计

.net ×1

c# ×1

params ×1