2016-06-06 23 views
1

Meine Codedatei hat viele Klassen. Die meisten Felder werden nie verwendet, da sie in keinem anderen Code bereits referenziert sind. Es gibt jedoch nur ein Feld, das eine Warnung "das Feld wird nie verwendet" generiert. Was bedeutet das wirklich?Was bedeutet "Das Feld xxx wird nie benutzt"?

Das Feld ist zufällig das erste in der ersten Klasse in der Datei. Ich dachte, vielleicht nur der erste in der Datei eine Warnung generiert, also habe ich die Klasse weiter nach unten bewegt, aber die Warnung ist immer noch auf diesem Feld. Der Feldname ist mids und ich habe überprüft, und es ist kein C# reserviertes Wort.

Es ist so, dass dieses Feld mir Probleme macht, wenn ich versuche, eine JSON-Kette der Klasse zu deserialisieren.

+6

Warum haben Sie an erster Stelle ungenutzte Felder? –

+3

Was ist mit Zugriffsmodifizierer dieser Felder? Sind alle von ihnen "öffentlich", außer dass die einzige Warnung "privat" ist? Im Allgemeinen generiert der Compiler keine solche Warnung für das öffentliche Feld, da er nicht feststellen kann, ob das Feld im "äußeren" Code verwendet wird. –

+2

Anstatt nur zu beschreiben, wie der Code aussieht, können Sie ein vollständiges Beispiel erstellen, das das Problem veranschaulicht. Was bedeutet "mir Ärger machen"? Was ist das * tatsächliche * Problem? – David

Antwort

5

Die Warnung stammt aus der statischen Codeanalyse und ist ein Indikator für den Code-Geruch. Da Sie uns den betreffenden Code nicht gegeben haben, nehme ich eine wilde Schätzung und gehe davon aus, dass mids das einzige private Feld ist, während der Rest internal oder public ist.

+0

Ja, dies ist das einzige Feld, das 'privat' ist. Mein Augenscan war nicht gut genug, um es herauszubekommen, da dies "List mids" war, während alle anderen Felder einfache Werttypen waren ('public string xxx') und die Ausrichtung mich täuschen ließ. –

2

Diese Warnung bedeutet genau das, was sie sagt. Das Feld mids wird nirgendwo sonst im Code verwendet. Bei Verwendung bedeutet dies, dass nirgendwo der Feldwert festgelegt ist und nirgends auf den Feldwert zugegriffen wird.

Im Wesentlichen ist das Feld toter Code und der IDE/Compiler informiert Sie das Feld ist nutzlos und kann ohne Schaden für den Rest des Codes entfernt werden.