В c# что означает «где T: класс?» жадный - PullRequest
3 голосов
/ 06 марта 2020

В C# что означает where T : class? (обратите внимание на знак вопроса в конце ограничения класса)

Например,

public IList<T> DoThis<T>() where T : class?

Ответы [ 3 ]

4 голосов
/ 06 марта 2020

?, прикрепленный к типу в C# (поддерживается из версии 8), означает, что это обнуляемый ссылочный тип . class? означает, что вызывающий код должен передать параметр типа, который является class и может иметь значение NULL.

Например, DoThis<string?>(someNullableString) допустимо. Он также может быть вызван с ненулевой версией, например, DoThis<string>(someNonNullableString).

1 голос
/ 06 марта 2020

Это допустимый синтаксис для C# 8. Синтаксис ограничивает T быть обнуляемым ссылочным типом

0 голосов
/ 06 марта 2020

Я не видел упомянутых вещей. И сначала это немного нелогично, поскольку все мы знаем, что ссылочные типы могут быть нулевыми. Эта функция действительно отвечает , если они равны нулю.

«Тип ссылки Nullable» в основном заявляет о вашем намерении, что null является допустимым значением, как для тех, кто читает код, так и для компилятора.

Это помогает защитить вас от таких вещей, как string shouldntBeNull = null;.

Что вы можете заметить, если включить эту функцию с помощью <Nullable>enable</Nullable> в настройках проекта.

Напротив, это показывает намерение более четко string? couldBeNull = null;

Это функция подписки.

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