Microsoft wirft null auf einen Typ, sollte ich?

8

Ich arbeite an einem personalisierten Authentifizierungscode, der auf der Mitgliedschaft von Microsoft basiert. Während ich in die Profilfunktion schaute, habe ich mir die ProfileBase-Klasse in System.Web.dll v4.0.30319 angesehen. Es gibt einige Variablen auf Klassenebene, die als Typ deklariert sind, aber dann und dann mit einem Nullwert initialisiert werden, der in diesen Typ umgewandelt wird.

Zum Beispiel

%Vor%

Ich initialisiere normalerweise keine Variablen mit einem Klassenlevel. Ich frage mich, ob das etwas ist, was ich tun soll oder zu welchem ​​Zweck es dient.

Danke für jede Erleuchtung.

    
Jeff Reddy 29.05.2012, 18:34
quelle

5 Antworten

7

Sie sehen sich wahrscheinlich den disassemblierten -Code an. Dieses Casting wurde wahrscheinlich vom Disassembler hinzugefügt und war im Quellcode nicht vorhanden.

Sie müssen diese Art von Casting in Ihrem Code definitiv nicht tun.

    
Jakub Konecki 29.05.2012, 18:46
quelle
6

Das hat keinen Sinn; Ich glaube, null ist immer null - Ich kann mir sicherlich keine Beispiele in C-basierten Sprachen vorstellen, wo dies nicht der Fall ist. Es ist wahrscheinlich generierter Code und nicht Code, der explizit so geschrieben wurde.

    
Luke 29.05.2012 18:41
quelle
1

Was dieser Code sagt: Initialisiere einen Speicherbereich, um einen Typ von Exception zu halten, und weise dieser Variable den Wert NULL zu. Da Exception ein Referenztyp ist, kann es null sein. Es hat keinen Sinn, NULL auf Exception zu setzen. Vielleicht generierter Code?

    
RobertMS 29.05.2012 18:44
quelle
1

Die empfohlene Vorgehensweise besteht darin, statische Variablen zu initialisieren, für die sie deklariert sind.

Hier ist der eigentliche Microsoft-Code:

%Vor%     
AMissico 29.05.2012 18:45
quelle
1

Die Umwandlungen werden von Ihrem Decompiler generiert - die "offizielle" Quelle hat null , aber keine Besetzung. Ich sehe keinen Vorteil beim Hinzufügen der Besetzung.

  

Ich initialisiere normalerweise keine Variablen mit einem Klassenlevel. Ich frage mich, ob das etwas ist, was ich tun soll oder zu welchem ​​Zweck es dient.

Das null (welches ist in der Originalquelle) scheint hauptsächlich eine Stilsache zu sein. Da es normalerweise einfacher ist, ein statisches Feld in der Deklaration zu initialisieren, fügt das Hinzufügen von null ein bisschen Klarheit hinzu, dass es absichtlich nicht initialisiert ist. Es könnte auch dazu dienen, einen FXCop oder eine ähnliche Überprüfung der Stilrichtlinien zu bestehen.

    
Mark Brackett 29.05.2012 19:19
quelle

Tags und Links