DataRowView-Klasse Zugriff



  • // Create a DataTable with one column.
        DataTable table = new DataTable("Table");
        DataColumn column = new DataColumn("Column");
        table.Columns.Add(column);
    
        // Add ten rows.
        DataRow row;
        for (int i = 0; i < 10; i++)
        {
            row = table.NewRow();
            row["Column"] = "item " + i;  // hier meine Frage
            table.Rows.Add(row);
        }
    

    Hallo,

    was macht row["Column"] =

    Existiert diese Zugriffmoeglichkeit nur bei der DataRowView-Klasse ?
    Ich kenne das sonst nur bei dictionary



  • Das ist die Implementierung des Index-Operators Indexer: DataRow.Item-Eigenschaft: (String) (In der Doku wird die Indexer Eigenschaft immer als Item bezeichnet, da dies der interne Name dafür ist).



  • Zusätzlich von dem durch Th69 gesagtem und dem Inhalt des ersten Links sei gesagt, dass der Indexer grundsätzlich jeden beliebigen Typen haben kann.

    Ein einfacher Anwendungsfall der mir einfällt für eigene Klassen:

    public class SettingsEntry
    {
       public string Name{get; set; }
       public string Value {get; set; }
    }
    
    public class Settings : List<SettingsEntry>
    {
        public string this[string name]
        {
           get { return this.SingleOrDefault((entry) => entry.Name.Equals(name))?.Value; }
        }
    }
    

    Beispiel: IDEOne

    Klar, die Klassen ist stumpfsinnig da über das Dictionary bzw. die Settings-Klasse handlebar aber das zeigt die Herangehensweise denke ich sehr einfach.



  • cool danke.

    Die Nebelschwaden haben sich gelichtet 🙂


Anmelden zum Antworten