Vytvoření zapouzdřených dat pomocí struktur v jazyce C#
Při práci na projektu ke sledování podrobností objednávky potřebujete způsob, jak společně uchovávat související informace, jako je jméno zákazníka, dodací adresa a celkový součet objednávek. Struktury v jazyce C# umožňují vytvořit základní zapouzdřený kontejner pro tato data, což usnadňuje práci s a předávání jako jedinou jednotku.
Principy struktur
Struktury jsou hodnotové typy v jazyce C#, což znamená, že data přímo ukládají místo toho, aby na ně odkazovaly. Pomocí klíčového struct slova definujete strukturu. Struktury se obvykle používají pro malé typy zaměřené na data, které poskytují minimální chování.
- Struktury mají sémantiku hodnot, což znamená, že jejich hodnoty se kopírují během volání přiřazení nebo metody.
- Mezi běžné případy použití patří reprezentace čísel, logických hodnot, znaků a časových instancí.
- Struktury se běžně používají pro reprezentaci jednoduchých dat,
Rectanglejako jsou geometrické obrazce (například ,Circle), souřadnice nebo nastavení konfigurace.
Struktury jsou nejvhodnější pro malá, neměnná a kritická data o výkonu. U větších, složitějších objektů nebo v případě, že je chování fokusem, zvažte místo toho použití tříd. Na rozdíl od tříd nemohou struktury dědit z jiných struktur nebo tříd, ale mohou implementovat rozhraní.
Návod
Pokud se váš typ zaměřuje spíše na chování než data, třídy jsou často lepší volbou z důvodu jejich referenční sémantiky.
Definování a implementace struktury
public struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
X = x;
Y = y;
}
}
Ukázka kódu ukazuje, jak definovat strukturu s poli a konstruktorem v jazyce C#.
Struktury mohou také implementovat rozhraní, ale nemohou dědit z jiných tříd nebo struktur.
Zapouzdření dat pomocí struktur
Zapouzdření umožňuje řídit přístup k datům v rámci struktury. Použijte modifikátory přístupu, jako je private, publicnebo internal zadejte přístupnost.
- Pole a vlastnosti mohou být soukromé, aby bylo možné omezit přímý přístup.
- Metody můžou poskytovat řízené způsoby interakce s daty.
Například:
public struct Rectangle
{
private int width;
private int height;
public Rectangle(int width, int height)
{
this.width = width;
this.height = height;
}
public int Area => width * height;
}
Ukázka kódu ukazuje strukturu v jazyce C# s zapouzdřenými poli a vypočítanou vlastností pro oblast.
Použití modifikátoru jen pro čtení u struktur pro neměnnost
Neměnnost zajišťuje, že po vytvoření struktury není možné měnit její data. Struktura je užitečná při práci s daty, která by měla zůstat konstantní po celou dobu životnosti, jako jsou souřadnice nebo hodnoty konfigurace. Když použijete readonly modifikátor na strukturu, můžete vynutit neměnnost, čímž kód bude předvídatelnější a méně náchylný k chybám způsobeným nezamýšlenými úpravami.
public readonly struct ImmutablePoint
{
public int X { get; init; }
public int Y { get; init; }
public ImmutablePoint(int x, int y)
{
X = x;
Y = y;
}
}
Ukázka kódu ukazuje použití modifikátoru readonly k vytvoření neměnné struktury v jazyce C#.
Poznámka:
I když samotná struktura je neměnná, proměnlivé odkazové typy v něm mohou stále měnit jejich stav.
Použití inicializátorů objektů se strukturami
Při práci se strukturami často potřebujete inicializovat více vlastností. Inicializátory objektů poskytují jednoduchý a čitelný způsob vytvoření a inicializace instancí struktury v jednom kroku. Tento přístup snižuje opakující se kód a zjasňuje váš záměr.
Následující ukázka kódu definuje strukturu s vlastnostmi, které seskupují související data a usnadňují inicializaci a práci s instancemi struktury.
public struct Point
{
public int X { get; set; }
public int Y { get; set; }
}
Pomocí inicializátoru objektů můžete vytvořit a inicializovat Point:
var point = new Point { X = 10, Y = 20 };
Ukázka kódu ukazuje, jak pomocí inicializátoru objektů nastavit hodnoty vlastností při vytváření instance struktury.
Návod
Inicializátory objektů usnadňují čtení kódu při práci se strukturami, které mají více vlastností.
Praktický příklad: Použití struktur k reprezentaci bodů ve 2D prostoru
Struktury se často používají k reprezentaci malých neměnných datových struktur. Pomocí struktury můžete například znázorňovat bod ve 2D prostoru a vypočítat vzdálenost mezi dvěma body:
public struct Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public double DistanceTo(Point other)
{
int dx = X - other.X;
int dy = Y - other.Y;
return Math.Sqrt(dx * dx + dy * dy);
}
}
var point1 = new Point(3, 4);
var point2 = new Point(7, 1);
Console.WriteLine($"Distance between points: {point1.DistanceTo(point2)}");
Tento příklad ukazuje, jak definovat strukturu pro bod, vypočítat vzdálenost mezi dvěma body a použít strukturu v jednoduchém programu.
Kombinace zapouzdření, neměnnosti a inicializátorů objektů umožňuje vytvářet struktury, které jsou efektivní a předvídatelné. Tyto funkce vám pomůžou spravovat související data čistým a uspořádaným způsobem.