2012-09-06 12 views
8

thể trùng lặp:
C# okay with comparing value types to nullTại sao C# cho phép điều này? (Null kiểm tra để int)

Tại sao C# cho phép:

class MyClass 
{ 
    public int MyInt; 
} 

static void Main(string[] args) 
{ 
    MyClass m = new MyClass(); 
    if (m.MyInt == null) // <------------- ? 
     Console.Write("......"); 
} 

Resharper nói "biểu luôn luôn là sai" - đó hiển nhiên là - đúng từ MyIntint và không phải int?

Nhưng cách C# cho phép điều này biên dịch? Tài sản sẽ luôn ở đó và loại của nó là int!

+0

Bạn đang cố gắng đạt được gì thông qua thử nghiệm nếu MyInt là rỗng? – Eregrith

+0

@Eregrith Knowing .net tốt hơn. –

+0

@Mehmet đây không phải là câu hỏi của tôi .... –

Trả lời

-1

Tôi nghĩ rằng, điều này chỉ đơn giản là vì lý do tương tự tại sao biên dịch

if(false) 
    Console.WriteLine("never get here"); 

Cái gì đó sẽ không bao giờ thực hiện.

Đáng giá rằng, bạn không gặp lỗi, nhưng bạn sẽ nhận được cảnh báo về điều này.

+8

@downvoter: lý do hoặc downvoting cho sở thích? – Tigran

+2

Có rất nhiều người thích downvote mà không cần giải thích –

+0

@Tigran Tôi không downvote –