2012-09-06 10 views
8

Eventuali duplicati:
C# okay with comparing value types to nullPerché C# consente questo? (Null controllo a int)

Perché C# consentono:

class MyClass 
{ 
    public int MyInt; 
} 

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

ReSharper dice "espressione è sempre false" - che è ovviamente - true dal MyInt è int e non int?

Ma come C# consente questo di compilare? La proprietà sarà sempre lì e il suo tipo è int!

+0

Cosa stai cercando di ottenere attraverso il test se MyInt è nullo? – Eregrith

+0

@Eregrith Conoscendo .net meglio. –

+0

@Mehmet questa non è la mia domanda .... –

risposta

-1

credo, questo è semplicemente per la stessa ragione per cui sarebbe compilare

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

Qualcosa che non sarebbe mai eseguito.

Vale la pena controllare che sì, non si ottiene errore, ma si ottiene un avviso su questo.

+8

@downvoter: ragione o downvoting per hobby? – Tigran

+2

Ci sono molte persone che amano il downvote senza spiegazione –

+0

@Tigran I non ha fatto downvote –