CS-opas:struct
Mureakuha
- Teknisistä rajoituksista johtuen artikkelin yllä näkyvä otsikko on virheellinen. Oikea otsikko on C#-opas: struct.
[muokkaa]
Struktuurin johdanto
Paikallinen struktuurityyppinen muuttuja sijaitsee aina pinossa. Struct-tyypille varataan tila pinosta jo esittelyvaiheessa. Tälläisen tyypin osoite voidaan tarvittaessa välittää ref- ja out-avainsanoilla metodeille.
Struktuurin yhteydessä voidaan käyttää attribuuttia StructLayoutAttribute, joka löytyy System.Runtime.InteropServices nimiavaruudesta. Attribuutti määrää sen, millä tavalla struktuurin kentät järjestetään fyysisesti. Tätä attribuuttia käytetään mm. kutsuttaessa unmanaged-koodia sekä unionin yhteydessä.
[muokkaa]
Esimerkkejä
[muokkaa]
Lyhyet esimerkit
Esimerkki struktuurista
using System; public struct Kolmio { private double _kanta; private double _korkeus; public static void Main() { Kolmio k = new Kolmio(45.48,5.45); Console.Write("Pinta-ala on {0}",k.Ala()); } public Kolmio(double kanta, double korkeus) { _kanta = kanta; _korkeus = korkeus; } public double Ala() { return _kanta * _korkeus / 2; } }
Esimerkki unionista
[StructLayout(LayoutKind.Explicit)] public struct Addr_in { [FieldOffset(0)] public uint Addr_i; [FieldOffset(0)] public ushort Addr_s1; [FieldOffset(2)] public ushort Addr_s2; [FieldOffset(0)] public uchar Addr_c1; [FieldOffset(1)] public uchar Addr_c2; [FieldOffset(2)] public uchar Addr_c3; [FieldOffset(3)] public uchar Addr_c4; }
