èšäºã®
æåã®éšåã§ã¯ãTIOBEã®è©äŸ¡ã®èгç¹ããCïŒã«å¯ŸããVB.NETã®åªäœæ§ã®ãããã¯ã§ãã³ã¡ã³ãã«æŽ»çºãªåå¿ãèŠã€ãããŸããã ãããã£ãŠã
AngReloadã®
ã¢ããã€ã¹ ã«åŸã£ãŠã StackOverflowã®
åŸåãèŠãŠã¿ãŸãããã

CïŒã¯ãŸã 匷ãïŒ é·ãé話ãããŠããé©åœã¯ãã£ã³ã»ã«ãããŸããïŒ ã»ãã仲éïŒ ãã©ããïŒ TIOBEè©äŸ¡ã¯æ€çŽ¢ãšã³ãžã³ã¯ãšãªã«åºã¥ããŠãããSOè©äŸ¡ã¯è³ªåããã質åã®ã¿ã°ã«åºã¥ããŠããŸãã ãããããVB.NETã®éçºè
ã¯ãå°éæ§ã®ãªãå€ãã®äººã
ãå«ããŠãåã«StackOverflowã®ååšãç¥ããªãã®ã§ããããïŒ ãŸãã¯ãGoogleããŸãã¯Bingãä»ããŠããã«ãã©ãçããã®ã«ã質åã®ä»æ¹ãåãããªãã®ã§ãã ãŸãã¯ãååãªMiscrosoftã®ããã¥ã¡ã³ãããããããã€ãã®è³ªåã¯ãã¹ãŠåçæžã¿ã§ãã
ãããã«ããŠããVB.NETã®ã·ã§ã¢ã¯ç®ç«ã£ãŠå®å®ããŠããŸãããããªã¥ãŒã ã«é¢ããŠã¯ç¬¬äžäœã§ã¯ãããŸããã ãããŠããã¡ããããã®ãããªçµæã¯ãã¶ã€ããŒãšèšèªéçºè
ã®åŒ·åãªããŒã ãªãã§ã¯äžå¯èœã§ããã 以äžã¯ããã®ããŒã ã®ã¡ã³ããŒ
Anthony Greenã«ããèšäºã®ç¿»èš³ã®2çªç®ã®éšåã§ãã
å
容
é衚瀺ã®ããã¹ãã³ã³ããŒãžã§ã³æ°
衚çŸ
ã³ã³ããŒãžã§ã³æ°
34.ããŒã«å€æ
Boolean Trueã笊å·ä»ãæ°å€åã«å€æãããš
-1çæããã笊å·ãªãåã«å€æãããšãã®åã®æå€§å€ãåŸãããŸãããCïŒã§ã¯ãã®ãããªå€æã¯ãããŸããã ãã ãã
Convert.ToInt32ã¡ãœããã¯ãããšãã°
Trueã
1ã«å€æããããã
ILæãé »ç¹ã«è¡šçŸãããŸãã éæ¹åã§ã¯ã
0以å€ã®
0ã¯
True倿ãã
True ã
ãªãã§ïŒ VBã
-1ãã
1ã䜿çšããããšã奜ãçç±ã¯ããã¹ãŠã®èšèªã§ãããåäœã®0ïŒãã¹ãŠã®ãããã0ã«èšå®ãããïŒã®åŠå®ã
-1 ïŒãã¹ãŠã®ãããã
1èšå®ãããïŒã§ããããããã®å€ã䜿çšãããšè«ççããã³ãããåäœãçµã¿åããããããã§ã
And ã
Or Xorãªã©ã®æäœã
ãTrueãããã³ãFalseãè¡ãšã®éã®å€æããµããŒããããŠããŸãïŒãã¡ããã倧æåãšå°æåã¯åºå¥ãããŸããïŒã
35. Option StrictãOnã«èšå®ãããŠããå Žåã§ããEnumã¿ã€ãéããã³Enumã¿ã€ããšãã®ããŒã¹ã¿ã€ãéã®å€æã¯å®å
šã«ç¡å¶éã§ãã
å²åŠçãªèгç¹ãããèšèªã¯åºæ¬çãªæŽæ°åã®ååä»ã宿°ã®ã»ãããšããŠã§ã¯ãªãã
Enumåãåç
§ããŸãã ãããæãæçœãªå Žæã¯å¹³çã§ãã æŽæ°ãåæå€ãšæ¯èŒããããšã¯åžžã«èš±å¯ãããŸãããCïŒã§ã¯ããã¯ãšã©ãŒã«ãªããŸãã
ã¹ããŒãªãŒã¿ã€ã ïŒ Roslyn APIã¯å€ãã®å
éšæ¹èšãçµãŠããŸãã ãããããããã®ããããã§ãåèšèªã«
SyntaxKindåæãå²ãåœãŠãããããŒããã©ã®æ§æã衚ããã
IfStatementãŸãïŒäŸãã°ã
IfStatement ã
TryCastExpression ïŒã éçºè
ã¯èšèªããæœè±¡åããããšããAPIã䜿çšãã
SyntaxKindå€ã®1ã€ã
IntegerãšããŠã®ã¿
SyntaxKind ãçã®
Integerãš
SyntaxKindæ¯èŒãããšãã«ãšã©ãŒãåãåããããã®éçºè
ã¯ããã«ç§ã®ãªãã£ã¹ã«æ¥ãŠãäžæºãèšããŸããïŒ
å®è£
ã®è©³çްã«ã€ããŠã¯ããã£ã¹ãã匷å¶ããå¿
èŠããããŸããïŒãæ°å¹ŽåŸãAPIã®æ¬¡ã®æ¹èšæã«ãèšèªåºæã®åãæãããããã£ïŒ
Property Kind As SyntaxKind ïŒãå®å
šã«åé€ãããã¹ãŠã®APIã
Integerãè¿ãå§ããŸããã ãã¹ãŠã®CïŒã³ãŒããç Žæãããã¹ãŠã®VBã³ãŒãã¯äœãèµ·ãããªãã£ããã®ããã«æ©èœãç¶ããŸããã
å°ãåŸã«ããã®ããããã£ã®ååã
RawKindã«å€æŽããèšèªåºæã®æ¡åŒµã¡ãœãã
Kind()ã远å ããããšã«ããŸããã ã¡ãœãããåŒã³åºãããã«æ¬åŒ§ãå¿
èŠã ã£ãããããã¹ãŠã®CïŒã³ãŒããå£ããŸããããVBã§ã¯å¿
èŠãªãã£ãããããã¹ãŠã®VBã³ãŒãã¯ãäœãèµ·ãããªãã£ããã®ããã«åã³æ©èœãç¶ããŸããã
36.æŽæ°æŒç®ã®ãªãŒããŒãããŒ/è² ã®ãªãŒããŒãããŒã®ãã§ãã¯ã¯ãã³ã³ãã€ã«ç°å¢ïŒãããžã§ã¯ãèšå®ïŒã«ãã£ãŠå®å
šã«å¶åŸ¡ãããŸãããVBãšCïŒã¯ç°ãªãããã©ã«ãå€ã䜿çšããŸãã VBã§ã¯ããªãŒããŒãããŒãã§ãã¯ã¯ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸã
æŽæ°åã«ã¯ç¯å²ããããããããšãã°ã
Byteã¯0ã255ã®å€ã衚ãããšãã§ããŸãã
Byte 1ã
Byte 255ã«è¿œå ãããšã©ããªããŸããã ãªãŒããŒãããŒ/ã¢ã³ããŒãããŒãç¡å¹ãªå Žåãå€ã¯0ã«ã¹ã¯ããŒã«ããŸããåã笊å·ä»ãã®å Žåãè² ã®æå°æ°ïŒããšãã°ã
SByte -128ïŒã«ã¹ã¯ããŒã«ããŸãã ããã¯ãããããããã°ã©ã ã®ãšã©ãŒã瀺ããŠããŸãã ãªãŒããŒãããŒ/ã¢ã³ããŒãããŒã®ãã§ãã¯ãæå¹ã«ãªã£ãŠããå ŽåãäŸå€ãã¹ããŒãããŸãã æå³ãçè§£ããããã«ããã®ç¡å®³ãª
Forã«ãŒããèŠãŠãã ããã
Module Program Sub Main() For i As Byte = 0 To 255 Console.WriteLine(i) Next End Sub End Module
githubãœãŒã¹ã³ãŒãããã©ã«ãã§ã¯ããã®ã«ãŒãã¯VBã§äŸå€ãã¹ããŒããŸãïŒã«ãŒãã®æåŸã®å埩ã
Byteå¢çãè¶
ããããã§ãããã ãããªãŒããŒãããŒãã§ãã¯ããªãã«ãããšã255 iãåã³0ã«ãªãããã«ãŒãããŸãã
ã¢ã³ããŒãããŒã¯ããã®ã¿ã€ãã®æå°å€ãäžåããšæå€§å€ã«ãªããšããå察ã®ç¶æ³ã§ãã
ããäžè¬çãªãªãŒããŒãããŒã®ç¶æ³ã¯ãåçŽã«2ã€ã®æ°åãå ç®ããããšã§ãã äž¡æ¹ãšã
ByteãšããŠ130ãš150ã®çªå·ã
ByteãŸãã ããããåèšãããšãçãã¯280ã«ãªããByteã«åãŸããŸããã ããããããã»ããµã¯ãããèªèããŸããã 代ããã«ã圌ã¯çãã24ã ãšå ±åããŠããŸãã
ãšããã§ãããã¯å€æãšã¯é¢ä¿ãããŸããã 2ãã€ãã远å ãããš1ãã€ãã«ãªããŸãã ããã¯ããã€ããªæ°åŠã®æ©èœã§ãã ãã ããLongããIntegerãžã®å€æã詊ã¿ãå Žåãªã©ã倿ãå®è¡ããããšã§ãªãŒããŒãããŒãçºçããããšããããŸãã ãªãŒããŒãããŒããã§ãã¯ããã«ãããã°ã©ã ã¯ãã®å€æ°ã«åãŸãç¯å²ã§äœåãªããããã¹ã¿ãããã«ããããŸãã
éãã¯äœã§ããïŒ ããã©ãŒãã³ã¹ã CLRã®ãªãŒããŒãããŒããã§ãã¯ããã«ã¯ãä»ã®ãã¹ãŠã®ã»ãã¥ãªãã£ãã§ãã¯ãšåæ§ã«ãéãã§ãã¯ãªãã·ã§ã³ã«æ¯ã¹ãŠèšç®æéãå°ãé·ããªããŸãã VBã¯ãéçºè
ã®çç£æ§ãèšç®ããã©ãŒãã³ã¹ãããéèŠã§ãããšããå²åŠã«åºã¥ããŠãããããããã©ã«ãã§ã¯ã»ãã¥ãªãã£ãã§ãã¯ãæå¹ã«ãªã£ãŠããŸãã
仿¥ã®CïŒéçºããŒã ã¯ãããžã§ã¯ãã®ããã©ã«ãèšå®ã«ã€ããŠç°ãªã決å®ãäžã
ãããããŸããããæåã®CïŒéçºè
ã¯C / C ++éçºè
ããæ¥ãããšãèãããšããã®ã°ã«ãŒãã®äººã
ã¯ããããã³ãŒãããã以äžäœãããªãããšãèŠæ±ããããã»ããµãµã€ã¯ã«ãç ç²ã«ããå¯èœæ§ããããŸã;
ããã¯é£ããå²åŠçãªéãã§ãã
ãã¥ã¢ã³ã¹ïŒãªãŒããŒãããŒ/ã¢ã³ããŒãããŒãã§ãã¯ããªãã«ãªã£ãŠããå Žåã§ãã
SingleãŸãã¯
Doubleã®
PositiveInfinity ã
NegativeInfinity ã
NaNãã
Decimalãžã®å€æã¯äŸå€
Decimalã¹ããŒããŸãããããã®å€ã¯ååãšããŠDecimalã§è¡šçŸã§ããªãããã§ãã
37.æµ®åå°æ°ç¹æ°ãæŽæ°åã«å€æããã«ã¯ãåãæšãŠãã®ã§ã¯ãªãããã³ã«ãŒã®äžžãã䜿çšããŸã
VBã§1.7ãæŽæ°ã«å€æãããšãçµæã¯2ã«ãªããŸããCïŒã§ã¯ãçµæã¯1ã«ãªããŸããã¢ã¡ãªã«ä»¥å€ã®æ°åŠçèŠåã«ã€ããŠã¯äœãèšããŸãããã宿°ããæŽæ°ã«åãæ¿ãããšãæ¬èœçã«äžžããããŸãã ãããŠãããã°ã©ããŒã®ãµãŒã¯ã«ã®å€ã§ç§ãç¥ã£ãŠãã人ã¯èª°ãã1.7ã«æãè¿ãæŽæ°ã1ã§ãããšã¯èããŠããŸããã
å®éã«ã¯ãããã€ãã®äžžãæ¹æ³ããããVBïŒããã³Math.Roundã¡ãœããïŒã§äœ¿çšãããäžžãã®çš®é¡ã¯ãããã©ã«ãã§éè¡ã®äžžããŸãã¯çµ±èšå®¶ã®äžžããšåŒã°ããŸãã ãã®æ¬è³ªã¯ã2ã€ã®æŽæ°ã®äžéã®æ°å€ã«å¯ŸããŠãVBã¯æãè¿ãå¶æ°ã«äžžããããšã§ãã 1.5ã¯2ã«äžžãããã4.5ã¯4ã«äžžããããŸããåŠæ ¡ã§æããããããã«å®éã«æ©èœããªãã®ã¯ã0.5ããåãäžããããã«æããããŸããïŒæè¡çã«ã¯ããŒãããæšªã«äžžããïŒã ãããããã®ååã瀺ãããã«ãéè¡ã®äžžãã«ã¯ã倿°ã®èšç®ã䜿çšããŠãååã«äžžãããšãã«åå²ããåžžã«ãéãæž¡ããããåžžã«ãéãç¶æãããããªããšããå©ç¹ããããŸãã ã€ãŸããå€§èŠæš¡ãªã»ããã§ã¯ãããã«ããããŒã¿ã®æªã¿ãæçµçãªçµ±èšåå·®ã«å¶éãããŸãã
éãã¯ã©ãããæ¥ãŸããïŒ äžžãã¯ããçŽæçã§å®çšçã§ãããåãæšãŠãéããªããŸãã LOBã¢ããªã±ãŒã·ã§ã³ãç¹ã«VBAã§å®è¡ãããExcelãã¯ããªã©ã®ã¢ããªã±ãŒã·ã§ã³ã§VBã䜿çšããããšãæ€èšããå Žåãåã«å°æ°ç¹ä»¥äžã®æ¡ãåé€ãããšåé¡ãçºçããå¯èœæ§ããããŸãã
å€æã®æ¹æ³ã¯åžžã«ç©è°ãéžãåé¡ã§ãããæç€ºçã«ç€ºãå¿
èŠãããããšã¯æããã ãšæããŸããã1ã€ãéžæããå¿
èŠãããå Žåã¯...
38. NotInheritableã¯ã©ã¹ããã³ã³ãã€ã«æã«å®è£
ããªãã€ã³ã¿ãŒãã§ãŒã¹ãšã®éã§å€æããããšã¯ééãã§ã¯ãããŸããã
äžè¬çã«ãã€ã³ã¿ãŒãã§ã€ã¹å®è£
ã®NonInheritableã¯ã©ã¹ããã§ãã¯ããŠããå Žåããã®ã¿ã€ããšãã®ãã¹ãŠã®åºæ¬ã¿ã€ãã®ãã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ãç¥ã£ãŠãããããã³ã³ãã€ã«æã«ãã®ãããªå€æãå¯èœãã©ãããçè§£ã§ããŸãã åãç¶æ¿ãããå Žåããã®ãããªå€æãäžå¯èœã§ããããšã確信ããããšã¯ã§ããŸããããªããªããããã«ãã£ãŠåç
§ãããã©ã³ã¿ã€ã ãªããžã§ã¯ãã®åã¯ãå®éã«ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããããæŽŸçããåãæã£ãŠããããã§ãã ãã ããCOMçžäºéçšæ©èœã«èµ·å ããäŸå€ããããŸããã³ã³ãã€ã«æã«ãåãã€ã³ã¿ãŒãã§ã€ã¹ã«é¢ä¿ããŠããããšã衚瀺ãããªãå ŽåããããŸãããå®è¡æã«ã¯è¡šç€ºãããŸãã ãã®ããããã®ãããªå ŽåãVBã³ã³ãã€ã©ã¯èŠåãçæããŸãã
ãªãã§ïŒ VBãšCOMã¯ãå€ãè¿æã®åäŸã®é äžç·ã«è²ã¡ãŸããã ãã®ãããèšèªèšèšã«ã¯ãVBã.NET 1.0ã®ãªãªãŒã¹æã«COMã«ã®ã¿ååšããŠãããã®ã«å€å€§ãªæ³šæãæãããã€ãã®ãœãªã¥ãŒã·ã§ã³ããããŸãã
39. nullãæå³ã®ããåã«ã¢ã³ããã¯ïŒã¢ã³ããã¯ã¹ïŒããããšãããšãNullReferenceExceptionã§ã¯ãªãããã©ã«ãã®åã®å€ãçºçããŸãã
æè¡çã«ã¯ããã¯åç
§åã«ãåœãŠã¯ãŸããšæããŸãããããã§ãïŒ
CInt(CObj(Nothing)) = 0
ãªãã§ïŒ CInt(Nothing) = 0ã§ããã倿°ãå
¥åãããã©ããã«é¢ä¿ãªããèšèªã¯ããçšåºŠäžè²«ããŠããåŸåããããŸãã ããã¯ãçµã¿èŸŒã¿ã®æå³ã®ããåã ãã§ãªããããããæ§é ã«ââé©çšãããŸãã 詳现ã«ã€ããŠã¯
ãïŒ25ã®
æ ¹æ ãåç
§ããŠãã ããã
40.ããã¯ã¹åè§£é€ã¯ããªããã£ãåã®å€æããµããŒãããŸã
VBãšCïŒã®äž¡æ¹ã§ã
Shortã
Integerã«å€æã§ããŸãããããã¯ããã
Shortã
Integerã«å€æããããšãããšã©ããªããŸããïŒ VBã§ã¯ã
Shortã¯æåã«ã¢ã³ããã¯ãããæ¬¡ã«
Integer倿ãããŸãã CïŒã§ã¯ã
intã«å€æããåã«shortãæåã§ã¢ã³ããã¯ããªãéãã
InvalidCastExceptionãã¹ããŒãããŸãã
ããã¯ããã¹ãŠã®å
éšå€æãã€ãŸãããã¯æ°å€åãæååãšæ°å€åã®éã®å€æãæååãšæ¥ä»ïŒã¯ãã10鲿°ãããã³æ¥ä»ã¯ããªããã£ãåã§ãïŒã«é©çšãããŸãã
ãªãã§ïŒ ç¹°ãè¿ããŸãããäžè²«ããåäœã確ä¿ããããã«ãããã°ã©ã ãå®å
šã«åä»ããããŠããããObjectãšããŠåä»ããããŠãããããããªãã·ã§ã³ããå¥ã®ãªãã·ã§ã³ã«ãªãã¡ã¯ã¿ãªã³ã°ãããŠãããã©ããã äžèšã®
ïŒ39ãåç
§ããŠãã ããã
41. StringãšCharéã«ã¯å€æããããŸã
String ãæåã®æåã衚ãCharã«å€æãããŸããChar Stringåççãªæ¹æ³ã§ã®ã¿String倿ãããŸãã
ç§ä»¥å€ã®èª°ãVBã®æåãªãã©ã«ã®æ§æãèŠããŠããªãã®ã§ïŒèŠããŠã¯ãããŸããïŒã
42. StringãšCharé
åã®éã«ã¯å€æããããŸã
String ããã®ãã¹ãŠã®æåã§æ§æãããCharé
åã«å€æãããŸããCharé
åã¯ããã®ãã¹ãŠã®èŠçŽ ã§æ§æãããString倿ãããŸãã
æç¢ºã«ããããã«ããããã®å€æã¯æ°ãããªããžã§ã¯ããäœæããŸãããå
éšã®
Stringæ§é ã«ã¯ã¢ã¯ã»ã¹ã§ããŸããã
é¢çœãè©±ïŒ .NET 3.5ãš4.0ã®éã®
String.Joinãªå€æŽãèŠã€ããïŒãŸãã¯å ±åããŠã調æ»ããŠããïŒã®ã¯ã.NETããŒã ã2çªç®ã®
String.JoinãªãŒããŒããŒã
String.Joinã«
ParamArray修食åã远å ããããã§ãã ã æ£ç¢ºãªä»®å®ã¯æéã®çµéãšãšãã«å€±ãããŸãïŒããããè¯ãæ¹åã«ïŒããä¿¡ããŠããããã«ã
ParamArray修食åã䜿çšãããšã
Charé
åãæååã«å€æããå¥ã®èŠçŽ ãšããŠãã©ã¡ãŒã¿ãŒé
åã«æž¡ãããšãã§ããããã«ãªããŸããã æ¥œããããŒãã
43ããã³44ãæååããæ°å€åããã³æ¥ä»åãžã®å€æã¯ããªãã©ã«æ§æããµããŒãããŸãïŒéåžžïŒ
CInt("&HFF") = 255CInt("1e6") = 1_000_000CDate("#12/31/1999#") = #12/31/1999#
ããã¯ããŒã¹ãã¬ãã£ãã¯ã¹ã§æ©èœãã16鲿°ïŒãŸãã¯8鲿°ïŒå
¥åã
CInt("&H" & input)ã«å€æããéåžžã«äŸ¿å©ãªæ¹æ³ã䜿çšã§ããããã«ããŸãã æ®å¿µãªãããVBã©ã³ã¿ã€ã ã¯ãã€ããªãã¬ãã£ãã¯ã¹ïŒBãŸãã¯
1_000æ¡ã®ã°ã«ãŒã
1_000ããµããŒãããããã«æŽæ°ãããŠããªãããããã®å·çæç¹ã§ãã®å¯Ÿç§°æ§ã¯äœäžããŠããŸãããããã¯æ¬¡ã®ããŒãžã§ã³ã§ä¿®æ£ãããããšãé¡ã£ãŠããŸãã ç§åŠè¡šèšæ³ã¯æ©èœããŸãããã¿ã€ããµãã£ãã¯ã¹ããªããæ¥ä»å€æãæšæºã®æ¥ä»åœ¢åŒããµããŒããããããISO-8601ã§äœ¿çšãããJSON圢åŒãæ©èœã
CDate("2012-03-19T07: 22Z") = #3/19/2012 02:22:00 AM# ã
ãªãã§ïŒ 䟿å©ã以å€ã®çç±ã¯ç¥ããŸããã ããããïŒFFãU + FFã0xFFãªã©ã仿¥ã®ãããã¯ãŒã¯ã§ã»ãŒã©ãã«ã§ãããä»ã®äžè¬çãªåœ¢åŒã®ãµããŒããæäŸããããšæããŸãã ããã«ãããããçš®ã®ã¢ããªã±ãŒã·ã§ã³ã§ã®ç掻ã倧ãã«æ¥œã«ãªããšæããŸã...
45. CharåãšæŽæ°åã®éã®å€æã¯ããChar
äœïŒïŒïŒïŒïŒããããã¹ãŠã®è¿œå ã®å€æã«ã€ããŠèªãã åŸãããªãã¯é©ããŸãããïŒ VBã¯
Charãš
Integeréã®å€æãçŠæ¢ããŸãïŒ
CInt("A"c)ã¯ã³ã³ãã€ã«ãããŸãããCChar(1)ã¯ã³ã³ãã€ã«ãããŸããã
ãªãã§ïŒ äœãèµ·ãããã¯æç¢ºã§ã¯ãããŸããã éåžžããã®ãããªç¶æ³ã§VBã¯å®çšçãã€/ãŸãã¯çŽæçãªã¢ãããŒãã䜿çšããŸããã
CInt("1")ã衚çŸããããã«ãèªè
ã®ååã¯æ°å1ïŒæåå€1ïŒãæåŸ
ããååã¯æ°å49ïŒASCII / UTFã³ãŒãæå1ïŒã ååã®ã±ãŒã¹ã§èª€ã£ãéžæããã代ããã«ãVBã«ã¯ãæåãASCII / Unicodeã³ãŒãã«ãããã³ãã®éã«
ChrWãããã
AscWãš
ChrW倿ããããã®ç¹å¥ãªæ©èœã
ChrWãŸãã
衚çŸ
46.äœããªã<> null
VBã®ãªãã©ã«
Nothingã¯
nullãæå³ããŸããã ããã¯
ã䜿çšãããåã®ããã©ã«ãå€ããæå³ããåç
§åã®å Žåãããã©ã«ãå€ã¯nullã«ãªããŸãã éãã¯ã次ã®ç¶æ³ã§äœ¿çšããå Žåã«ã®ã¿éèŠã§ãã
- äœãéèŠââãªã¿ã€ããåããŸããããããŠ...
- 圌ããããããŠããããšã¯ãæèããæããã§ã¯ãããŸããã
ãããäœãæå³ãããã説æããããã€ãã®äŸãèŠãŠã¿ãŸãããã
1ã€ç®ã¯ãå°ãå¥åŠãããããŸãããããã®ããã°ã©ã ããTrueããåºåãããšããçè§£ã«ã»ãšãã©ã®äººãæåããããšã¯ãªããšæããŸãã
Module Program Sub Main() Dim i As Integer = 0 If i = Nothing Then Console.WriteLine("True") End If End Sub End Module
githubãœãŒã¹ã³ãŒããã®çç±ã¯éåžžã«ç°¡åã§ãã
Integer (0)ããã®ã¿ã€ãã®ããã©ã«ãå€
Integer (0)ãšæ¯èŒããŠããŸãã ãã®åé¡ã¯ãNullèš±å®¹ã®æå³ã®ããåã远å ãããšVB2005 / 2008ã§çºçããŸãã ãã®äŸãèŠãŠãã ããïŒ
Module Program Sub Main() Dim i = If(False, 1, Nothing) End Sub End Module
githubãœãŒã¹ã³ãŒãã¿ã€ã
iã
Integer?ããšãã©ã®ããã«ææ¡ã§ã
Integer? ïŒ
Nullable(Of Integer) ïŒã ããããããã¯ããã§ã¯ãããŸããã
Nothingã³ã³ããã¹ãããåãååŸããããã®ã³ã³ããã¹ãã®å¯äžã®åã¯ç¬¬2ãªãã©ã³ãããååŸãããããã¯åçŽãª
non-nullable Integer ïŒæè¡çã«ã¯ã
Nothingã«ã¯åããã
NothingãïŒã ãã®åé¡ãèŠããã1ã€ã®æ¹æ³ã¯ã次ã®äŸã§ãã
Module Program Sub Main() M(Nothing) End Sub Sub M(i As Integer) Console.WriteLine("Non-nullable") End Sub Sub M(i As Integer?) Console.WriteLine("Nullable") End Sub End Module
githubãœãŒã¹ã³ãŒãç¹°ãè¿ãã«ãªããŸãããããã§ã¯çŽæçã«ã
Nothingã¯ãnullableããã³ãã远å ããèšèªã¯
nullableãåãå
¥ãããªãŒããŒããŒããéžæããŸãããããã§ã¯ãããŸããïŒã
non-nullable ãã¯ãæãå
·äœçããªã®ã§éžæããŸãïŒã å°ãªããšããCïŒã®nullã®ããã«ãåŒ
Nothingã¯
Integerã¯ãŸã£ããé©çšããããäŸå€ã¡ãœããã«ãã£ãŠnullableãªãŒããŒããŒããéžæããããšä»®å®ã§ããŸãããããã¯
Nothing = null (Is null?)ãšãã誀ã£ãèãã«åºã¥ããŠã
Nothing = null (Is null?) ã
NuanceïŒ VBã®
Nothingã«äžèŽããæ°ãã
defaultåŒãCïŒ7.1ã«è¿œå ãããŸããã
null代ããã«
defaultã䜿çšããŠCïŒã§äžèšã®3ã€ã®äŸããã¹ãŠæžãæãã
ãšããŸã£ããåãåäœã«ãªããŸãã
ããã«ã€ããŠäœãã§ããŸããïŒ ããã€ãã®ææ¡ããããŸããããŸã åè
ã¯ããŸããã
Nothingæå¹ãªåã«å€æããã nullãæå¹ãªæå¹ãªåã§ã¯nullã§ãªãããšãèŠåãããã³ã«èŠåã衚瀺ããŸãã- å®è¡æã®å€ã次ã®ããããã«ãªããã³ã«ã
NothingãChrW(0) ã ChrW(0) ã False ã #1/1/0001 12:00:00 AM# ChrW(0) #1/1/0001 12:00:00 AM# ChrW(0) #1/1/0001 12:00:00 AM#ãŸãã¯New T ïŒä»»æã®æ§é ã®ããã©ã«ãå€ChrW(0)ã«çŸããå±éããŸãäžèšã®ãªã¹ãã - ãNullãnoãreallyïŒããæå³ããæ°ããæ§æã远å ããŸã
Null Nothing? If(False, 0?, Nothing) ãå€ãnullableã«ã©ããããŠåãæšæž¬ããã®ã«åœ¹ç«ã€ãµãã£ãã¯ã¹ïŒïŒïŒã®åœ¢åŒã§æ°ããæ§æã远å ããŸãIf (False, CInt? (0), Nothing)ããã«ãåæšè«ã«ãã³ããæäŸããããããããã«ãçµã¿èŸŒã¿åã«NULLå
¥åå¯èœãªå€ææŒç®åã远å ããŸã
ã³ã¡ã³ãã
Twitterã§ããªãã®æèŠãèãããã§ãã
èŠçŽãããšïŒ
- 以å-VB6ãšVBAã«ã¯ããªãããããã«ããã空ããããã³ãæ¬ èœãããããç°ãªãããšãæå³ããŸãã
- 2002-VB.NETã«ã¯
Nothing ïŒç¹å®ã®ã³ã³ããã¹ãã®ããã©ã«ãå€ïŒã®ã¿ããããCïŒã«ã¯nullã®ã¿ãããnull ã - 2005-CïŒã¯
default(T) ïŒã¿ã€ãTããã©ã«ãå€default(T)远å ãdefault(T) ãããã¯ãæ°ãã远å ããããžã§ããªãã¯ã«ãããå€ãåæåããå¿
èŠãããç¶æ³ãäœæãããããã§ãã ãã®ã¹ã¯ãªããã¯ãã§ã«Nothingã«ãã£ãŠéããããŠãããããVBã¯äœããNothing ã - 2017-
Tæå®Tåé·ãŸãã¯äžå¯èœãªå€ãã®ã·ããªãªããããããCïŒã¯default ïŒã³ã³ããã¹ãã®defaultå€ïŒã远å ãdefault
VBã¯ã
NullåŒïŒãŸãã¯åçã®ãã®ïŒã®è¿œå ã«æµæãç¶ããŠããŸããçç±ã¯æ¬¡ã®ãšããã§ãã
- æ§æã¯ç Žå£çãªå€æŽã«ãªããŸãã
- æ§æã倿Žãå£ãããšã¯ãããŸããããã³ã³ããã¹ãã«ãã£ãŠç°ãªãããšãæå³ããŸãã
- æ§æã¯ããŸãã«ãç®ç«ããªããªããŸãïŒããšãã°ã
Nothing? ïŒã Nothing and Nothing?ã«ã€ããŠå€§å£°ã§è©±ãå¿
èŠããããšæ³åããŠãã ããNothing? 人ã«äœãã説æããããã«ã - æ§æãtooãããŸãïŒäŸïŒ
Nothing? ïŒã - nullåŒã¹ã¯ãªããã¯
Nothingã«ãã£ãŠæ¢ã«éããããŠããããã®é¢æ°ã¯ã»ãšãã©ã®å Žåå®å
šã«åé·ã§ãã - ã©ãã§ãããã¹ãŠã®ããã¥ã¡ã³ããšãã¹ãŠã®æç€ºãæŽæ°ããŠãæ°ããæ§æã®äœ¿çšãæšå¥šããå¿
èŠããããŸããããã¯ãã»ãšãã©ã®ã·ããªãªã§åºæ¬çã«å»æ¢ãã
Nothing宣èšããŸãã - å®è¡æãé
å»¶ãã€ã³ãã£ã³ã°ã倿ãªã©ã«é¢ããŠã
NothingãNullãåãããã«åäœããããšã¯ããNothing ã - åºããããªéã®ãããªãã®ã§ãã
ãã®ãããªãã®ã
ãªããããã¯ïŒé¢é£ããïŒäžèšã®2çªç®ã®äŸãšéåžžã«ãã䌌ãŠããŸãããåã®æšè«ã¯ãããŸããã
Module Program Sub Main() Dim i As Integer? = If(False, 1, Nothing) Console.WriteLine(i) End Sub End Module
githubãœãŒã¹ã³ãŒããã®ããã°ã©ã ã¯0ã衚瀺ããŸããåãçç±ã§2çªç®ã®äŸãšãŸã£ããåãããã«åäœããŸãããé¢é£ããŠããŠãå¥ã®åé¡ã瀺ããŠããŸãã çŽæçã«ã
Dim i as Integer? = If(False, 1, Nothing) Dim i as Integer? = If(False, 1, Nothing)ã
Dim i As Integer? : If False Then i = 1 Else i = Nothingãšåãããã«åäœãã
Dim i as Integer? = If(False, 1, Nothing) Dim i As Integer? : If False Then i = 1 Else i = Nothing Dim i As Integer? : If False Then i = 1 Else i = Nothing ã ãã®å Žåãæ¡ä»¶åŒ
(If)ã¯æçµåã®æ
å ±ããªãã©ã³ãã«ããã¹ã¹ã«ãŒãããªããããããã¯ããã§ã¯ãããŸããã ããã«ãããæçµçãªïŒã³ã³ããã¹ãïŒã¿ã€ãã³ã°ïŒ
Nothing ã
AddressOf ããªãã©ã«ã®é
åãã©ã ãåŒãããã³è£éãããæååïŒãšåŒã°ãããã®ã«äŸåããVBã®ãã¹ãŠã®åŒããäžè¬çãªéã³ã³ãã€ã«ããéãã«èª€ã£ãå€ã®äœæã«è³ããŸã§ã®åé¡ã«åè§£ãããããšã
AddressOfãŸã倧声ã§äŸå€ãã¹ããŒããŸãã ã³ã³ãã€ã«ãããŠããªããªãã·ã§ã³ã®äŸã次ã«ç€ºããŸãã
Module Program Sub Main() Dim i As Integer? = If(False, 1, Nothing) Console.WriteLine(i) Dim operation As Func(Of Integer, Integer, Integer) = If(True, AddressOf Add, AddressOf Subtract) End Sub Function Add(left As Integer, right As Integer) As Integer Return left + right End Function Function Subtract(left As Integer, right As Integer) As Integer Return left - right End Function End Module
githubãœãŒã¹ã³ãŒããã®ããã°ã©ã ã¯ã³ã³ãã€ã«ãããŸããã 代ããã«ãäž¡æ¹ã®
AddressOfåŒã
Func(Of Integer, Integer, Integer)ããªã²ãŒã
Func(Of Integer, Integer, Integer)ãåä¿¡ããããšã
AddressOfæå³ããŠããå ŽåãåŒã®ã¿ã€ããå€å¥ã§ããªããšãããšã©ãŒã
IfåŒã§å ±åããŸãã
,
Nothing null (),
Nothing nullability ()
If(,,) Nothing ( ) () â ,
.
47. ;
«3»:
Module Program Sub Main() Dim i As Integer = 3 M((i)) Console.WriteLine(i) End Sub Sub M(ByRef variable As Integer) variable = -variable End Sub End Module
GitHubC# «-3». , VB â ,
. ,
M(3) ,
M(i) ,
i , . C# ( ) , M .
ãªãã§ïŒ VB
. Quick Basic (Copyright 1985), . ,
2002 , .
â1: « » , Visual Basic .NET.
â2: Roslyn ( ,
( ) ( )), : . C# ,
((a + b) * c a + (b * c)) . , C#, C++, , , , . : « VB?» « C#?»
source.roslyn.io â
BoundParenthesized VB C#. , , .
48. Me â
VB.NET
Me . , - , â , Me Structure . Me . C#
this ,
this .
49.
VB, , :
Class C Sub M() Extension() End Sub End Class Module Program Sub Main() End Sub <Runtime.CompilerServices.Extension> Sub Extension(c As C) End Sub End Module
GitHubC# ( something.Extension). , C#, ,
this.Extension() .
ãªãã§ïŒ ,
'Me.' , , , , . VB.NET . , .
50. (Static imports will not merge method groups)
VB « » (Java-, C# VB). ,
Imports System.Console WriteLine() . 2015 C# . VB Shared- ,
System.Console System.Diagnostics.Debug ,
WriteLine , . C# , , .
ãªãã§ïŒ , , VB , C# ( ). , ( , ), ⊠, .
, VB , VB , , , , , (
#6 ). VB . , VB 2002 .
51 52. (Partial-name qualification & Smart-name resolution)
:
- , â ( ).
System System.Windows.Forms â , , System System.Windows System.Windows System.Windows.Forms . - , , , .
System Windows , Windows Form .
, , . . VB Imports ,
using C# .
, VB
System ,
System ,
System . , . ,
ExtensionAttribute ,
<Runtime.CompilerServices.Extension> <System.Runtime.CompilerServices.Extension> .
C# .
using System System.Threading Threading .
, C# , . ,
System ,
System.Threading Threading . , , , , .
, , VB, C# ,
Imports /
using , C# using , , using .
(Quantum Namespaces) ( ), ! VB , . ,
System ComponentModel System.Windows.Forms ComponentModel ?
ComponentModel . ,
ComponentModel.PropertyChangedEventArgs , ( , ).
System.Windows.Forms (, , , , ), (ambiguity errors).
VB2015 (Smart Name Resolution),
System System.Windows.Forms ComponentModel , ,
System.ComponentModel System.Windows.Forms.ComponentModel , . , , , , . , , , ..
ComponentModel.PropertyChangedEventArgsSystem.ComponentModel.PropertyChangedEventArgs ,
System.Windows.Forms.ComponentModel.PropertyChangedEventArgs . , .
,
Windows , ( ) ( ) ( ).
WinForms/WPF UWP .
53. Add
#33 , VB - , . , , â , :
Class Contact Property Name As String Property FavoriteFood As String End Class Module Program Sub Main() Dim contacts = New List(Of Contact) From { {"Leo", "Chocolate"}, {"Donnie", "Bananas"}, {"Raph", "The Blood of his Enemies"}, {"Mikey", "Pizza"} } End Sub <Runtime.CompilerServices.Extension> Sub Add(collection As ICollection(Of Contact), name As String, favoriteFood As String) collection.Add(New Contact With {.Name = name, .FavoriteFood = favoriteFood}) End Sub End Module
GitHubC# , Roslyn C#, . , (
, ), VS2015.
54. ,
, VB
Dim buffer(expression) As Byte Dim buffer = New Byte(expression) {} expression + 1 .
Microsoft BASIC,
DIM ( dimension â ). , , , : 0 expression. Microsoft BASIC 1 ( , 1984), ( ), 2002 .
, - , , VB , BASIC C , , C, C- . ,
buffer(10) 0 10, 9!
55. VB - , C#
, . , VB ( ) , â . :
CType({1, 2, 3}, Short()) CType(New Integer() {1, 2, 3}, Short ()) , Integer Short .CType({1, 2, 3}, Short()) New Short() {1, 2, 3} . .
, , VB , C#. , :
Dim empty As Integer() = {}
:
Dim array As Predicate(Of Char)() = {AddressOf Char.IsUpper, AddressOf Char.IsLower, AddressOf Char.IsWhitespace}
( ):
Dim byteOrderMark As Byte() = {&HEF, &HBB, &HBF} ' .
,
IList(Of T) ,
IReadOnlyList(Of T) ,
ICollection(Of T) ,
IReadOnlyCollection(Of T) IEnumerable(Of T) , , ,
ParamArray IEnumerable .
ãªãã§ïŒ , VB. , . 2008 VB C# «» {}, - ( , , ). , , , + , . .
56.
, LINQ. , .
, ,
.
57. CType, DirectCast C#
/ VB C#.
VB
CType :
- ;
- ( );
- , ,
Long Integer (. «»); - (unboxes) ;
- ;
- (
CTypeDynamic ).
VB
DirectCast :
- ;
- ;
- (
Integer Byte ); - ;
- ( );
- .
C# â
(Type)expression :
CType C# , . , . VB C# , IL .
, C#, , . .
,
CType , (, ).
CType ,
DirectCast , . , , IL :
Object (
ValueType ) CLR «unbox» VB-, , (,
Short Integer ). , , C#. . , .
ãªãã§ïŒ . , , , , .
58. «»
, ,
5 Mod 2 * 3 5 VB, «» C#
5 % 2 * 3 3.
, , . , (, (\) VB), , ,
.
!59. ; + & ; + VB <> + C#
, + () & () VB + C#.
String :VB- â1â + 1 = 2.0
- â1â & 1 = â11â
C#, + &VB- âobj: â + AppDomain.CurrentDomain ' Error: + not defined for String and AppDomain.
- âobj: â & AppDomain.CurrentDomain ' Error: & not defined for String and AppDomain.
- âobj: â + CObj(AppDomain.CurrentDomain) ' Exception, no + operator found.
- âobj: â & CObj(AppDomain.CurrentDomain) ' Exception, no & operator found.
C#- «obj: » + AppDomain.CurrentDomain == «obj: » + AppDomain.CurrentDomain.ToString()
- «obj: » + (object)AppDomain.CurrentDomain == «obj: » + AppDomain.CurrentDomain.ToString()
- «obj: » + (dynamic)AppDomain.CurrentDomain == «obj: » + AppDomain.CurrentDomain.ToString()
:VB- 1 + 1 = 2
- 1 & 1 = â11â
C#String Enum:VB- âToday: â + DayOfWeek.Monday ' Exception: String «Today: » cannot be converted to Double.
- âToday: â & DayOfWeek.Monday = âToday: 1â
- âToday: â & DayOfWeek.Monday.ToString() = âToday: Mondayâ
C#- «Today: » + DayOfWeek.Monday == «Today: Monday»
: , + VB, - . + , , - . ãªãã§ïŒ ãªããªãïŒ
- â10â â â1â = 9.0,
- â5â * â5â = 25.0,
- â1â << â3â = 8,
- â1â + 1 = 2.0,
- â1â + â1â = â11â
. â .
: +,
. , &, , (
, ). , , .
60. : 3 / 2 = 1,5
â :
« ?» . «». :
« . ?»VB C#.
C, , ,
« 5 9?» , \. , , , , 0 ( , -
INumeric ).
61. ^ Math.Pow
Math.Pow . , . , (
custom ) ( ,
System.Numerics.BigInteger ).
: F# **, VB F# :
op_Exponent op_Exponentiation . F#
Pow . . , .
62. =/<> /
C# '==' () , , ( ). VB . VB (
Is/IsNot ) .
: - Roslyn , . . . VB , = , C# , , , .
63. =/<> ( )
VB .
-, ( ) - ( ), ,
Option Compare Binary Option Compare Text .
Option Compare Binary , , VS.
( ), ,
API. ããã¯ïŒ
- /: âAâ = âaâ/âAâ <> âaâ
- : âAâ > âaâ
Select Case: Select Case âAâ : Case âaâ
:
Equals: âAâ.Equals(âaâ)Contains: âAâ.Contains(âaâ)Distinct: From s In {âAâ, âaâ} Distinct
, , : VB . ,
Option Compare , «Empty».
Module Program Sub Main() Dim s As String = Nothing If s = "" Then Console.WriteLine("Empty") End If End Sub End Module
GitHubs = "" VB â
String.IsNullOrEmpty(s) .
, , , , , . , , .
ãªãã§ïŒ Option Compare Text , , . , , .
, , , , .
, , . , . , , (collation) SQL Server, . , VB VB6, VBA Office, Excel Access, VBScript Windows, -, -⊠. , , .NET API , Option Compare Text, . , .NET API, .
null, , . VB6 .
String "". , VB
String . VB,
Left Mid ,
String . null .
Len(CStr(Nothing)) = 0 Left(CStr(Nothing) ,
5) = "" ,
CStr(Nothing).Length CStr(Nothing).Trim() .
,
? ã ( ).
:, , , . ! VB , ,
"String A" = "String B" ,
Microsoft.VisualBasic.CompilerServices.Operators.CompareString , - , , . LINQ- . , VB ( ). , , - , . LINQ-to-SQL, LINQ-to-Entities , Microsoft. , VB , !
, C#, VB, LINQ . : 1) , VB , , 2) , VB , , LINQ-. , VB ().
: , « API».
Option Compare VB,
InStr.Replace Microsoft.VisualBasic.Strings . , ?
, , , ? , , , : , , .
64. Nullable ( null )
VB C# - nullable. , (null-propagation).
SQL, , , null. , (, +), null, null.
"?." :
obj?.Property obj null, null, .
nullable , VB, C# . - : .
VB, nullable , null, null . 1 + null null null + null null. , (, = <>) C#:
- VB,
Is/IsNot , Boolean? - C# (==, !=, >, <, >=, <=)
bool bool?
VB ( nullable ) null
null .
Boolean =
Boolean? ,
True ,
False null .
. C#
non-nullable bool ,
.
,
. null. VB
NULL =
NULL â
NULL , TRUE.
, :

