c# - 除了可选参数之外,两个方法具有相同的签名

标签 c# overloading optional-parameters

我一直在做我的项目,无意中编写了两个具有相同签名(可选参数除外)的方法。令我惊讶的是,代码编译正常。

public async Task<List<CategoryApiModel>> GetCategoriesAsync( int contentLanguageId = 0 )
{
    ...
}

public async Task<List<CategoryApiModel>> GetCategoriesAsync( string languageTag = "" )
{
    ...
}

我知道,当使用空参数调用时,这会导致调用不明确,但令我惊讶的是,这甚至被允许作为声明本身。有人可以解释一下为什么会这样吗?

最佳答案

实际上,您的程序可以正常编译直到至少有一次 GetCategoriesAsync() 调用。然后你会得到“错误CS0121:调用不明确”。

关于c# - 除了可选参数之外,两个方法具有相同的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961847/

相关文章:

c# - 我怎样才能避免递归?

java - 如何在不知道类名的情况下调用方法?

javascript - 如何在 Javascript 中定义可选参数

c# - Math.Round 不保留尾随零

javascript - Kendo Grid 中的日期字段在 Controller 上为空

javascript - flowtype:我如何通过参数计数/类型重载函数返回类型?

javascript - 有没有办法在js中将特定参数传递给函数(无顺序)?

powershell - 使用了哪个参数集?

c# - Autofac单例处理

java - 在 Java 中重载私有(private)方法