Создание необнуляемых типов в C # - PullRequest
43 голосов
/ 16 июня 2011

Как создать типы значений, не допускающие значения NULL, например int, bool и т. Д. В C #?

Ответы [ 3 ]

51 голосов
/ 16 июня 2011

Да, они называются struct.

Структуры - это типы значений, такие как int, bool и другие.

У них есть некоторые правила / рекомендации, связанные с ними: (я думаю, что они самые важные)

  • структура передается и присваивается по значению, когда не используются ключевые слова ref или out ... это означает, что все, что вы помещаете в структуру, будет скопировано при назначении или передаче его методу. Вот почему вы не должны создавать большие структуры.

  • вы не можете определить конструктор без параметров для структуры в C #

  • Структуры лучше быть неизменяемыми и не иметь установщиков свойств. Вы можете попасть в настоящую проблему, создавая изменчивые структуры.

Другие документы можно найти в документации Microsoft по структурам.

Что касается необнуляемых ссылочных типов ... это , невозможно . Вы должны вручную проверить наличие нулей в вашем коде.

11 голосов
/ 16 июня 2011

Вы можете определить struct :

Тип структуры - это тип значения, который обычно используется для инкапсуляции небольших групп связанных переменных, таких как координаты прямоугольника.или характеристики предмета в инвентаре.В следующем примере показано простое объявление структуры:

public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

Однако вы не можете определить псевдонимы, такие как int для System.Int32 и должны ссылаться на полное имя MyNamespace.Book (илиBook с using MyNamespace;) к вашей структуре.

10 голосов
/ 10 января 2019

7 лет спустя, и теперь это возможно

  • Установите .NET Core 3.0, который включает в себя C # 8.
  • Установите для языковой версии 8.0: 8.0 для вашего файла .csproj.
  • Добавьте свойство true (. К вашему csproj)

Подробнее о его влиянии на написание кода и существующего кода здесь:

https://praeclarum.org/2018/12/17/nullable-reference-types.html

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