Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1116 of 1492 menu
◀ ▶

Ограничение notnull

Запись where T : notnull означает, что значение типа T не должно быть null в смысле системы типов: подходят int, string и другие non-nullable типы. int? и nullable reference types с ? для параметра не подходят. Ограничение помогает хранить аргумент без лишних проверок на null.

Синтаксис

class Cell<T> where T : notnull { public T Value { get; } public Cell(T value) => Value = value; }

Пример

Давайте обернём число в ячейку с notnull:

using System; class Cell<T> where T : notnull { public T Value { get; } public Cell(T value) { Value = value; } } class Program { static void Main() { var cell = new Cell<int>(5); Console.WriteLine(cell.Value); } }

Результат выполнения кода:

5

Пример

Давайте сохраним строку - она тоже подходит под notnull:

using System; class Holder<T> where T : notnull { public T Item { get; } public Holder(T item) { Item = item; } } class Program { static void Main() { var holder = new Holder<string>("abcde"); Console.WriteLine(holder.Item); } }

Результат выполнения кода:

"abcde"

Пример

Давайте вернём сохранённое значение из обобщённого метода:

using System; class Pass<T> where T : notnull { public static T Echo(T value) { return value; } } class Program { static void Main() { string res = Pass<string>.Echo("12345"); Console.WriteLine(res); } }

Результат выполнения кода:

"12345"

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить