![]() |
"Array of record" in C#?
Ich habe schon graue Haare vom Suchen im .NET-Framework SDK. Wie kann denn so eine Konstruktion
Delphi-Quellcode:
in C# machen? Ich hätte da ein paar Bezeichner und Sequenznummern (mehr als 2), die ich gern vorher initialisieren und dann zur Laufzeit bloß entsprechend der Reihe nach aufrufen würde.
type
TEinType = record Name : string; SequenceNumber : integer; end; const TTypenArray = array[1..2]of TEinType = ( (Name:"Ein Name"; SequenceNumber:100), (Name:"Noch ein Name"; SequenceNumber:200) ); |
Re: "Array of record" in C#?
Erstmal einen Konstruktor für TEinType:
Code:
struct TEinType
{ public string Name; public int SequenceNumber; public TEinType(string Name,int SequenceNumber) { this.Name=Name; this.SequenceNumber=SequenceNumber; } } class ... { TEinType[] TTypenArray = new TEinType[]{new TEinType("Ein Name",100), new TEinType("Noch ein Name",200)}; } |
Re: "Array of record" in C#?
Dein Type in c#:
Code:
Jetzt gehst du auf File\New\New File\typed HashTable
public class EineKlasse
{ static int fortlaufendeNummer; static EineKlasse() { fortlaufendeNummer = 0; } int sequenceNumber; public int SequenceNumber { get { return sequenceNumber; } } public EineKlasse() { sequenceNumber = fortlaufendeNummer++; } } Der Hashtable verpasst du noch das hier (aus purer Faulheit :zwinker: )
Code:
Und dann kannst du es so benutzen:
public void Add(string key)
{ innerHash.Add(key, new EineKlasse()); }
Code:
Aber ich hoffe, dass du da keine Konstanten reinpackst!
internal class MainClass
{ public static void Main(string[] args) { EineKlasseHashTable table = new EineKlasseHashTable(); table.Add("eins"); table.Add("zwei"); table.Add("drei"); table.Add("vier"); Console.WriteLine(table["eins"].SequenceNumber); Console.WriteLine(table["zwei"].SequenceNumber); Console.WriteLine(table["drei"].SequenceNumber); Console.WriteLine(table["vier"].SequenceNumber); } } Konstanten gehören in enums und nirgenswo anders hin! ;) |
Re: "Array of record" in C#?
Nein, das wird die Grundlage für eine separate Klasse für meine Anzeige im PropertyGrid. Ich muss die Sequenznummern allerdings fest vorgeben und nicht der Reihe nach hochzählen, weil diese anderweitig schon so festgelegt sind. Und da geht es eben nicht 1, 2, 3, 4, ... sondern es kann durchaus 100, 200, 500, 600, 800, ... sein.
Wie gesagt, in Delphi hätte ich den Typ deklariert und dann alle Namen und Nummern in ein Array dieses Typs eingetragen. Wenn ich was ändern oder erweitern muss, dann kann ich´s an einem zentralen Ort machen und muss mich nicht im Programmcode damit befassen. |
Re: "Array of record" in C#?
Ich hab´s mir anders überlegt. Vorrecht des Programmierers. :stupid: Ich haue das ganze Zeug in eine XML-Datei, die ich dann einfach auslese. Dann kann ich gleich die benötigten Klassen für den Tree-View und das PropertyGrid erzeugen und spare mir das Hantieren mit dieser Hilfsklasse.
@Robert: Das wird einer von den etwas schwierigeren Editoren. ;) |
Re: "Array of record" in C#?
Ich kapriere auch gar nicht wo du die statischen Zahlen hernimmst? :gruebel:
Zum Thema XML: Schaue dir mal den XmlSerializer an. Prima Sache, da du mit 1-2 Zeilen eine XmlDatei in eine Instanz oder sogar eine ganze Collection bekommst. :) |
Re: "Array of record" in C#?
Zitat:
Code:
In einem Editor muss ich schätzungsweise einen Knotenpunkt anbieten (Tree-View), damit der geneigte Anwender seine Aktion schön bequem dort einfügen kann. *händezumhimmelstreck* Seid verflucht, RAD und WYSIWYG! :stupid:
<Custom Action="MeineFehlerMeldung" After="AppSearch"/>
Wenn ich allerdings so darüber nachdenke ... :gruebel: ... Also ich brauche eigentlich keinen Editor. Ich komme auch mit dem Skript klar. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz