VB.NET tương đương với C # “As”


79

Tương đương trong VB.NET của từ khóa C # As , như trong phần sau là gì?

var x = y as String;
if (x == null) ...

Câu trả lời:


102

Đó là TryCast:

Dim x As String = TryCast(y, String)
If x Is Nothing Then ...

4
+1 Mặc dù tôi tin rằng TryCastkhông chính xác tương đương với asvì TryCastkhông hoạt động với các loại giá trị?
— MarkJ

7
@Mark: Toán tử as cũng không hoạt động trên các kiểu giá trị trong C #.
— Hans Passant

2
Nó hoạt động cho các kiểu giá trị nullable ... Bạn có thể làm: var x = y as int ?; if (x == null) ... vì vậy bạn nên có thể làm Dim x = TryCast (y, System.Nullable (Tất Integer)) trong VB
— JoelFan

2
Điều này chỉ hoạt động trong những trường hợp rất chọn lọc vì C # tự động áp dụng chuyển đổi quyền anh thành "y". Nó không thể chuyển đổi, ví dụ, một nhân đôi thành một int?
— Hans Passant

1
@HansPassant C # sẽ hầu như không bao giờ "implicity" chuyển đổi một loại nguyên thủy (hoặc bất kỳ loại) khác, bạn sử dụng các phương pháp Convert.ToXXX
— enorl76


6

TryCast:

Dim x = TryCast(y, String)
if (x Is Nothing) ...

5

Của bạn đây:

Mã C #:

var x = y as String;
if (x == null) ...

VB.NET tương đương:

Dim x = TryCast(y, String)
If (x Is Nothing) ...



0

Bạn có thể sử dụng nó với ?:

TryCast(item, String)?.Substring(10)

Nó cho phép bạn quản lý nullable mà không cần if:)


1
Có vẻ như câu hỏi không phải là về ternary operator..Elaborate câu trả lời của bạn
— user9405863
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.