2012-12-05 16 views
28

Ich habe einige Felder in einer C# -Klasse, die ich mit Reflektion initialisieren. Der Compiler zeigt CS0649 Warnung für sie:Deaktivieren/Unterdrücken Warnung CS0649 in C# für ein bestimmtes Feld der Klasse

Feld foo' is never assigned to, and will always have its default value null‘(CS0649) (Assembly-CSharp)

Ich möchte die Warnung für diese bestimmte Felder nur deaktivieren und lassen immer noch die Warnung für andere Klassen und andere Felder dieser Klasse angezeigt werden. Es ist möglich, CS0649 für das gesamte Projekt zu deaktivieren, gibt es etwas feinkörniger?

Antwort

51

könnten Sie #pragma warning verwenden zu deaktivieren und dann insbesondere Warnungen wieder aktivieren:

public class MyClass 
{ 
    #pragma warning disable 0649 

    // field declarations for which to disable warning 
    private object foo; 

    #pragma warning restore 0649 

    // rest of class 
} 

für eine erweiterte Antwort auf Suppressing “is never used” and “is never assigned to” warnings in C# finden.

+1

Ist nicht die führende Null erforderlich? – SeToY

+0

@SeToY: Danke, dass du das notiert hast; Fest. – Douglas

+0

@SeToY: Eigentlich nicht, sie sind nicht erforderlich. – Douglas

6
//disable warning here 
#pragma warning disable 0649 

//foo field declaration 

//restore warning to previous state after 
#pragma warning restore 0649 
3
public class YouClass 
{ 
#pragma warning disable 649 
    string foo; 
#pragma warning restore 649 
} 
+0

Was fügt Ihre Antwort zu den Fragen Lösung hinzu, die vor 5 Minuten noch nicht gepostet wurde? – SeToY

+3

Wahrscheinlich hat er die erste Antwort nicht gesehen. Danke trotzdem:) – iseeall

4

Ich glaube, dass es sich lohnt, kann die Warnung unter Hinweis darauf, auch unter Verwendung eines Feldinitialisierer unterdrückt werden. Das stört Ihren Code viel weniger.

public class MyClass 
{ 
    // field declarations for which to disable warning 
    private object foo = null; 

    // rest of class 
}