CS-opas:struct

Mureakuha

Loikkaa: valikkoon, hakuun
Teknisistä rajoituksista johtuen artikkelin yllä näkyvä otsikko on virheellinen. Oikea otsikko on C#-opas: struct.

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ä.

Esimerkkejä

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;
}
Henkilökohtaiset työkalut