Deklarieren und weisen Sie mehrere Zeichenfolgenvariablen gleichzeitig zu

76

Ich deklariere einige Zeichenfolgen, die leer sind, damit später keine Fehler auftreten.

Ich habe gelesen, dass dies der richtige Weg war:

string Camnr = Klantnr = Ordernr = Bonnr = Volgnr = Omschrijving = Startdatum = Bonprioriteit = Matsoort = Dikte = Draaibaarheid = Draaiomschrijving = Orderleverdatum = Regeltaakkode = Gebruiksvoorkeur = Regelcamprog = Regeltijd = Orderrelease = "";

Das geht aber nicht Ich erhalte diesen Fehler : Klantnr does not exist in the current context.

Was habe ich falsch gemacht?

Mathlight
quelle
4
Warum sollten Sie das in C # tun? Es ist nicht lesbar, sieht hässlich aus und ähnelt einem schlecht geschriebenen Javascript.
Matija Grcic
3
Weil ich die Variablen am Anfang deklarieren und sie später im
laufenden Betrieb

Antworten:

149

Sie können es tun wie:

string Camnr, Klantnr, Ordernr, Bonnr, Volgnr;// and so on.
Camnr = Klantnr = Ordernr = Bonnr = Volgnr = string.Empty;

Zuerst müssen Sie die Variablen definieren und dann können Sie sie verwenden.

Habib
quelle
@Habib können wir dasselbe für Session und Viewbag tun? Wie:Session["a"] = ViewBag.aa = "hello";
Dhwani
6
@ Dhwani, nicht sicher, warum versuchst du es nicht
Habib
47

Sie können dies folgendermaßen tun:

string Camnr = "", Klantnr = "", ... // or String.Empty

Oder Sie können sie alle zuerst deklarieren und dann in der nächsten Zeile Ihren Weg verwenden.

Botz3000
quelle
2
Sie sollten String.Empty verwenden (String.Empty erstellt kein Objekt, daher ist es effizienter als "", auch die Lesbarkeit ist besser)
Matija Grcic
5
@plurby, string.Emptyist das gleiche wie mit "". Siehe stackoverflow.com/questions/263191/…
Habib
"" wird einmal pro Assembly oder einmal pro AppDomain erstellt (die Leistung ist unbedeutend, aber ich wollte auf den Ansatz verweisen, der besser lesbar ist).
Matija Grcic
1
@plurby Ich habe diese Option bereits als Kommentar hinzugefügt. In Bezug auf die Leistung würden Sie jedoch höchstwahrscheinlich nie einen Unterschied bemerken, und einige Leute finden es auch einfacher, "" zu lesen. Ich würde sagen, das macht es zu einer Frage der persönlichen (oder Team-) Präferenz, also habe ich das gleiche wie in der Frage verwendet.
Botz3000
8

Ein Beispiel für das, was ich verkettete Deklarationen nenne:

string Camnr = "",
        Klantnr = "",
        Ordernr = "",
        Bonnr = "",
        Volgnr = "",
        Omschrijving = "",
        Startdatum = "",
        Bonprioriteit = "",
        Matsoort = "",
        Dikte = "",
        Draaibaarheid = "",
        Draaiomschrijving = "",
        Orderleverdatum = "",
        Regeltaakkode = "",
        Gebruiksvoorkeur = "",
        Regelcamprog = "",
        Regeltijd = "",
        Orderrelease = "";

Nur meine 2 Cent, hoffe es hilft jemandem irgendwo.

EternalWulf
quelle
4
Ich schätze deine 2 Cent. Aber es scheint, als ob Ihre Antwort dieselbe ist wie die von botz3000 (nur Sie verwenden Einrückungen)
Mathlight
1
Ah, ich habe es jetzt gesehen. Sie haben Recht, dies ist das gleiche, außer dass dies tatsächlich eine anständige Formatierung beinhaltet.
EternalWulf
5

Versuche es mit:

 string Camnr, Klantnr, Ordernr, Bonnr, Volgnr, Omschrijving;
 Camnr = Klantnr = Ordernr = Bonnr = Volgnr = Omschrijving = string.Empty;
Carlos Landeras
quelle
4

Versuchen

