Considérez ce code:
class Program
{
static void Main(string[] args)
{
string s = null;
bool b = s is string;
Console.WriteLine(b);
}
}
3 Réponses :
La variable s code> est une référence qui peut potentiellement pointer sur l'emplacement d'une chaîne en mémoire, mais vous ne l'avez pas encore signalé à une chaîne. Il pointe de "null". Lorsque vous demandez s est la chaîne code> que vous dites "Est-ce que la référence s code> pointe vers l'emplacement d'une chaîne en mémoire 'et dans votre cas, la réponse est" non ". / p>
Le mot clé NULL est un littéral qui représente une référence nulle, celle qui
ne fait référence à aucun objet fort>. p>. blockQuote> http://msdn.microsoft.com/en-us/library/ edakx9da.aspx p>
s est la chaîne code> est false cars code> ne fait pas référence une instance deString code> -s code> est null. p>
Lors de l'évaluation de votre déclaration, le temps d'exécution doit d'abord suivre forte> la référence à laquelle la variable se réfère. Ce n'est qu'alors qu'elle puisse évaluer l'objet référencé pour déterminer s'il s'agit bien d'une chaîne. depuis un Vous pouvez utiliser l'opérateur Ceci est en fait l'exemple particulier donné par Eric Lippert dans un article de blog sur ce sujet très sujet: P> J'ai remarqué que l'opérateur est incompatible dans C #. Vérifiez ceci: p>
null code> référence référence à aucun objet, ce n'est pas une chaîne. En fait, ce n'est rien du tout. P> typeof code> pour obtenir l'objet type code> correspondant à la chaîne plutôt que de comparer un Objet référencé, si c'est votre objectif ultime. P>
string s = null; // Clearly null is a legal value of type string
bool b = s is string; // But b is false!
Je ne vois pas comment le type de type de code> serait de toute aide dans cette situation.
@ M-Y Si le OP recherche le type code> objet de chaîne, il peut utiliser typeof code> au lieu du est code> opérateur.
S code> n'est pas une chaîne, c'est une référence null. Si cela faisait référence à quelque chose, que quelque chose serait une chaîne.Cependant 'bool b = typeof (s) est une chaîne;' donnerait le résultat attendu
non je ne reçois pas de référence null
Permettez-moi de poser une question d'assistance: quelle est la classe du
null code>?Lire Quelle est la signification de IS est par Eric Lippert :)
Voir msdn.microsoft.com/en-us/ Bibliothèque / scekt9xw (v = vs.71) .aspx
Il y a une différence entre
est code> dans la langue anglaise etest code> dans la langue de programmation C #.@DAVESHAW YESSSSSSSSSSSSSS