SetsRequiredMembers
SetsRequiredMembers на конструкторе
разрешает new Gate() без
инициализатора, если конструктор
сам пишет Name = "abcde".
Без атрибута такой вызов
не компилируется - в примерах
его нет.
Синтаксис
[SetsRequiredMembers]
public Gate() { Name = "abcde"; }
Пример
Давайте создать объект через конструктор:
using System;
using System.Diagnostics.CodeAnalysis;
class Gate
{
public required string Name { get; set; }
[SetsRequiredMembers]
public Gate()
{
Name = "abcde";
}
}
class Program
{
static void Main()
{
Gate gate = new Gate();
string res = gate.Name;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте создать второй экземпляр:
using System;
using System.Diagnostics.CodeAnalysis;
class Gate
{
public required string Name { get; set; }
[SetsRequiredMembers]
public Gate()
{
Name = "abcde";
}
}
class Program
{
static void Main()
{
Gate first = new Gate();
Gate second = new Gate();
bool res = first.Name == second.Name;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте проверить длину имени:
using System;
using System.Diagnostics.CodeAnalysis;
class Gate
{
public required string Name { get; set; }
[SetsRequiredMembers]
public Gate()
{
Name = "abcde";
}
}
class Program
{
static void Main()
{
Gate gate = new Gate();
int res = gate.Name.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Смотрите также
-
RequiredMember,
обязательный член -
NotNull,
не null после метода -
MaybeNull,
может быть null -
NotNullIfNotNull,
зависимость от аргумента