string     Camnr , Klantnr , Ordernr , Bonnr , Volgnr , Omschrijving , Startdatum ,    Bonprioriteit , Matsoort , Dikte , Draaibaarheid , Draaiomschrijving , Orderleverdatum , Regeltaakkode , Gebruiksvoorkeur , Regelcamprog , Regeltijd , Orderrelease ;

und dann

Camnr = Klantnr = Ordernr = Bonnr = Volgnr = Omschrijving = Startdatum = Bonprioriteit = Matsoort = Dikte = Draaibaarheid = Draaiomschrijving = Orderleverdatum = Regeltaakkode = Gebruiksvoorkeur = Regelcamprog = Regeltijd = Orderrelease = "";
Sajanyamaha
quelle
3
string Camnr , Klantnr , Ordernr , Bonnr , Volgnr , Omschrijving , Startdatum , Bonprioriteit , Matsoort , Dikte , Draaibaarheid , Draaiomschrijving , Orderleverdatum , Regeltaakkode , Gebruiksvoorkeur , Regelcamprog , Regeltijd , Orderrelease;
Camnr = Klantnr = Ordernr = Bonnr = Volgnr = Omschrijving = Startdatum = Bonprioriteit = Matsoort = Dikte = Draaibaarheid = Draaiomschrijving = Orderleverdatum = Regeltaakkode = Gebruiksvoorkeur = Regelcamprog = Regeltijd = Orderrelease = string.Empty;
Kishore Kumar
quelle
3

Nur zur Erinnerung: Implizite Eingabe varin Mehrfachdeklarationen ist nicht zulässig. Möglicherweise liegen die folgenden Kompilierungsfehler vor.

var Foo = 0, Bar = 0;

Implizit typisierte Variablen können nicht mehrere Deklaratoren haben

Ähnlich,

var Foo, Bar;

Implizit typisierte Variablen müssen initialisiert werden

Themenfeld
quelle
1

string a = "", b = a , c = a, d = a, e = a, f =a;

Louis
quelle
1
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu.
Suraj Kumar
1

Alle Informationen sind in den vorhandenen Antworten enthalten, aber ich persönlich wünschte mir eine kurze Zusammenfassung. Hier ist ein Versuch, dies zu tun. Die Befehle verwenden der intKürze halber Variablen, gelten jedoch analog für jeden Typ, einschließlich string.

So deklarieren Sie mehrere Variablen und :

  • entweder: initialisiere sie jeweils :
int i = 0, j = 1; // declare and initialize each; `var` is NOT supported as of C# 8.0
  • oder: initialisiere sie alle auf den gleichen Wert :
int i, j;    // *declare* first (`var` is NOT supported)
i = j = 42;  // then *initialize* 

// Single-statement alternative that is perhaps visually less obvious:
// Initialize the first variable with the desired value, then use 
// the first variable to initialize the remaining ones.
int i = 42, j = i, k = i;

Was nicht funktioniert:

  • Sie könnenvar die obigen Anweisungen nicht verwenden , da sie varnur mit (a) einer Deklaration funktionieren, die einen Initialisierungswert hat (aus dem der Typ abgeleitet werden kann), und (b) ab C # 8.0, wenn diese Deklaration die einzige in ist die Anweisung (andernfalls erhalten Sie einen Kompilierungsfehler error CS0819: Implicitly-typed variables cannot have multiple declarators).

  • Platzieren einen Initialisierungswert erst , nachdem die letzte Variable in einer Multiple-Deklarationen Anweisung die initialisiert nur letzten Variable :

    int i, j = 1;// initializes *only* j

mklement0
quelle
0

Ziemlich alte Frage, aber falls jemand zurückgeht.
Dies ist nicht so kompakt wie die anderen Antworten oben, aber ziemlich lesbar und einfacher zu tippen, wenn Sie die mehrzeilige Visual Studio-Auswahlverknüpfung [Alt + Umschalt + ↑] (oder andere Richtungen) verwenden.

string Camnr = string.Empty;
string Klantnr = string.Empty;

Geben Sie alle Variablennamen in neue Zeilen ein. Wählen Sie vor ihnen einen Typ "String" aus. Mehrfachauswahl dahinter und geben Sie "= string.Empty;" ein.

G.
quelle