Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Delphi type nach c#

  Alt 5. Nov 2014, 09:54
Nee, das geht so nicht.

So wäre es straightforward.
Code:
class MyClass
{
  public int[] GetWaveData { return new int16[1024]; }
}
Wenn Du auf deinen 1024 Words bestehst, dann kannst Du das auch in eine Klasse packen und verhindern, das man den Puffer verändert;
Code:
class WaveData
{
  private readonly Int16[] data = new Int16[1024];
  public Int16[] Data {get{return data;}}
}
Dafür ein Unittest und fertig.
Code:
[Test]
public void WaveDataSizeTest()
{
  var unit = new WaveData();
  Assert.AreEqual(unit.Data.Length, 1024);
}
Alternativ geht es auch mit unsafe:
Code:
internal unsafe struct WaveData
{
    public fixed Int16 Data [1024];
}

internal class MeineClass
{
    public unsafe WaveData GetWaveData()
    {
        var myWaveData = new WaveData();
        myWaveData.Data[0] = 3;
        return myWaveData;
    }
}
Dann musst Du mit der Option '/unsafe' kompilieren bzw. dies so in den Projekteigenschaften einstellen.

Ich persönlich würde eine der ersten beiden Varianten wählen. Ich weiß nicht, ob die 1024 Words in Stein gemeißelt sein müssen. Imho reicht es, wenn 1024 Elemente geliefert werden und dann -wie es sein sollte- über 'Length' iteriert wird.

Es wäre aber natürlich denkbar, das an 1000 Stellen im Code implizit diese Größe vorausgesetzt wird, dann Variante #2.

Der Nachteil/Das Besondere von #3 ist der, das der Speicherbereich nicht mehr verändert wird, d.h. die Adresse ändert sich nicht mehr.
  Mit Zitat antworten Zitat