2011-09-02 39 views
6

Tôi muốn làm cho nó sao cho nếu giá trị của các subs không phải là "" thì các UL đi trước và sau nó và vào biến sL. Nếu người đăng ký là "" thì sL nhận giá trị ""Bối rối về? toán tử trong C#

var sL = (subs != "") ? "<ul>" + subs + "</ul>" : ""; 

Nhưng dường như nó không hoạt động.

Định dạng của tôi có chính xác không? hơn

+4

"Nó không có vẻ công việc "rất hiếm khi mô tả hữu ích về hành vi bạn đang thấy. Vui lòng cung cấp thêm chi tiết. –

Trả lời

11

Khi nghi ngờ, thêm dấu ngoặc:

var sL = subs != "" ? ("<ul>" + subs + "</ul>") : ""; 

Tuy nhiên, mã của bạn sẽ làm việc tốt đã; cú pháp đó là tốt.

3

này nên giống như thế này:

if (subs != "") 
{ 
    sL = "<ul>" + subs + "</ul>"; 
} 
else 
{ 
    sL = ""; 
} 

Nếu đây là những gì bạn đang hướng tới, sau đó tôi sẽ bao quanh "<ul>" + subs + "</ul>" trong ngoặc đơn, chỉ để đảm bảo trình biên dịch hiểu những gì bạn muốn.

0

Nếu người đăng ký là "" thì sL cũng trở thành "". Bạn chỉ sử dụng một phiên bản viết tắt của if. Những gì bạn đã viết chính xác giống như

string sL; 
if (subs != ""){ 
    sL = "<ul>" + subs + "</ul>"; 
}else{ 
    sL = ""; 
} 
+0

+1 cho dấu ngoặc nhọn trong cùng một dòng :)/chỉnh sửa: Chờ, điều này không đủ điều kiện cho bài đăng của bạn. Tôi sẽ nếu nó là legit! ;) – fjdumont

4

Susan, mã của bạn là chính xác và nó hoạt động. Tôi chỉ thử nghiệm trong LinqPad. Có lẽ biến số ss của bạn là null và không rỗng. Tôi khuyên bạn nên thay đổi dòng của bạn thành:

var sL = !string.IsNullOrEmply(subs) ? "<ul>" + subs + "</ul>" : ""; 
2

Tôi sao chép-pastaã mã của bạn và mã hoạt động tốt trên máy của tôi.

Có thể sự cố ở đâu đó khác?

Là một sang một bên, thay vì sử dụng string.IsNullOrEmpty qua = ""

var sL = !string.IsNullOrEmpty(subs) ? "<ul>" + subs + "</ul>" : string.Empty; 
1

Một tùy chọn khác không ai đề cập đến nhưng sẽ được sử dụng thay vì string.Concat+, như thế này:

var sL = (subs != "") ? string.Concat("<ul>", subs, "</ul>") : ""; 
Các vấn đề liên quan