Khai báo và gán nhiều biến chuỗi cùng một lúc


76

Tôi đang khai báo một số chuỗi trống, vì vậy nó sẽ không gặp lỗi sau này.

Tôi đã đọc rằng đây là cách thích hợp:

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

Nhưng điều đó không hiệu quả. Tôi nhận được lỗi này: Klantnr does not exist in the current context.

Tôi đã làm gì sai?


4
Tại sao bạn làm điều đó trong C #. Nó không thể đọc được, trông xấu xí và giống như một đoạn Javascript được viết dở.
Matija Grcic

3
Bởi vì tôi muốn khai báo các biến vào lúc bắt đầu, và định nghĩa chúng một cách nhanh chóng sau (phụ thuộc vào đầu vào nhất định)
Mathlight

Câu trả lời:


149

Bạn có thể làm như sau:

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

Đầu tiên bạn phải xác định các biến và sau đó bạn có thể sử dụng chúng.


@Habib chúng ta có thể làm tương tự cho session và viewbag không? Như:Session["a"] = ViewBag.aa = "hello";
Dhwani

7
@Dhwani, không chắc chắn, tại sao bạn không thử nó
Habib

48

Bạn có thể làm theo cách này:

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

Hoặc bạn có thể khai báo tất cả chúng trước và sau đó ở dòng tiếp theo sử dụng theo cách của bạn.


2
Bạn nên sử dụng String.Empty (String.Empty tạo ra không có đối tượng để nó là hiệu quả hơn "", cũng có thể đọc là tốt hơn)
Matija Grcic

5
@plurby, string.Emptygiống như cách sử dụng "". Xem stackoverflow.com/questions/263191/…
Habib

"" sẽ được tạo một lần cho mỗi assembly hoặc một lần cho mỗi AppDomain (hiệu suất là không đáng kể nhưng tôi muốn hướng đến cách tiếp cận dễ đọc hơn).
Matija Grcic,

1
@plurby Tôi đã thêm tùy chọn đó dưới dạng nhận xét. Tuy nhiên, về mặt hiệu suất, có lẽ bạn sẽ không bao giờ nhận thấy bất kỳ sự khác biệt nào và một số người cũng thấy "" dễ đọc hơn. Tôi muốn nói rằng điều đó làm cho nó trở thành vấn đề sở thích cá nhân (hoặc nhóm), vì vậy tôi đã sử dụng giống như trong câu hỏi.
Botz3000

8

Một ví dụ về cái mà tôi gọi là Khai báo kết hợp:

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

Chỉ 2 xu của tôi, hy vọng nó sẽ giúp ai đó ở đâu đó.


4
Tôi đánh giá cao 2 xu của bạn. Nhưng nó có vẻ như câu trả lời của bạn là giống như của botz3000 (chỉ u sử dụng thụt đầu dòng)
Mathlight

1
Ah, tôi đã thấy bây giờ. Bạn nói đúng, điều này giống nhau, ngoại trừ điều này thực sự có định dạng phù hợp.
EternalWulf

5

Hãy thử với:

 string Camnr, Klantnr, Ordernr, Bonnr, Volgnr, Omschrijving;
 Camnr = Klantnr = Ordernr = Bonnr = Volgnr = Omschrijving = string.Empty;

4

Thử

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

và sau đó

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

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;

3

Xin nhắc lại: Không được phép nhập kiểu ẩn vartrong nhiều khai báo. Có thể có các lỗi biên dịch sau.

var Foo = 0, Bar = 0;

Các biến được định kiểu ngầm không được có nhiều bộ khai báo

Tương tự,

var Foo, Bar;

Các biến được định kiểu ngầm phải được khởi tạo


1

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


1
Vui lòng thêm một số giải thích cho câu trả lời của bạn.
Suraj Kumar,

1

Tất cả thông tin đều có trong các câu trả lời hiện có, nhưng cá nhân tôi mong muốn có một bản tóm tắt súc tích, vì vậy đây là một nỗ lực về nó; các lệnh sử dụng intcác biến cho ngắn gọn, nhưng chúng áp dụng tương tự cho bất kỳ kiểu nào, bao gồm cả string.

Để khai báo nhiều biến :

  • hoặc: khởi tạo chúng từng cái :
int i = 0, j = 1; // declare and initialize each; `var` is NOT supported as of C# 8.0
  • hoặc: khởi tạo tất cả chúng thành cùng một giá trị :
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;

Những gì không hoạt động:

  • Bạn không thể sử dụngvar trong các câu lệnh trên, vì varchỉ hoạt động với (a) một khai báo có giá trị khởi tạo (từ đó có thể suy ra kiểu) và (b), kể từ C # 8.0, nếu khai báo đó là duy nhất trong câu lệnh (nếu không bạn sẽ gặp lỗi biên dịch error CS0819: Implicitly-typed variables cannot have multiple declarators).

  • Việc đặt giá trị khởi tạo chỉ sau biến cuối cùng trong câu lệnh nhiều khai báo chỉ khởi tạo biến cuối cùng :

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


0

Câu hỏi khá cũ nhưng trong trường hợp ai đó quay trở lại.
Câu trả lời này không nhỏ gọn như các câu trả lời khác ở trên, nhưng khá dễ đọc và dễ nhập hơn bằng cách sử dụng phím tắt chọn nhiều dòng trong Visual Studio [Alt + Shift + ↑] (hoặc các hướng khác)

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

Nhập tất cả các tên biến trên các dòng mới. Multi-Select phía trước họ một loại "chuỗi". Multi-Select đằng sau chúng và nhập "= string.Empty;".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.