mikrocontroller.net

Forum: PC-Programmierung [C#] Klasse - Indexer


Autor: Dex Dexter (dexter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich habe folgenden Code:
namespace Config
{
  public class AppConfig : Object
  {
    private string[] user = new string[8];

    public string this[int i]
        {
            get { return user[i]; }
            set { user[i] = value; }
        }

Wie kann ich nun innerhalb der Klasse den Array's einen (nicht 
definierten) Wert zuweisen?

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi dexter,

was genau verstehst Du denn unter "einen (nicht definierten) Wert 
zuweisen"?

Nicht definiert oder zuweisen? Das schließt sich IMHO aus. Im Übrigen 
ist es unter .NET gewährleistet, daß beim Instantiieren eines Arrays 
(new []) die Array-Elemente auf einen definierten Wert initialisiert 
werden (z.B. 0 bei int-Arrays, null bei Objektreferenz-Arrays, ...). Im 
Fall von string-Referenzen ist dies null. Vermutlich meinst Du diesen 
Wert mit "undefiniert". Wenn ein Array einmalig beim Erzeugen eines 
Objektes vorbelegen will, nimmt man dafür einen Konstruktor:
namespace Config
{
  public class AppConfig : Object
  {
    private string[] user;
    public AppConfig()
    {
        user = new string[8];
        foreach( string u in user )
        {
            u = string.Empty;
        }
    }
  }
  public string this[int i]
  {
      get { return user[i]; }
      set { user[i] = value; }
  }
}
Übrigens ist die explizite Ableitung von Object überflüssig: Jede Klasse 
erbt automatisch von Object.

Gruß
Markus

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus "einen (nicht definierten) Wert zuweisen" kann man alles mögliche 
herauslesen:
- Nullable-Typ wie z.B. bool? xyz, was nur mit Werttypen funktioniert 
(Referenztypen können das automatisch)
- soll die Variable initialisiert werden wie z.B.
  private string[] user = new string[8] { "1", "2", "3" ... };
  
- wenn's tatsächlich um Anwendungseinstellungen geht, wäre die 
eingebaute Lösung mit ApplicationSettingsBase (wovon automatisch eine 
benutzbare Variante erzeugt wird, wenn man die Einstellungen unter 
Projekt->Eigenschaften->Einstellungen (Project->Properties->Settings) 
macht) sinnvoller

Autor: Dex Dexter (dexter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sry das war vielleicht falsch formuliert.. Ich wollte damit sagen, der 
Wert der zugewiesen wird ist nicht immer der gleiche. Er wird aus einer 
XML-Datei ausgelesen.

Das ganze wird in einem ProbertyGridEx verwendet:
property.Add("User", ref me, string Array (this[0]), false, ...);

Beim eintrag "string Array" steht sonst der String Name.
namespace Config
{
  public class AppConfig : Object
  {
    private string[] user = new string[8];

    public string User
        {
            get { return user; }
            set { user = value; }
        }
    ...
    property.Add("User", ref me, "User", false,...);
    ...
  }
}

Meine Frage ist nund wie ich das bei dem Array mache...

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welches PropertyGridEx?

Autor: Dex Dexter (dexter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist eine erweiterung vom PropertyGrid. http://www.codeproject.com
Da habe ich gleich die Möglichkeit alle Daten in einem XML 
abzuspeichern.

Aber eigentlich geht es ja nur um die Frage, wie ich den Array dort 
eingebe...

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses http://www.codeproject.com/KB/tabs/PropertyGridEx.aspx?
Dann steht unten in den Kommentaren ein VB-Beispiel.
Private Sub Form1_Load(ByVal sender As Object, ByVal e As   System.EventArgs) Handles Me.Load
    Dim PrtyGrid As New PropertyGridEx.PropertyGridEx
    Dim Texts As String() = {"ab", "cd", "ef", "jk", "lm", "op"}
    Me.Controls.Add(PrtyGrid)
    With PrtyGrid
        .ShowCustomProperties = True
        .Item.Add("Prove", Texts, True, "Category", "Thi's the description field", True)
        .Refresh()
    End With
End Sub

Autor: Dex Dexter (dexter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daraus werde ich nicht wirklich schlau...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.