.
Null , , , C# .
. C# VB,
« null?» C#
(if (value == null)) . VB , VB (=/<>)
(Is/IsNot) , VB
Is Nothing non-nullable Boolean .
, VB null, null.
And/AndAlso Or/OrElse .
Integer? ( ), VB, C# null, :
- 1 AND NULL NULL
- 1 OR NULL NULL
Boolean? , VB .
- FALSE AND NULL FALSE
- TRUE OR NULL TRUE
- TRUE AND NULL NULL
- FALSE OR NULL NULL
,
True/False , , null. ,
AndAlso OrElse .
C# (&&/||) (&/|)
nullable boolean (bool?) . , , non-nullable boolean nullable boolean .
?VB , - :
Imports System.ComponentModel Class BindableRange Implements INotifyPropertyChanged Property _EndDate As Date? Property EndDate As Date? Get Return _EndDate End Get Set(value As Date?)
GitHub, , , , «EndDate change» . , ,
VB null ? ,
EndDate , , ,
Nothing .
VB :
«, , . » :
If value <> _EndDate Then _EndDate = value RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(NameOf(EndDate))) End If
! . ,
non-nullable . ,
. , :
If value Is Nothing AndAlso _EndDate Is Nothing Then Return If value <> _EndDate Then Return
?, C# , VB. ( nullable , ), , null.
null â
«» « » . .
null « » «» . , , : comparer, , comparer . Roslyn,
Optional(Of T) , , , null, , .
, NULL « », VB :
- , « , ?» « ».
- : « , ?» « ».
, ,
SQL- . , NULL SQL , NULL. . , , NULL . , . , , ( ). , , , , , NULL , SQL ( ).
VB.
nullable 2008 , VB ?LINQ to SQL
VB , , , , , , LINQ- . !
. SQL Server, ,
SET ANSI_NULLS OFF , SQL- C#,
WHERE Column = NULL . , , OFF ( ). SQL Server ( ) . :
« ? . , - Option ANSI_NULLS Off VB.NET?» . :

