Det angivna nyckelordet (C#-referens)
Nyckelordet set
definierar en accessor-metod i en egenskap eller indexerare som tilldelar ett värde till egenskapen eller indexerarelementet. Mer information och exempel finns i Egenskaper, Automatiskt implementerade egenskaper och Indexerare.
För enkla fall där en egenskaps get
och set
accessorer inte utför någon annan åtgärd än att ange eller hämta ett värde i ett privat säkerhetskopieringsfält, kan du använda automatiskt implementerade egenskaper. Följande exempel implementeras Hours
som en automatiskt implementerad egenskap.
class TimePeriod3
{
public double Hours { get; set; }
}
Viktigt!
Automatiskt implementerade egenskaper tillåts inte för gränssnittsegenskapsdeklarationer eller implementeringsdeklarationen för en partiell egenskap. Kompilatorn tolkar syntax som matchar en automatiskt implementerad egenskap som deklareringsdeklaration, inte en implementeringsdeklaration.
Du kanske upptäcker att du behöver implementera en av accessor-organen. Nyckelordet field
, som läggs till som en förhandsgranskningsfunktion i C# 13, deklarerar en fältstödd egenskap. Du kan använda en fältstödd egenskap för att låta kompilatorn generera en accessor medan du skriver den andra för hand. Du använder nyckelordet field
för att komma åt det kompilatorsyntetiserade bakgrundsfältet:
class TimePeriod4
{
public double Hours {
get;
set => field = (value >= 0)
? value
: throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
}
}
Viktigt!
Nyckelordet field
är en förhandsgranskningsfunktion i C# 13. Du måste använda .NET 9 och ange <LangVersion>
elementet till preview
i projektfilen för att kunna använda det kontextuella nyckelordet field
.
Du bör vara försiktig med att använda nyckelordsfunktionen field
i en klass som har ett fält med namnet field
. Det nya field
nyckelordet skuggar ett fält med namnet field
i omfånget för en egenskapsåtkomst. Du kan antingen ändra namnet på variabeln field
eller använda @
token för att referera till identifieraren field
som @field
. Du kan läsa mer genom att läsa funktionsspecifikationen för nyckelordetfield
.
set
Ofta består accessorn av en enda instruktion som tilldelar ett värde, som det gjorde i föregående exempel. Du kan implementera set
accessorn som en uttrycksbaserad medlem. I följande exempel implementeras både get
och accessorerna set
som uttrycksbaserade medlemmar.
class TimePeriod2
{
private double _seconds;
public double Seconds
{
get => _seconds;
set => _seconds = value;
}
}
I följande exempel definieras både en get
och en set
accessor för en egenskap med namnet Seconds
. Det använder ett privat fält med namnet _seconds
för att stödja egenskapsvärdet.
class TimePeriod
{
private double _seconds;
public double Seconds
{
get { return _seconds; }
set
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "The value of the time period must be non-negative.");
}
_seconds = value;
}
}
}
Språkspecifikation för C#
Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.