Я сделал небольшую DLL в MSIL двумя способами:
float AddNumbers(int, int)
int AddNumbers(int, int)
Как некоторые из вас могут знать, MSIL позволяет вам создавать методы с теми же аргументами, пока у вас есть разные типы возвращаемых типов (что называется перегрузкой типа возвращаемого типа). Теперь, когда я попытался использовать его из С#, как я и ожидал, он выпустил ошибку:
float f = ILasm1.MainClass.AddNumbers(1, 2);
Ошибка:
Вызов неоднозначен между следующими методами или свойствами: 'ILasm1.MainClass.AddNumbers(int, int)' и 'ILasm1.MainClass.AddNumbers(int, int)'
Действительно ли С# не способен различать разные типы возвращаемых данных? Я знаю, что не могу программировать методы, которые имеют только разные типы возвращаемых данных, но я всегда предполагал, что он будет знать, как с ним справиться.