我用两种方法在MSIL中创建了一个小DLL:
float AddNumbers(int, int)
int AddNumbers(int, int)
Run Code Online (Sandbox Code Playgroud)
正如你们可能知道的那样,MSIL允许你创建具有相同参数的方法,只要你有不同类型的返回类型(所谓的返回类型重载).现在,当我尝试从c#中使用它时,正如我所期待的那样,它发出错误:
float f = ILasm1.MainClass.AddNumbers(1, 2);
Run Code Online (Sandbox Code Playgroud)
错误是:
以下方法或属性之间的调用不明确:'ILasm1.MainClass.AddNumbers(int,int)'和'ILasm1.MainClass.AddNumbers(int,int)'
c#真的无法区分不同的返回类型吗?我知道我不能编写只有不同返回类型的方法,但我总是认为它会知道如何处理它.