Laden...

Definition von Defaulteigenschaften

Letzter Beitrag vor 17 Jahren 4 Posts 976 Views
Definition von Defaulteigenschaften

(abgeleitet von ArrayFelder in Interfaces definieren)

Nur mal so interessehalber

Man kann ja in .NET Eigenschaften vzu Defaulteigenschaften machen

T this[int index] { get; set; }

über die man dann bequem per Indexer zugreifen kann.
Was mich wundert ist aber, dass da nirgendwo steht, wie die Eigenschaft dann heißen soll.

Der ILCode

.property instance !T Item
{
    .get instance !T System.Collections.Generic.IList`1::get_Item(int32)
    .set instance void System.Collections.Generic.IList`1::set_Item(int32, !T)
}

enthält ja aber den Namen der Eigenschaft. Heißen alle Defaulteigenschaften in C# immer Item? Die Sache ist auch die, dass das in VB.NET möglich ist, also muss es ja in C# gehen. Nur wie?

Default Property Item(ByVal index As Integer) As T
    Get
    Set(ByVal value As T)
End Property
 

Original von onlinegurke
Man kann ja in .NET Eigenschaften vzu Defaulteigenschaften machen

Ganz korrekt ist diese Beschreibung nicht. Der Indexer ist eine Art Property ohne Namen, welcher Index-Zugriff erlaubt.

Was mich wundert ist aber, dass da nirgendwo steht, wie die Eigenschaft dann heißen soll.

Eben ohne Namen....

Heißen alle Defaulteigenschaften in C# immer Item?

Indexer sind ein reines C#-Konzept. .NET kennt keine Indexer. Indexer werden imm in Funktionen mit get_item() umgewandelt.

Die Sache ist auch die, dass das in VB.NET möglich ist, also muss es ja in C# gehen.

VB.NET kennt keine Indexer. Dort gibt es aber aber parametrierbare Properties.

Original von onlinegurke
Die Sache ist auch die, dass das in VB.NET möglich ist, also muss es ja in C# gehen.

Wieso?

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

Original von onlinegurke
Die Sache ist auch die, dass das in VB.NET möglich ist, also muss es ja in C# gehen.

Wieso?

Weil VB.NET genau wie C# in Grunde genommen nur Eingabehilfen sind, und die eigentliche Programmiersprache doch IL ist.

Original von onlinegurke
Man kann ja in .NET Eigenschaften vzu Defaulteigenschaften machen

Ganz korrekt ist diese Beschreibung nicht. Der Indexer ist eine Art Property ohne Namen, welcher Index-Zugriff erlaubt.

Im IL Code steht das anders. Da gibt es (ich beziehe mich wie immer in diesem Thread auf die IList<T>-Schnittstelle) eine Eigenschaft, die Item heißt und ein Attribut, das besagt, dass Item die Defaulteigenschaft ist (System.Reflection.DefaultMemberAttribute)

VB.NET kennt keine Indexer. Dort gibt es aber aber parametrierbare Properties.

Die man per Default-Schlüsselwort zu Indexern machen kann.