2013-11-17 5 views
2
public class test 
{ 
    public void xov() { return; } 
    public string xov() { return null; } 
    public int xov() { return 0; } 
} 

public class p 
{ 
    public p() 
    { 
     test v = new test(); 
     v.xov();// Here i cann't use defined overloads :( 
    } 
} 

Я могу перегрузить методы по параметрам, но почему я не могу перегружать методы по типу возврата?Перегрузка по типу возврата?

ответ

6

Тип возврата не считается частью подписи метода. То есть, методы не могут быть перегружены, если они отличаются только типом возврата.

2

Вызов

int x = Add(5,6); 

может быть diffrent чем:

string y = Add(5,6); 

Но что, если никто не читает тип возвращаемого значения?

Add(5,6); 

Как компилятор должен знать, какой add был вызван? Таким образом, этот вариант не является законным.

1

Обратный тип метода не является частью подписи метода для целей перегрузки метода. Однако он является частью сигнатуры метода при определении совместимости между делегатом и методом, на который он указывает.

Link to MSDN Documentation

Смежные вопросы