Automatisk implementerede properties
Deklarér properties med en kortfattet auto-syntaks.
Automatisk implementerede properties er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 4 lektioner i alt.
Hvad er en egenskab?
En egenskab ligner et felt udefra, men understøttes af adgangsmetoder (get og set). Egenskaber lader dig stille data til rådighed, samtidig med at du bevarer kontrollen over, hvordan dataene læses og skrives.
using System;
class Program
{
public string Name { get; set; }
static void Main()
{
var p = new Program();
p.Name = "Coddy";
Console.WriteLine(p.Name);
}
}Syntaks for automatisk implementerede egenskaber
En automatisk implementeret egenskab bruger { get; set; }. Kompileren opretter et skjult underliggende felt for dig, så du ikke selv behøver skrive et.
using System;
class Person
{
public string FirstName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var person = new Person { FirstName = "Ada", Age = 36 };
Console.WriteLine(person.FirstName + " is " + person.Age);
}
}Hvorfor bruge egenskaber i stedet for felter?
Offentlige egenskaber giver dig en stabil API. Senere kan du tilføje validering eller ændre lagringen uden at ødelægge kaldende kode. Det kan offentlige felter ikke.
using System;
class Account
{
public decimal Balance { get; set; }
}
class Program
{
static void Main()
{
var a = new Account();
a.Balance = 100.50m;
Console.WriteLine("Balance: " + a.Balance);
}
}Skrivebeskyttede automatisk implementerede egenskaber
Udelad set for at gøre en egenskab skrivebeskyttet. Den kan kun tildeles i konstruktøren eller via en initialisering, hvilket giver værdier, der som udgangspunkt er uforanderlige.
using System;
class Circle
{
public double Radius { get; }
public Circle(double radius)
{
Radius = radius;
}
}
class Program
{
static void Main()
{
var c = new Circle(5.0);
Console.WriteLine("Radius: " + c.Radius);
}
}Standardværdier for egenskaber
Du kan give en automatisk egenskab en begyndelsesværdi med = value;. Det sker, når objektet oprettes, før konstruktørens krop køres.
using System;
class Settings
{
public bool DarkMode { get; set; } = true;
public int Volume { get; set; } = 50;
}
class Program
{
static void Main()
{
var s = new Settings();
Console.WriteLine("DarkMode: " + s.DarkMode + ", Volume: " + s.Volume);
}
}Private settere
En private set lader klassen ændre værdien internt, samtidig med at ekstern kode forhindres i at ændre den. Det er et almindeligt indkapslingsmønster.
using System;
class Counter
{
public int Count { get; private set; }
public void Increment()
{
Count++;
}
}
class Program
{
static void Main()
{
var counter = new Counter();
counter.Increment();
counter.Increment();
Console.WriteLine("Count: " + counter.Count);
}
}Init-only-settere
Adgangsmetoden init tillader kun tildeling under initialiseringen af objektet. Efter oprettelsen er værdien låst.
using System;
class Product
{
public string Name { get; init; }
public decimal Price { get; init; }
}
class Program
{
static void Main()
{
var p = new Product { Name = "Book", Price = 12.99m };
Console.WriteLine(p.Name + ": " + p.Price);
}
}Egenskaber med forskellige adgangsniveauer
Egenskaber følger de normale adgangsmodifikatorer. Du kan blande niveauer: en offentlig getter med en privat setter eller en helt intern egenskab.
using System;
class User
{
public string Id { get; private set; }
public User(string id)
{
Id = id;
}
}
class Program
{
static void Main()
{
var u = new User("u-001");
Console.WriteLine("User Id: " + u.Id);
}
}Automatiske egenskaber, der ligner beregninger
Automatiske egenskaber gemmer data; de beregner ikke noget. Hvis du har brug for en beregnet værdi, bruger du en fuld egenskab, som vi gennemgår senere. Behandl indtil videre automatiske egenskaber som simpel lagring.
using System;
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
}
class Program
{
static void Main()
{
var r = new Rectangle { Width = 4, Height = 3 };
double area = r.Width * r.Height;
Console.WriteLine("Area: " + area);
}
}Opdatering af automatisk implementerede egenskaber
Du kan læse og tildele en automatisk egenskab med setter lige så mange gange, du vil, ligesom en variabel.
using System;
class Player
{
public int Score { get; set; }
}
class Program
{
static void Main()
{
var player = new Player();
player.Score = 10;
player.Score += 5;
player.Score *= 2;
Console.WriteLine("Score: " + player.Score);
}
}Samling af det hele
En typisk modelklasse består hovedsageligt af automatisk implementerede egenskaber: nogle med setter, nogle kun med init og nogle med private settere. Det holder klassen kortfattet og tydelig.
using System;
class BankAccount
{
public string Owner { get; init; }
public decimal Balance { get; private set; }
public void Deposit(decimal amount)
{
Balance += amount;
}
}
class Program
{
static void Main()
{
var acct = new BankAccount { Owner = "Lin" };
acct.Deposit(250m);
Console.WriteLine(acct.Owner + ": " + acct.Balance);
}
}Hurtig kontrol
Test din forståelse af automatisk implementerede egenskaber.
Opsummering
Du har lært, at automatisk implementerede egenskaber bruger { get; set; } sammen med et kompilergenereret underliggende felt. Variationerne omfatter skrivebeskyttede { get; }, private set til kontrollerede ændringer og init til værdier, der kun kan tildeles én gang. Det er standardmåden at stille data på en klasse til rådighed.
using System;
class Demo
{
public string A { get; set; } = "settable";
public string B { get; } = "read-only";
public string C { get; init; } = "init-only";
}
class Program
{
static void Main()
{
var d = new Demo { C = "changed-at-init" };
Console.WriteLine(d.A + ", " + d.B + ", " + d.C);
}
}Lær C# med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 93
- Lektioner
- 346
Ofte stillede spørgsmål
Er lektionen “Automatisk implementerede properties” gratis?
Ja — hele teksten til “Automatisk implementerede properties” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Automatisk implementerede properties”?
Deklarér properties med en kortfattet auto-syntaks. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C# Academy?
Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Automatisk implementerede properties”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C# Academy-lektion?
Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Automatisk implementerede properties
- Fuldstændige properties med backing fields
- Udtryksbaserede medlemmer
- Indexere