Warum funktionieren meine anonymen Typen nicht in Clay, wenn Sie VB.Net verwenden, sondern in C # arbeiten?

9

Ich habe Ton in VB.Net ausprobiert aber ich fand, dass ich nicht alles zum Funktionieren bringen konnte.

Hier ist Clay

Dies funktioniert in C #

%Vor%

aber das funktioniert nicht in VB.Net

%Vor%

Ich bekomme diese Fehlermeldung in VB.Net:

%Vor%

Ich bin nicht 100% sicher, wie ich das lösen kann, wenn ich es überhaupt lösen kann. Ich vermute, die VB.Net-Implementierung von anonymen Typen ist etwas anders.

Ich bekomme den Fehler in dieser Zeile:

%Vor%

Ich würde mich freuen, wenn mir jemand das erklären könnte.

Die IL scheint anders zu sein.

Für VB ist das private Feld Latinname das:

%Vor%

Für C # ist es:

%Vor%

Und die öffentliche Methode Get_LatinName ist dies.

VB:

%Vor%

C #:

%Vor%

Und das sind die wichtigsten Methoden:

VB:

%Vor%

C #:

%Vor%

Die C # - und VB-Version ist nicht gleich. Scheint so, als ob die C # Version viel mehr macht.

    
chrissie1 07.05.2011, 17:57
quelle

1 Antwort

2

Ich weiß nichts über Clay, aber es gibt einen potenziell wichtigen Unterschied zwischen anonymen C # -Typen und VB-Typen: C # anonyme Typen immer haben schreibgeschützte Eigenschaften , während VB standardmäßig veränderbar sind.

Nur die schreibgeschützten Eigenschaften werden bei der Erzeugung von Gleichheit und Hashcode in VB verwendet. Diese können mit dem Schlüsselwort Key angegeben werden. Um näher an Ihrem C # -Code zu sein, sollte der VB sein:

%Vor%

Probieren Sie es aus und sehen Sie, ob es hilft:)

    
Jon Skeet 07.05.2011 18:04
quelle

Tags und Links