Просто войдите в Mysql с
mysql -u root -p
Затем введите эту команду
select @@version;
. Это даст результат как,
+-------------------------+
| @@version |
+-------------------------+
| 5.7.16-0ubuntu0.16.04.1 |
+-------------------------+
1 row in set (0.00 sec)
Эта функция называется «ковариация возвращаемого типа». C # не поддерживает его по следующим причинам:
1) CLR не поддерживает его. Чтобы заставить его работать на C #, нам нужно просто наплевать целую кучу маленьких вспомогательных методов, которые будут отличать правильный тип возвращаемого значения. Нет ничего, что мешает вам сделать это самостоятельно.
2) Андерс считает, что ковариация возвращаемого типа не является хорошей языковой функцией.
3) \ У нас много приоритетов для языка. У нас ограниченные бюджеты, поэтому мы стараемся делать только самые лучшие функции, которые могут быть доступны в любом выпуске. Конечно, это было бы неплохо, но достаточно легко сделать это самостоятельно, если захочешь. Лучше, чтобы мы тратили время на добавление функций, которые улучшают опыт разработчика или добавляют больше репрезентативной власти на язык.
Чтобы избежать проблемы, вы можете использовать явную реализацию интерфейса.
class X : IA, IB
{
public X test()
{
return this;
}
IB IA.test()
{
return this;
}
}
interface IA
{
IB test();
}
interface IB
{
}
Поскольку C # не поддерживает co и contravriance для интерфейсов во время компиляции. Таким образом, реализация метода IA.Test () должна точно соответствовать его объявлению. Однако вы можете вернуть экземпляр X во время выполнения
public X test();
Вы должны объявить тело для всех методов в любом классе, который не является абстрактным.
Попробуйте следующее:
class X : IA, IB
{
public IB test()
{
return new X();
}
}
interface IA
{
IB test();
}
interface IB { };
Подписи должны точно соответствовать указаниям интерфейса. Нет причин, по которым вы не можете вернуть экземпляр X
из метода, но подпись метода должна будет использовать IB
.
Что касается разумной причины ... вероятно, это предпочтительнее точки считывания кода зрения.
Вы можете реализовать интерфейс явно и предоставить альтернативную подпись, которая возвращает X
, которая не определена интерфейсом. Если вы знаете, что ваш IA
на самом деле является X
, вы можете использовать это.
Это может помочь http://geekswithblogs.net/abhijeetp/archive/2010/01/10/covariance-and-contravariance-in-c-4.0.aspx Вы можете использовать "out "keyword