Isï¼æ£æ¥å¯¹è±¡æ¯å¦ä¸ç»å®çç±»åå
¼å®¹ãä¾å¦ï¼ä¸é¢ç代ç å¯ä»¥ç¡®å®MyObjectç±»åçä¸ä¸ªå®ä¾ï¼æè
对象æ¯å¦ä»MyObjectæ´¾ççä¸ä¸ªç±»åï¼
if(obj is MyObject){}
å¦æææä¾ç表达å¼é空ï¼å¹¶ä¸ææä¾ç对象å¯ä»¥å¼ºå¶è½¬æ¢ä¸ºææä¾çç±»åèä¸ä¼å¯¼è´å¼åå¼å¸¸ï¼å is 表达å¼ç计ç®ç»æå°æ¯ trueã
å¦æå·²ç¥è¡¨è¾¾å¼å§ç»æ¯trueæå§ç»æ¯falseï¼åiså
³é®åå°å¯¼è´ç¼è¯æ¶è¦åï¼ä½æ¯é常å¨è¿è¡æ¶æ计ç®ç±»åå
¼å®¹æ§ã
注æï¼isè¿è¡ç¬¦ä¸è½éè½½ï¼isè¿è¡ç¬¦åªèèå¼ç¨è½¬æ¢ãè£
箱转æ¢ååæ¶è£
箱转æ¢ãä¸èèå
¶å®è½¬æ¢ï¼å¦æç¨æ·å®ä¹è½¬æ¢ãå¨Isè¿ç®ç¬¦ç左侧ä¸å
许使ç¨å¿åæ¹æ³ãlambda表达å¼å±äºä¾å¤ã
Object myObject = new Object();
Boolean b1 = (myObject is Object); true.
Boolean b2 = (myObject is Employee); false.
å¦æ对象å¼ç¨æ¯nullï¼isè¿ç®ç¬¦æ»æ¯è¿åfalseï¼å 为没æå¯æ£æ¥å
¶ç±»åç对象ã
isè¿ç®ç¬¦é常åä¸é¢è¿æ ·ä½¿ç¨ï¼
if (myObject is Employee)
{
Employee myEmployee = (Employee)myObject;
}
å¨è¿æ®µä»£ç ä¸ï¼CLRå®é
ä¼æ£æ¥ä¸¤æ¬¡å¯¹è±¡çç±»åãisè¿ç®ç¬¦é¦å
æ ¸å®myObjectæ¯å¦å
¼å®¹äºEmployeeç±»åãå¦ææ¯ï¼é£ä¹å¨ifè¯å¥å
é¨æ§è¡è½¬æ¢åï¼CLRä¼åæ¬¡æ ¸å®myObjectæ¯å¦å¼ç¨ä¸ä¸ªEmployeeãCLRçç±»åæ£æ¥å¢å äºå®å
¨æ§ï¼ä½è¿æ ·å¯¹æ§è½é æä¸å®å½±åãè¿æ¯å 为CLRé¦å
å¿
é¡»å¤æåé(myObject)å¼ç¨ç对象çå®é
ç±»åãç¶åï¼CLRå¿
é¡»éå继æ¿å±æ¬¡ç»æï¼ç¨æ¯ä¸ªåºç±»åå»æ ¸å¯¹æå®çç±»åï¼Employeeï¼ãç±äºè¿æ¯ä¸ä¸ªç¸å½å¸¸ç¨çç¼ç¨æ¨¡å¼ï¼æ以C#ä¸é¨æä¾äºasè¿ç®ç¬¦ï¼ç®çå°±æ¯ç®åè¿ç§ä»£ç åæ³ï¼åæ¶æåæ§è½ã
as:ç¨äºæ£æ¥å¨å
¼å®¹çå¼ç¨ç±»åä¹é´æ§è¡æäºç±»åç转æ¢ã
Employee myEmployee = myObject as Employee;
if (myEmployee != null)
{ }
å¨è¿æ®µä»£ç ä¸ï¼CLRæ ¸å®myObjectæ¯å¦å
¼å®¹äºEmployeeç±»åï¼å¦ææ¯ï¼asä¼è¿å对åä¸ä¸ªå¯¹è±¡çä¸ä¸ªénull
çå¼ç¨ãå¦æmyObjectä¸å
¼å®¹äºEmployeeç±»åï¼asè¿ç®ç¬¦ä¼è¿ånullã
注æï¼asè¿ç®ç¬¦é æCLRåªæ ¡éªä¸æ¬¡å¯¹è±¡çç±»åãifè¯å¥åªæ¯æ£æ¥myEmployeeæ¯å¦ä¸ºnullãè¿ä¸ªæ£æ¥çé度æ¯æ ¡éªå¯¹è±¡çç±»åå¿«å¾å¤ã
asè¿ç®ç¬¦çå·¥ä½æ¹å¼ä¸å¼ºå¶ç±»å转æ¢ä¸æ ·ï¼åªæ¯å®æ°¸è¿ä¸ä¼æåºä¸ä¸ªå¼å¸¸ãç¸åï¼å¦æ对象ä¸è½è½¬æ¢ï¼ç»æå°±æ¯nullãæ以ï¼æ£ç¡®çåæ³æ¯æ£æ¥æç»çæçä¸å¼ç¨æ¯å¦ä¸ºnullãå¦æä¼å¾ç´æ¥ä½¿ç¨æç»çæçå¼ç¨ï¼ä¼æåºä¸ä¸ªSystem.NullReferenceExceptionå¼å¸¸ã以ä¸ä»£ç 对æ¤è¿è¡äºæ¼ç¤ºï¼
Object o = new Object(); æ°å»ºä¸ä¸ªObject对象ã
Employee e = o as Employee; å°o转å为ä¸ä¸ªEmployee
e.ToString(); 访é®eä¼æåºä¸ä¸ªNullReferenceExceptionå¼å¸¸
å¤æ³¨ï¼
asè¿ç®ç¬¦ç±»ä¼¼äºå¼ºå¶è½¬æ¢æä½ãä½æ¯æ æ³è¿è¡è½¬æ¢ï¼åasè¿ånullèéå¼åå¼å¸¸ã
示ä¾ï¼
expression as Typeå®çæäºä»¥ä¸è¡¨è¾¾å¼ï¼ä½æ¯åªè®¡ç®ä¸æ¬¡expressionã
expression is Type ?(Type)expression : (Type)null
注æï¼asè¿ç®ç¬¦åªæ§è¡å¼ç¨è½¬æ¢åè£
箱转æ¢ãasè¿ç®ç¬¦æ æ³æ§è¡å
¶å®è½¬æ¢ï¼å¦æç¨æ·å®ä¹ç转æ¢ï¼è¿ç±»è½¬æ¢åºä½¿ç¨å¼ºå¶è½¬æ¢è¡¨è¾¾å¼æ¥æ§è¡ã
温馨提示:答案为网友推荐,仅供参考