, , , , , SQL Server, VB.
ãã®ãããªãã®ã
65. 1:1
, VB , , , . VB - , .
, , , , . VB , , , , , VB .
9.8.4 .
66. Function() a = b () => a = b
. ,
() => expression C#
Function() expression VB.
Function() -, - , VB.
a = b ,
a b (
Boolean ),
b . - (delegate relaxation) VB ( -) Sub- ( ). .
() => a = b C# VB â
Sub() a = b . â -
, .
=, , . (
Sub -) , (
Function -) .
67. Async Function async void
C#
async -, , ,
Task void , ,
Task , .
VB.NET , ..
void Async Async Sub ,
Task Task(Of T) â
Async Function . , , VB, (relaxing)
Task Async void .
Async Sub , , .
68. () VB
, VB:
Class Foo
GitHubVB,
C#. -,
Foo Select , ,
Where .
Select , ,
Select ,
Integer . C# ,
.Where (
Select ). , , .
LINQ API. , VB C#, . , C# , « », , , , . - , «» , , -.
, VB
, , C# , .
, Roslyn, :
« (range variables)?» « ?» . . , VB ,
Let , C# â . , VB, C# 2012 , :
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CSharpExamples { struct Point { public int X { get { return 0; } } public int Y { get { return 0; } } } class Foo { public IEnumerable<Point> Select<T>(Func<string, T> selector) { return new Point[0]; } } static class Program { static void Main(string[] args) { var c = new Foo(); var q = from X in c let Y = "" select Y.CompareTo(-1); } } }
GitHub, â ? X, â
string .
let Y , string. , Point,
X Y , ,
int X Y , «» .
Y select ,
int int `, ⊠.
,
« ?» . VS2015 C# , «». , Roslyn C#, . , ( , ), - .
ãªãã§ïŒ , , , . , , VB C# .
69 70. As From cast ; 'As'
( , âŠ)
From x As Integer In y VB, ,
from int x in y C#.
-, C# , ( ) .
.Cast<T>() . VB , , , , .
-, ,
.Cast ( ). , , ,
.Cast .Select .
ãªãã§ïŒ æãããã¯ãããŸããã VB . ,
For Each x As T In collection ,
As T .
From As For Each ( ,
As ).
71-75. Select , ,
äŸïŒ
From x In y Where x > 10 . , Select .From x In y Select x Where x > 10 .From x In y Select x , From x In y Select x = x , x â x , x â Select . Select .From x In y Select z = x.ToString() , x .From x In y Select x.FirstName , From x In y Select FirstName = x.FirstName .From x In y Select x.FirstName, x.LastName â From x In y Select New With {x.FirstName, y.LastName} , , . IEnumerable(Of $AnonymousType$) , .
ãªãã§ïŒ (
Amanda Silver ). !
- ,
Select , SQL , Select , . LINQ VB Select , SQL, From . - , , .
- ,
Select , SQL, - - . VB comma separated ( ) -. - ,
Select , , , , , , , â .
? , , - , , :
Module Program Sub Main() Dim numbers = {1, 2, 3}
GitHubBC36606: Range variable name cannot match the name of a member of the 'Object' class BC30978: Range variable 'âŠ' hides a variable in an enclosing block or a range variable previously defined in the query expression â ,
Object , , , , . (
n.ToString() ), . , .
76+.
. ⊠⊠. ⊠20-25 (
â .. ).
åºåã®åã 15-16 - .NET- DotNext 2019 Piter . , . , . .