C #: объявить, что функция никогда не будет возвращать ноль? - PullRequest
9 голосов
/ 01 декабря 2010

Справочная информация: Существует такой принцип разработчика: "Должна ли моя функция возвращать ноль или выдавать исключение, если запрошенный элемент не существует?"что я не хотел бы обсуждать здесь.Я решил создать исключение для всех случаев, когда необходимо вернуть значение, и это значение не будет существовать только в случаях (программно или логически) неверного запроса.

И, наконец, мой вопрос: Можно ли пометить функцию так, чтобы компилятор знал, что она никогда не вернет значение NULL, и предупредит любого, кто проверяет, является ли возвращаемое значение NULL?

Ответы [ 4 ]

9 голосов
/ 01 декабря 2010

Вы можете сделать это, используя Code Contracts.

Пример:

    public String Method1()
    { 
        Contract.Ensures(Contract.Result<String>() != null);

        // To do
    }
3 голосов
/ 01 декабря 2010

Используя кодовые контракты, вы можете определить контракт, который метод не возвращает нуль.

using System.Diagnostics.Contracts; // required namespace 

public T MethodName()
{
    Contract.Ensures(Contract.Result<T>() != null); //where T is the return type.

    // method body...
}
2 голосов
/ 01 декабря 2010
0 голосов
/ 01 декабря 2010

Если вы возвращаете тип значения, то он не может быть нулевым (если вы явно не сделаете это с помощью системной оболочки 'nullable').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...