2013-03-13 10 views
17

có cách nào để sử dụng viết tắt để làm điều gì đó như thế này không?vb.net nếu viết tắt

If Not txtBookTitle.Text = String.Empty Then 
    objBook.DisplayName = txtBookTitle.Text 
End If 
+1

http://stackoverflow.com/questions/28377/iif-vs-if – djv

Trả lời

24
objBook.DisplayName = If(Not (txtBookTitle.Text = String.Empty), txtBookTitle.Text, objBook.DisplayName) 
+6

Đây là [1 ký tự dài hơn bản gốc] (http://www.lettercount.com/), bao gồm cả dấu cách. :) – Neolisk

+2

không đổ lỗi cho tôi, đổ lỗi cho vb không thực hiện một nhà điều hành ternary thích hợp: P –

+1

Có lẽ tôi đang thiếu một cái gì đó, nhưng không <> nhà điều hành làm việc trên dây? Tại sao sử dụng Không? –

6

Có hai phiên bản của câu lệnh if viết tắt. Hoặc Nếu (biểu hiện, một phần đúng, phần sai) hoặc if (biểu thức, phần sai)

objBook.DisplayName = If(String.IsNullOrEmpty(txtBookTitle.Text), txtBookTitle.Text) 
4

Sau code đang tương tự như ba dòng code của bạn:

objBook.DisplayName = IIF(String.IsNullorEmpty(txtBookTitle.Text),objBook.DisplayName, txtBookTitle.Text) 
+2

tôi không khuyên bạn nên sử dụng IIF. * Cả hai tham số S W được đánh giá * và có thể tạo ra các kết quả không mong muốn ví dụ * nếu bạn sử dụng các hàm. * Xem xét 'IIF (TRUE, JustPrintOK(), ImplodeTheUniverse()) '... chúng ta sẽ bị xử lý vì cả hai hàm sẽ được thực hiện bất kể điều kiện. Đối với VB> = 9 chỉ cần sử dụng 'IF' giống như ví dụ của bạn, nó sẽ làm việc mà không có vấn đề này. – Sharky

+0

Chính xác, người ta nên sử dụng 'If' và' AndAlso'/'OrElse' thay vì – specializt

4

Đây là phiên bản ngắn (81 ký tự):

If txtBookTitle.Text <> String.Empty Then objBook.DisplayName = txtBookTitle.Text 

Và tôi muốn điều này cho khả năng gỡ lỗi. Cũng dễ dàng chuyển đổi thành C#.

+3

Tôi nghĩ nó cũng rõ ràng hơn ... Nếu không txtBookTitle.Text = String.Empty –