Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Prism Selbstdefinierte Typen in c# (https://www.delphipraxis.net/39161-selbstdefinierte-typen-c.html)

Dagon 29. Jan 2005 16:50


Selbstdefinierte Typen in c#
 
Eine kleine Frage: Diese "Konstruktion", wie sieht die in c# aus?
Delphi-Quellcode:
type
  TMeinArray = array[0..5] of Integer;

kiar 29. Jan 2005 17:52

Re: Selbstdefinierte Typen in c#
 
hallo,

in c# sieht es so aus:
Delphi-Quellcode:
int[] MeinArray = new int[5];
raik

Robert_G 29. Jan 2005 17:57

Re: Selbstdefinierte Typen in c#
 
Sowas brauchst du in c# nicht mehr. ;) Bzw.: Es gibt in .Net keine Arrays mehr, so wie man sie aus der Win32-Zeit kennt.

Eindimensionaler Integer-Array:
Code:
public enum ArrayInit
{
   MitWerte,
   OhneWerte
}

class SomeClass
{
   int[] miep;

   int[] ArrayMitWerten()
   {
      return new int[5] {1, 2, 3, 4, 5};
   }

   int[] ArrayOhneWerte()
   {
      return Array.CreateInstance(typeof(int), 5) as int[];
   }

   public SomeClass(ArrayInit arrayInit)
   {
      if(arrayInit == ArrayInit.MitWerte)
         miep = ArrayMitWerten();
      else if(arrayInit == ArrayInit.OhneWerte)
         miep = ArrayOhneWerte();
   }
}
Wie du siehst sind sie auch ohne Extranamen vollständig zuweisungskompatibel (In delphi32 brauchst du ja diese Hilfsttypen).
Ich weiß noch nichtmal, ob es sowas wie Typennamen für arrays in c# überhaupt gibt (Ich habe es nie vermisst :mrgreen: )

Dagon 29. Jan 2005 17:57

Re: Selbstdefinierte Typen in c#
 
Zitat:

Zitat von kiar
Delphi-Quellcode:
int[] MeinArray = new int[5];

Das enspricht doch folgendem
Delphi-Quellcode:
var
  MeinArray: array[0..5];
und nicht dem, was ich will, oder?

Robert_G 29. Jan 2005 22:23

Re: Selbstdefinierte Typen in c#
 
Du solltest dir lieber überlegen WAS du willst.
Arrays machen keinen "Spass", das kann ich dir jetzt schon sagen. ;)
In 50% der Fälle ist eine eigene Implementierung von IList & ICollection viel sinnvoller und praktischer.
In weiteren 49% wären Listen oder Dictionaryies besser geeignet.
Der faule Weg würde über CollectionBase und dem TypedCollection Wizzard aus SharpDevelop führen.
Wenn du per foreach durch eine Collection (,HashList, Dictionary,...) iterierst dürftest du kaum bis keine Geschwindigkeitsunterschide zu einem Array feststellen. (Der Enumerator "weiß" ja genau was noch kommt :) )
Nur bei direkten Zugriffen auf ein Element ist der Array flinker.*
Arrays machen aber unter .Net (genau wie unter Delphi32) deinen Code sehr schnell sehr hässlich. ;)
Sie machen IMHO nur Sinn als Rückgabewerte von Funktionen (gut zu sehen an vielen Methoden aus Reflection ;) ).


*Wobei eine Ableitung von CollectionBase oder ArrayList einen internen Index führt und somit auch fast genauso schnell einzelne Elemente holt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz