2012-12-01 42 views
18

Thông tin tóm tắt về mã như sau. Mã này lấy một chuỗi các chuỗi và concants chúng như sau với một tuyên bố if ở giữa mà quyết định có nên concant hay không trên một trong số họ. Vấn đề là If(Evaluation, "", "") là phàn nàn nói rằng nó không phải là nullable hoặc phải là một nguồn tài nguyên .. Làm thế nào để tôi làm việc xung quanh này khi đánh giá chỉ đơn giản là kiểm tra một đối tượng để đảm bảo nó IsNot Không có gì và cũng là một tài sản trong đối tượng được kiểm tra như sau:Sử dụng câu lệnh IF nội dòng vb.net

Dim R as string = stringA & " * sample text" & _ 
    stringB & " * sample text2" & _ 
    stringC & " * sameple text3" & _ 
    If(ApplyValue IsNot Nothing AndAlso ApplyValue.CheckedBox Then ,StringD & " * sample text4" & _ 
    , NOTHING) 
stringE & " * sample text5" 

VS đang khiếu nại về applyValue. Bất kỳ ý tưởng?

Cần lưu ý rằng tôi đã thử các sau đây chỉ để xem nếu nó sẽ làm việc và VS là từ chối nó:

Dim y As Double 
Dim d As String = "string1 *" & _ 
    "string2 *" & _ 
    If(y IsNot Nothing, " * sample text4", "") & _ 
    "string4 *" 

Đây là những gì nó đang giảm sút y với:

'IsNot' requires operands that have reference types, but this operand has the value type 'Double'. C:\Users\Skindeep\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 13 16 WindowsApplication1 

Trả lời

38

sử dụng các IIF ternary biểu đánh giá

Dim R as string = stringA & " * sample text" & _ 
        stringB & " * sample text2" & _ 
        stringC & " * sameple text3" & _ 
        IIf(ApplyValue IsNot Nothing AndAlso ApplyValue.CheckedBox, StringD & " * sample text4", "") & _ 
        stringE & " * sample text5" 

EDIT: Nếu bạn sử dụng VB.NET từ ver 2008 trở đi bạn đồng sử dụng uld cũng là

IF(expression,truepart,falsepart) 

và điều này thậm chí còn tốt hơn vì nó cung cấp chức năng ngắn mạch.

Dim R as string = stringA & " * sample text" & _ 
        stringB & " * sample text2" & _ 
        stringC & " * sameple text3" & _ 
        If(ApplyValue IsNot Nothing AndAlso ApplyValue.CheckedBox, StringD & " * sample text4", "") & _ 
        stringE & " * sample text5" 
+0

Cảm ơn nhiều dự đoán tôi nên đọc kỹ về tuyên bố IIF này như tôi đã thấy trong bài viết khác ... – Skindeep2366

+2

+1 để đề xuất IF (biểu thức, truepart, falsepart). –

+0

@Steve Tôi đã thử ở trên có vẻ đúng nhưng nếu bạn nhìn vào chỉnh sửa của tôi, bạn sẽ thấy những gì nó đang nói .. Cần lưu ý rằng tôi biết rằng trong ví dụ của tôi tôi đã không được gán bất kỳ giá trị cho y. Trong mã thực tế, nơi này được sử dụng y được gán một giá trị hoặc vẫn là 0,0 Bất kỳ ý tưởng nào ??? Hơn nữa cần lưu ý rằng OP của tôi là chính xác cùng một điều bạn đăng, vấn đề thậm chí còn không nhìn ... Tại sao tôi nhận được một lá cờ VS trên biểu thức? – Skindeep2366

Các vấn đề liên quan