Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®æŽå²ãéããŠã.NETã¯ããŒãžã§ã³ããããŒãžã§ã³ãããã³.NETã®å®è£ å šäœã«ããã£ãŠé«ãã¬ãã«ã®äºææ§ãç¶æããããšããŸããã .NET 5 (ããã³ .NET Core) 以éã®ããŒãžã§ã³ã¯ã.NET Framework ãšæ¯èŒããŠæ°ãããã¯ãããžãšèŠãªãããšãã§ããŸããã.NET Framework ããã®ãã®.NETã®å®è£ ã®èœåãå¶éãããäž»ãªèŠå 㯠2 ã€ãããŸãã
- 倿°ã®éçºè ããåœå㯠.NET Framework ã¢ããªã±ãŒã·ã§ã³ãéçºãŸãã¯éçºãç¶ããŸãã .NETå®è£ å šäœã§äžè²«ããåäœãæåŸ ãããŸãã
- .NETæšæºã©ã€ãã©ãª ãããžã§ã¯ãã䜿çšãããšãéçºè ã¯ã.NET Framework ããã³ .NET 5 (ããã³ .NET Core) 以éã®ããŒãžã§ã³ã§å ±æãããäžè¬ç㪠API ã察象ãšããã©ã€ãã©ãªãäœæã§ããŸãã éçºè ã¯ã.NET ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããã©ã€ãã©ãªã¯ã.NET Framework ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããã®ãšåãã©ã€ãã©ãªãšåãããã«åäœããããšãæåŸ ããŠããŸãã
éçºè ã¯ã.NETå®è£ éã®äºææ§ãšå ±ã«ã.NETã®ç¹å®ã®å®è£ ã®ããŒãžã§ã³éã§é«ã¬ãã«ã®äºææ§ãæåŸ ããŸãã ç¹ã«ã.NET Core ã®ä»¥åã®ããŒãžã§ã³çšã«èšè¿°ãããã³ãŒãã¯ã.NET 5 以éã®ããŒãžã§ã³ã§ã·ãŒã ã¬ã¹ã«å®è¡ããå¿ èŠããããŸãã å®éãå€ãã®éçºè ã¯ãæ°ãããªãªãŒã¹ãããããŒãžã§ã³ã®.NETã§èŠã€ãã£ãæ°ãã API ãããããã® API ãå°å ¥ããããã¬ãªãªãŒã¹ ããŒãžã§ã³ãšäºææ§ãããããšãæåŸ ããŠããŸãã
ãã®èšäºã§ã¯ãäºææ§ã«åœ±é¿ãã倿Žãšã.NET ããŒã ãåçš®é¡ã®å€æŽãè©äŸ¡ããæ¹æ³ã«ã€ããŠèª¬æããŸãã .NET ããŒã ãç Žå£ç倿Žã®å¯èœæ§ã«ã©ã®ããã«ã¢ãããŒãããããçè§£ããããšã¯ãæ¢åã®.NET API ã®åäœã倿Žãã pull request ãéãéçºè ã«ãšã£ãŠç¹ã«åœ¹ç«ã¡ãŸãã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ã.NET API ã«å ãããã倿Žã®ã«ããŽãªãšãã¢ããªã±ãŒã·ã§ã³ã®äºææ§ãžã®åœ±é¿ã«ã€ããŠèª¬æããŸãã 倿Žã¯èš±å¯ãããŠããïŒâïžïŒãèš±å¯ãããŠããªãïŒâïŒããŸãã¯åã®åäœãã©ã®çšåºŠäºæž¬å¯èœã§æçœã§äžè²«ããŠãããã©ããã®å€æãšè©äŸ¡ãå¿ èŠã§ãïŒâïŒã
泚
- ã©ã€ãã©ãªéçºè ã¯ã.NET ã©ã€ãã©ãªã®å€æŽãè©äŸ¡ããæ¹æ³ã®ã¬ã€ããšããŠæ©èœããã ãã§ãªãããããã®åºæºã䜿çšããŠãè€æ°ã®.NETã®å®è£ ãšããŒãžã§ã³ã察象ãšããã©ã€ãã©ãªãžã®å€æŽãè©äŸ¡ããããšãã§ããŸãã
- äºææ§ã«ããŽãª (åæ¹äºææ§ãäžäœäºææ§ãªã©) ã«ã€ããŠã¯ãã ã³ãŒãã®å€æŽãäºææ§ã«äžãã圱é¿ããåç §ããŠãã ããã
ãããªã㯠ã³ã³ãã©ã¯ãã®å€æŽ
ãã®ã«ããŽãªã®å€æŽã«ãããã¿ã€ãã®ãããªã㯠ãµãŒãã§ã¹é åã倿ŽãããŸãã ãã®ã«ããŽãªã®å€æŽã®ã»ãšãã©ã¯ ãäžäœäºææ§ ã«éåããããçŠæ¢ãããŠããŸã (以åã®ããŒãžã§ã³ã® API ã§éçºãããã¢ããªã±ãŒã·ã§ã³ã¯ãæ°ããããŒãžã§ã³ã§åã³ã³ãã€ã«ããã«å®è¡ã§ããŸã)ã
çš®é¡
âïž èš±å¯: ã€ã³ã¿ãŒãã§ã€ã¹ãæ¢ã«åºæ¬åã«ãã£ãŠå®è£ ãããŠããå Žåã«ãåããã€ã³ã¿ãŒãã§ã€ã¹å®è£ ãåé€ãã
â 倿ãå¿ èŠ: åã«æ°ããã€ã³ã¿ãŒãã§ã€ã¹å®è£ ã远å ãã
ããã¯ãæ¢åã®ã¯ã©ã€ã¢ã³ãã«æªåœ±é¿ãäžããªãã®ã§ã蚱容ããã倿Žã§ãã æ°ããå®è£ ãåãå ¥ãå¯èœãªç¶æ ã«ä¿ã€ã«ã¯ãåã«å¯Ÿãã倿Žããããã§å®çŸ©ãããŠãã蚱容å¯èœãªå€æŽã®å¢çå ã§æ©èœããå¿ èŠããããŸãã ãã¶ã€ããŒãŸãã¯ã·ãªã¢ã©ã€ã¶ãŒãäžäœã¬ãã«ã§ã¯äœ¿çšã§ããªãã³ãŒããããŒã¿ãçæããæ©èœã«çŽæ¥åœ±é¿ããã€ã³ã¿ãŒãã§ã€ã¹ã远å ããå Žåã¯ã现å¿ã®æ³šæãå¿ èŠã§ãã ããšãã°ã ISerializable ã€ã³ã¿ãŒãã§ã€ã¹ã§ãã
â 倿ãå¿ èŠ:æ°ããåºåºã¯ã©ã¹ã®å°å ¥
æ°ãã æœè±¡ ã¡ã³ããŒãå°å ¥ããããæ¢åã®åã®ã»ãã³ãã£ã¯ã¹ãåäœã倿Žãããããªãå Žåã¯ã2 ã€ã®æ¢åã®åéã®éå±€ã«åãå°å ¥ã§ããŸãã ããšãã°ã.NET Framework 2.0 ã§ã¯ãDbConnection ã¯ã©ã¹ã¯ SqlConnection ã®æ°ããåºåºã¯ã©ã¹ãšãªãã以å㯠Component ããçŽæ¥æŽŸçããŠããŸããã
âïž èš±å¯: ããã¢ã»ã³ããªããå¥ã®ã¢ã»ã³ããªã«åãç§»åãã
å€ãã¢ã»ã³ããªã¯ãæ°ããã¢ã»ã³ããªãæãTypeForwardedToAttributeã§ããŒã¯ããå¿ èŠããããŸãã
âïž èš±å¯: æ§é äœåã
readonly structåã«å€æŽããreadonly structåãstructåã«å€æŽããããšã¯ã§ããŸãããâïž èš±å¯: ã¢ã¯ã»ã¹å¯èœãª (ãããªãã¯ãŸãã¯ä¿è·ããã) ã³ã³ã¹ãã©ã¯ã¿ãŒããªãå Žåã«ãsealed ããŒã¯ãŒããŸã㯠abstract ããŒã¯ãŒããåã«è¿œå ãã
âïž åã®å¯èŠæ§ãæ¡åŒµããããšãèš±å¯ãã
â æªèš±å¯: åã®åå空éãŸãã¯ååã倿Žãã
â èš±å¯ãããŠããŸãã: ãpublic typeãã®åå倿ŽãŸãã¯åé€
ããã«ãããååã倿ŽãŸãã¯åé€ãããåã䜿çšãããã¹ãŠã®ã³ãŒããäžæãããŸãã
泚
ãŸãã«ã.NETããããªã㯠API ãåé€ããããšããããŸãã 詳现ã«ã€ããŠã¯ã.NET ã§ã®
API ã®åé€ãåç §ããŠãã ããã .NETã®ãµããŒã ããªã·ãŒã®è©³çްã«ã€ããŠã¯ãã.NET ãµããŒã ããªã·ãŒããåç §ããŠãã ããã â æªèš±å¯: åæåã®åºã«ãªãåã倿Žãã
ããã¯ãã³ã³ãã€ã«æãšåäœã®ç Žå£ç倿Žã ãã§ãªãã屿§åŒæ°ãè§£æäžå¯èœã«ããå¯èœæ§ããããã€ããªç Žå£ç倿Žã§ãã
â æªèš±å¯: 以åã¯ã¢ã³ã·ãŒã«ãã ã£ãåãã·ãŒã«ãã
â èš±å¯ãããŠããŸãã: ã€ã³ã¿ãŒãã§ã€ã¹ã®åºæ¬åã®ã»ããã«ã€ã³ã¿ãŒãã§ã€ã¹ã远å ãã
ã€ã³ã¿ãŒãã§ã€ã¹ã以åã«å®è£ ããŠããªãã£ãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããŠããå Žåãå ã®ããŒãžã§ã³ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããã¹ãŠã®åãå£ããŸãã
â 倿ãå¿ èŠ: å®è£ ãããŠããäžé£ã®ã€ã³ã¿ãŒãã§ã€ã¹ããåºåºã¯ã©ã¹ãŸãã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®ã»ããããã¯ã©ã¹ãåé€ãã
ã€ã³ã¿ãŒãã§ã€ã¹ã®åé€èŠåã«ã¯äŸå€ã 1 ã€ãããŸããåé€ãããã€ã³ã¿ãŒãã§ã€ã¹ããæŽŸçããã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£ ã远å ã§ããŸãã ããšãã°ãåãŸãã¯ã€ã³ã¿ãŒãã§ã€ã¹ãIDisposableãå®è£ ããIComponentãå®è£ ããŠããå Žåã¯ãIDisposableãåé€ã§ããŸãã
â æªèš±å¯:
readonly structåã struct åã«å€æŽãããã ãã
structåãreadonly structåã«å€æŽããããšã¯ã§ããŸããâ çŠæ¢: æ§é äœ åã
ref structåã«å€æŽããããšãããã³ãã®éãèš±ãããªãâ æªèš±å¯: åã®å¯èŠæ§ãäžãã
ãã ããåã®å¯èŠæ§ãé«ããããšã¯èš±å¯ãããŸãã
ã¡ã³ããŒ
âïž èš±å¯: ä»®æ³ã§ã¯ãªãã¡ã³ããŒã®å¯èŠæ§ãæ¡åŒµãã
âïž èš±å¯: ã¢ã¯ã»ã¹å¯èœãª (ãããªãã¯ãŸãã¯ä¿è·ããã) ã³ã³ã¹ãã©ã¯ã¿ãŒããªããããªãã¯åã«æœè±¡ã¡ã³ããŒã远å ããããŸãã¯åãã·ãŒã«ãããŠãã
ãã ããã¢ã¯ã»ã¹å¯èœãª (ãããªãã¯ãŸãã¯ä¿è·ããã) ã³ã³ã¹ãã©ã¯ã¿ãŒãããã
sealedãããŠããªãåã«æœè±¡ã¡ã³ããŒã远å ããããšã¯ã§ããŸãããâïž èš±å¯: åã«ã¢ã¯ã»ã¹å¯èœãª (ãããªãã¯ãŸãã¯ä¿è·ããã) ã³ã³ã¹ãã©ã¯ã¿ãŒããªãå ŽåããŸãã¯åãã·ãŒã«ãããŠããå Žåã«ãä¿è·ãããã¡ã³ããŒã®å¯èŠæ§ãå¶éãã
âïž èš±å¯: ã¡ã³ããŒãåé€ãããåãããéå±€å ã®äžäœã¯ã©ã¹ã«ç§»åãã
âïž èš±å¯: ãªãŒããŒã©ã€ãã®è¿œå ãŸãã¯åé€
ãªãŒããŒã©ã€ããå°å ¥ãããšã以åã®ã³ã³ã·ã¥ãŒããŒã ããŒã¹ãåŒã³åºããšãã«ãªãŒããŒã©ã€ããã¹ãããããå¯èœæ§ããããŸãã
âïž ALLOWED: 以åã«ã¯ã©ã¹ã«ã³ã³ã¹ãã©ã¯ã¿ãŒããªãå Žåã¯ããã©ã¡ãŒã¿ãŒãªãã®ã³ã³ã¹ãã©ã¯ã¿ãŒãšå ±ã«ãã¯ã©ã¹ã«ã³ã³ã¹ãã©ã¯ã¿ãŒã远å ãã
ãã ãããã©ã¡ãŒã¿ãŒãªãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã远å ããã« ã以åã«ã³ã³ã¹ãã©ã¯ã¿ãŒãååšããªãã£ãã¯ã©ã¹ã«ã³ã³ã¹ãã©ã¯ã¿ãŒã远å ããããšã¯èš±å¯ãããŸããã
âïž èš±å¯: ã¡ã³ããŒãæœè±¡ããä»®æ³ã«å€æŽãã
âïž èš±å¯:
ref readonlyããrefæ»ãå€ãžã®å€æŽ (ä»®æ³ã¡ãœãããŸãã¯ã€ã³ã¿ãŒãã§ã€ã¹ãé€ã)âïž èš±å¯:ãã£ãŒã«ãã®éçãªåãå¯å€å€åã§ã¯ãªãå Žåã«ããã£ãŒã«ããã readonly ãåé€ãã
âïž èš±å¯: 以åã«å®çŸ©ãããŠããªãæ°ããã€ãã³ããåŒã³åºã
â 倿ãå¿ èŠ: æ°ããã€ã³ã¹ã¿ã³ã¹ ãã£ãŒã«ããåã«è¿œå ãã
ãã®å€æŽã¯ã·ãªã¢ã«åã«åœ±é¿ããŸãã
â æªèš±å¯: ãããªã㯠ã¡ã³ããŒãŸãã¯ãã©ã¡ãŒã¿ãŒã®åå倿ŽãŸãã¯åé€
ããã«ãããååã倿ŽãŸãã¯åé€ãããã¡ã³ããŒãŸãã¯ãã©ã¡ãŒã¿ãŒã䜿çšãããã¹ãŠã®ã³ãŒããäžæãããŸãã
ããã«ã¯ãããããã£ããã®ã²ãã¿ãŒãŸãã¯ã»ãã¿ãŒã®åé€ãŸãã¯åå倿Žãããã³åæã¡ã³ããŒã®åå倿ŽãŸãã¯åé€ãå«ãŸããŸãã
â 倿ãå¿ èŠ: ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¡ã³ããŒã远å ãã
æå°.NET ããŒãžã§ã³ã .NET Core 3.0 (C# 8.0) ã«åŒãäžãããšããæå³ã§ã®ç Žå£ç倿Žã§ãããããã¯ãæ¢å®ã®ã€ã³ã¿ãŒãã§ã€ã¹ ã¡ã³ã㌠(DIM) ãå°å ¥ããããšãã§ãããéçã§éæœè±¡ã®éä»®æ³ã¡ã³ããŒãã€ã³ã¿ãŒãã§ã€ã¹ã«è¿œå ããããšãèš±å¯ãããŠããŸãã
å®è£ ãæå®ããå Žåãæ¢åã®ã€ã³ã¿ãŒãã§ã€ã¹ã«æ°ããã¡ã³ããŒã远å ããŠããããŠã³ã¹ããªãŒã ã¢ã»ã³ããªã§ã³ã³ãã€ã«ãšã©ãŒãçºçãããšã¯éããŸããã ãã ãããã¹ãŠã®èšèªã§ DIM ããµããŒããããŠããããã§ã¯ãããŸããã ãŸããäžéšã®ã·ããªãªã§ã¯ãã©ã³ã¿ã€ã ã¯åŒã³åºãæ¢å®ã®ã€ã³ã¿ãŒãã§ã€ã¹ ã¡ã³ããŒã決å®ã§ããŸããã C# 13 以éã§ã¯ã
ref structåã¯ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ã§ããŸãããããã¯ã¹åããããã€ã³ã¿ãŒãã§ã€ã¹åã«å€æãããããããšã¯ã§ããŸããã ãã®ãããref structåã¯ããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ ã€ã³ã¿ãŒãã§ã€ã¹ ã¡ã³ããŒã«æç€ºçãªå®è£ ãæäŸããå¿ èŠããããŸããã€ã³ã¿ãŒãã§ã€ã¹ã«ãã£ãŠæäŸãããæ¢å®ã®å®è£ ã䜿çšããããšã¯ã§ããŸãããref structãå®è£ ããã€ã³ã¿ãŒãã§ã€ã¹ã«æ¢å®ã®ã€ã³ã¹ã¿ã³ã¹ ã¡ã³ããŒã远å ããã«ã¯ã察å¿ããå®è£ ã远å ããref structãå¿ èŠã§ããããã¯ãœãŒã¹ã®ç Žå£ç倿Žã§ãã ãã®ãããªçç±ãããæ¢åã®ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¡ã³ããŒã远å ãããšãã«å€æã䜿çšããŸããæ³š
ã€ã³ã¿ãŒãã§ã€ã¹ã
ref structåã«ãã£ãŠå®è£ ãããŠããå Žå (C# 13 以éã§å¯èœ)ãæ¢å®ã®ã€ã³ã¹ã¿ã³ã¹ ã¡ã³ããŒãã€ã³ã¿ãŒãã§ã€ã¹ã«è¿œå ããããšã¯ããããã®åŒã³åºãå ã®ãœãŒã¹ç Žå£ç倿Žã§ããref structã¯ãæ°ããã¡ã³ããŒã®æç€ºçãªå®è£ ãæäŸããå¿ èŠããããŸããæ¢å®ã®å®è£ ã«ãã©ãŒã«ããã¯ããããšã¯ã§ããŸãããâ çŠæ¢: ãããªãã¯å®æ°ãŸãã¯åæã¡ã³ããŒã®å€ã®å€æŽ
â DISALLOWED: ããããã£ããã£ãŒã«ãããã©ã¡ãŒã¿ãŒããŸãã¯æ»ãå€ã®åã倿Žãã
â èš±å¯ãããŠããŸãã: ãã©ã¡ãŒã¿ãŒã®è¿œå ãåé€ããŸãã¯é åºã®å€æŽ
â DISALLOWED: ãã©ã¡ãŒã¿ãŒããã® inã outããŸã㯠ref ããŒã¯ãŒãã®è¿œå ãŸãã¯åé€
âïž èš±å¯:
refãã©ã¡ãŒã¿ãŒãref readonlyã«å€æŽãããã©ã¡ãŒã¿ãŒã
refããref readonlyã«å€æŽããããšã¯ãref修食åã䜿çšããŠåŒæ°ãæž¡ãæ¢åã®åŒã³åºããµã€ãã§ã¯ãœãŒã¹äºæã§ããããããã®åŒã³åºãã¯å€æŽãããã«ã³ã³ãã€ã«ãç¶ããŸããrefãinã«å€æŽããã®ãšã¯ç°ãªããref readonlyãã©ã¡ãŒã¿ãŒã§ã¯ãåŒã³åºãå ãå³èŸºå€ (倿°ä»¥å€) ãæž¡ãããšãèªåçã«èš±å¯ããŸãããåŒæ°ã倿°ã§ãªãå Žåãã³ã³ãã€ã©ã¯èŠåãçºè¡ããŸãã æ¢åã®refé話ãµã€ãã¯æå¹ãªãŸãŸã§ããâ çŠæ¢ãããŠãã:
inãã©ã¡ãŒã¿ãŒãref readonlyã«å€æŽããããšãã©ã¡ãŒã¿ãŒã
inã«å€æŽããããšãin修食å (ã³ã³ãã€ã©ãinãã©ã¡ãŒã¿ãŒãèš±å¯ãã) ãæå®ããã«ref readonlyåŒæ°ãæž¡ãåŒã³åºããµã€ãã¯èŠåãåãåããŸããref readonlyã¯ãåŒæ°ãåç §æž¡ãããå¿ èŠãããããã§ãã èŠåããšã©ãŒãšããŠæ±ãåŒã³åºãå ã§ã¯ããœãŒã¹ã³ãŒãã«ç Žå£çãªå€æŽãçºçããŸããâ DISALLOWED: ãã©ã¡ãŒã¿ãŒã®ååå€æŽ (倧æåãšå°æåã®å€æŽãå«ã)
ããã¯ã次㮠2 ã€ã®çç±ã§äžæãšèŠãªãããŸãã
ããã¯ãVisual Basic ã®é å»¶ãã€ã³ãã£ã³ã°æ©èœããC# ã® dynamic ãªã©ã®é å»¶ãã€ã³ãã£ã³ã°ã®ã·ããªãªãäžæããŸãã
éçºè ãååä»ãåŒæ°ã䜿çšãããšããœãŒã¹ã®äºææ§ãåæãããŸãã
â çŠæ¢:
refã®æ»ãå€ããref readonlyã®æ»ãå€ãžã®å€æŽâïž èš±å¯ãããŠããªã: ä»®æ³ã¡ãœãããŸãã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®æ»ãå€ã
ref readonlyããrefã«å€æŽããããšâ æªèš±å¯: ã¡ã³ããŒãã abstract ã远å ãŸãã¯åé€ãã
â çŠæ¢: ã¡ã³ããŒãã ä»®æ³ ããŒã¯ãŒããåé€ããããš
â æªèš±å¯: ã¡ã³ããŒã« virtual ããŒã¯ãŒãã远å ãã
C# ã³ã³ãã€ã©ãéä»®æ³ã¡ãœãããåŒã³åºãããã« callvirt Intermediate Language (IL) åœä»€ãåºåããåŸåãããã®ã§ãããã¯å€ãã®å Žåãé倧ãªå€æŽã§ã¯ãããŸãã (
callvirt㯠null ãã§ãã¯ãå®è¡ããŸãããéåžžã®åŒã³åºãã§ã¯å®è¡ãããŸãã)ããã ããããã€ãã®çç±ãããã®åäœã¯äžå€ã§ã¯ãããŸããã- C# ã¯ã.NET ãã¿ãŒã²ãããšããå¯äžã®èšèªã§ã¯ãããŸããã
- C# ã³ã³ãã€ã©ã¯ãã¿ãŒã²ãã ã¡ãœãããéä»®æ³ã§ããããããã null ã§ãªãå Žå (
callvirtãä»ããŠã¢ã¯ã»ã¹ãããã¡ãœãããªã©) ã«å¯ŸããŠãéåžžã®åŒã³åºãã«å¯Ÿããã®æé©åããŸããŸã詊ã¿ãŸãã
ã¡ãœãããä»®æ³ã«ãããšãå€ãã®å Žåãã³ã³ã·ã¥ãŒã㌠ã³ãŒãã¯éä»®æ³çã«åŒã³åºãããŸãã
â æªèš±å¯: virtual ã¡ã³ããŒã abstract ã«ãã
ä»®æ³ã¡ã³ããŒã¯ã掟çã¯ã©ã¹ã«ãã£ãŠãªãŒããŒã©ã€ãã§ããã¡ãœããå®è£ ãæäŸããŸãã æœè±¡ã¡ã³ããŒã«ã¯å®è£ ããªãã®ã§ãªãŒããŒã©ã€ããã "å¿ èŠããããŸã"ã
â æªèš±å¯: sealed ããŒã¯ãŒããã€ã³ã¿ãŒãã§ã€ã¹ ã¡ã³ããŒã«è¿œå ãã
æ¢å®ã®ã€ã³ã¿ãŒãã§ã€ã¹ ã¡ã³ããŒã«
sealedã远å ãããšããã®ã¡ã³ããŒã®æŽŸçåã®å®è£ ãåŒã³åºãããªãããã«ãéä»®æ³ã«ãªããŸããâ DISALLOWED: ã¢ã¯ã»ã¹å¯èœãª (ãããªãã¯ãŸãã¯ãããã¯ã) ã³ã³ã¹ãã©ã¯ã¿ãŒãæã¡ãã·ãŒã«ããããŠããªããããªãã¯åã«æœè±¡ã¡ã³ããŒã远å ããããšã¯èš±å¯ãããŠããŸãã
â èš±å¯ãããŠããŸãã: ã¡ã³ããŒã«å¯Ÿãã éç ããŒã¯ãŒãã远å ãããåé€ãããããããš
â DISALLOWED: æ¢åã®ãªãŒããŒããŒããæé€ããå¥ã®åäœãå®çŸ©ãããªãŒããŒããŒãã远å ãã
ããã«ãããåã®ãªãŒããŒããŒãã«ãã€ã³ããããæ¢åã®ã¯ã©ã€ã¢ã³ããäžæãããŸãã ããšãã°ãã¯ã©ã¹ã«ã UInt32ãåãå ¥ããã¡ãœããã®åäžããŒãžã§ã³ãããå Žåãæ¢åã®ã³ã³ã·ã¥ãŒããŒã¯ã Int32 å€ãæž¡ããšãã«ããã®ãªãŒããŒããŒãã«æ£åžžã«ãã€ã³ããããŸãã ãã ãã Int32ãåãå ¥ãããªãŒããŒããŒãã远å ãããšãåã³ã³ãã€ã«æãŸãã¯é å»¶ãã€ã³ãã£ã³ã°ã®äœ¿çšæã«ãã³ã³ãã€ã©ãæ°ãããªãŒããŒããŒãã«ãã€ã³ããããããã«ãªããŸããã åäœãç°ãªãå Žåã¯ãé倧ãªå€æŽã«ãªãå¯èœæ§ããããŸãã
â 倿ãå¿ èŠ: æ¢åã®ãªãŒããŒããŒãã«OverloadResolutionPriorityAttributeã远å ããããåªå 床å€ã倿Žãã
OverloadResolutionPriorityAttributeã¯ãœãŒã¹ã¬ãã«ã§ã®ãªãŒããŒããŒã解決ã«åœ±é¿ãäžããŸããåã³ã³ãã€ã«ãè¡ãåŒã³åºãå ã¯ã以åã®ãªãŒããŒããŒããšã¯ç°ãªã解決ã«è³ãå¯èœæ§ããããŸãã ç®çã®çšéã¯ãã³ã³ãã€ã©ãæ¢åã®ãªãŒããŒããŒãããããããåªå ããããã«ãæ°ããããåªãããªãŒããŒããŒãã«å±æ§ã远å ããããšã§ãã ãããæ¢åã®ãªãŒããŒããŒãã«è¿œå ããããæ¢ã«å±æ§ä»ããªãŒããŒããŒãã®åªå 床å€ã倿Žããããããšãåã³ã³ãã€ã«ããåŒã³åºãå ã®åäœãå€ããå¯èœæ§ãããããããœãŒã¹ã®ç Žå£ç倿Žã«ãªãå¯èœæ§ããããŸãã
âïž èš±å¯: ãžã§ããªãã¯åãã©ã¡ãŒã¿ãŒã«
allows ref structã®åå¶çŽã远å ããallows ref structã远å ãããšãref structåãèš±å¯ããããšã§ãååŒæ°ãšããŠäœ¿çšã§ããåãæ¡åŒµãããŸããref struct以å€ã®ååŒæ°ã䜿çšããæ¢åã®åŒã³åºãå ã¯åœ±é¿ãåããŸããã ãžã§ããªã㯠ã¡ãœãããŸãã¯åã¯ããã®åãã©ã¡ãŒã¿ãŒã®ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã® ref å®å šèŠåã«åŸãå¿ èŠããããŸããâ DISALLOWED: ãžã§ããªãã¯åãã©ã¡ãŒã¿ãŒãã
allows ref structã®åå¶çŽãåé€ããallows ref structãåé€ãããšãåŒã³åºãå ãååŒæ°ãšããŠäœ¿çšã§ããåãå¶éãããŸããref structãååŒæ°ãšããŠæž¡ãåŒã³åºãå ã¯ã³ã³ãã€ã«ãããªããªããŸããâ DISALLOWED: ãã©ã¡ãŒã¿ãŒãªãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã远å ããã«ã以åã«ã³ã³ã¹ãã©ã¯ã¿ãŒãååšããªãã£ãã¯ã©ã¹ã«ã³ã³ã¹ãã©ã¯ã¿ãŒã远å ãã
âïž æªèš±å¯: ãã£ãŒã«ãã« readonly ã远å ãã
â èš±å¯ãããŠããŸãã: ã¡ã³ããŒã®å¯èŠæ§ãäœäžããã
ããã«ã¯ãã¢ã¯ã»ã¹å¯èœãª (ãŸãã¯
public) ã³ã³ã¹ãã©ã¯ã¿ãŒãååšããåãprotectedå Žåã«ãä¿è·ãããã¡ã³ããŒã®å¯èŠæ§ãäœäžãããããšãå«ãŸããŸãã ããã§ãªãå Žåã¯ãä¿è·ãããã¡ã³ããŒã®å¯èŠæ§ãäžããããšãèš±å¯ãããŸããã¡ã³ããŒã®å¯èŠæ§ãé«ããããšã¯èš±å¯ãããŸãã
â èš±å¯ãããŠããŸãã: ã¡ã³ããŒã®åã倿Žãã
ã¡ãœããã®æ»ãå€ããŸãã¯ããããã£ãŸãã¯ãã£ãŒã«ãã®åã¯å€æŽã§ããŸããã ããšãã°ã Object ãè¿ãã¡ãœããã®ã·ã°ããã£ã¯ã Stringãè¿ãããã«å€æŽããããšã¯ã§ããŸããããã®éãåæ§ã§ãã
â DISALLOWED: éãããªã㯠ãã£ãŒã«ããæããªãæ§é äœã«ã€ã³ã¹ã¿ã³ã¹ ãã£ãŒã«ãã远å ãã
æ§é äœã«ãããªã㯠ãã£ãŒã«ããããªãå ŽåããŸãã¯ãã£ãŒã«ãããŸã£ãããªãå ŽåãåŒã³åºãå ã¯ãæåã«äœ¿çšããåã«ãã¹ãŠã®ãããªã㯠ãã£ãŒã«ããæ§é äœã«èšå®ãããŠããéããæ§é äœã®ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºããããããŒã«ã«ã
default(T)ã«åæåãããããã«ããã®æ§é äœåã®ããŒã«ã«ã宣èšã§ããŸãã ãã®ãããªæ§é äœã«æ°ãããã£ãŒã«ã (ãããªãã¯ãŸãã¯éãããªãã¯) ã远å ããããšã¯ããããã®åŒã³åºãå ã®ãœãŒã¹ç Žå£ç倿Žã§ããã³ã³ãã€ã©ã§ã¯ã远å ã®ãã£ãŒã«ããåæåããå¿ èŠãåºãããã«ãªã£ãããã§ããããã«ãæ°ãããã£ãŒã«ã (ãããªãã¯ãŸãã¯éãããªãã¯) ããã£ãŒã«ãã®ãªãæ§é äœã«è¿œå ãããããããªã㯠ãã£ãŒã«ãã®ã¿ãæã€æ§é äœã«è¿œå ããããšã¯ãã³ãŒãã«
[SkipLocalsInit]ãé©çšããåŒã³åºãå ã«å¯Ÿãããã€ããªç Žå£ç倿Žã§ãã ã³ã³ãã€ã©ã¯ã³ã³ãã€ã«æã«ãããã®ãã£ãŒã«ããèªèããŠããªãã£ããããæ§é äœãå®å šã«åæåããªã IL ãåºåããåæåãããŠããªãã¹ã¿ã㯠ããŒã¿ããæ§é äœãäœæãããå¯èœæ§ããããŸããæ§é äœã«ãããªãã¯ã§ãªããã£ãŒã«ããããå Žåãã³ã³ãã€ã©ã¯æ¢ã«ã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯
default(T)ã䜿çšããŠåæåã匷å¶ããŠãããæ°ããã€ã³ã¹ã¿ã³ã¹ ãã£ãŒã«ãã®è¿œå ã¯ç Žå£ç倿Žã§ã¯ãããŸãããâ æªèš±å¯: 以åã«çºçããããšã®ãªãæ¢åã®ã€ãã³ããçºçããã
åäœã®å€æŽ
ã¢ã»ã³ããª
âïž èš±å¯: åããã©ãããã©ãŒã ããŸã ãµããŒããããŠããå Žåã«ã¢ã»ã³ããªãç§»æ€å¯èœã«ãã
â èš±å¯ãããŠããŸãã: ã¢ã»ã³ããªã®ååã倿Žãã
â èš±å¯ãããŠããŸãã: ã¢ã»ã³ããªã®å ¬éããŒã®å€æŽ
ããããã£ããã£ãŒã«ãããã©ã¡ãŒã¿ãŒãããã³æ»ãå€
âïž èš±å¯: ããããã£ããã£ãŒã«ããæ»ãå€ããŸã㯠out ãã©ã¡ãŒã¿ãŒã®å€ãããæŽŸçåã«å€æŽãã
ããšãã°ã Object ã®åãè¿ãã¡ãœããã¯ã String ã€ã³ã¹ã¿ã³ã¹ãè¿ãããšãã§ããŸãã (ãã ããã¡ãœããã·ã°ããã£ã¯å€æŽã§ããŸãã)ã
âïž èš±å¯: ã¡ã³ããŒãä»®æ³ã§ãªãå Žåã«ãããããã£ãŸãã¯ãã©ã¡ãŒã¿ãŒã«å¯ŸããŠåãå ¥ããããå€ã®ç¯å²ãå¢ãã
ã¡ãœããã«æž¡ãããšãã§ããå€ãŸãã¯ã¡ã³ããŒããè¿ãããå€ã®ç¯å²ã¯æ¡åŒµã§ããŸããããã©ã¡ãŒã¿ãŒãŸãã¯ã¡ã³ããŒåã¯å±éã§ããŸããã ããšãã°ãã¡ãœããã«æž¡ãããå€ã¯ 0 ãã 124 ãã 0 - 255 ã«æ¡åŒµã§ããŸããããã©ã¡ãŒã¿ãŒã®åã Byte ãã Int32 ã«å€æŽããããšã¯ã§ããŸããã
â DISALLOWED: ã¡ã³ããŒãä»®æ³ã§ããå Žåã«ãããããã£ãŸãã¯ãã©ã¡ãŒã¿ãŒã§åãå ¥ããããå€ã®ç¯å²ãå¢ãã
ãã®å€æŽã«ãããæ¢åã®ãªãŒããŒã©ã€ããããã¡ã³ããŒãå£ããæ¡åŒµãããå€ã®ç¯å²ã§æ£ããæ©èœããªããªããŸãã
â èš±å¯ãããŠããŸãã: ããããã£ãŸãã¯ãã©ã¡ãŒã¿ãŒã«å¯ŸããŠåãå ¥ããããå€ã®ç¯å²ãæžãã
â çŠæ¢äºé : ããããã£ããã£ãŒã«ããæ»ãå€ããŸã㯠out ãã©ã¡ãŒã¿ãŒã§è¿ãããå€ã®ç¯å²ãåºããããš
â DISALLOWED: ããããã£ããã£ãŒã«ããã¡ãœããã®æ»ãå€ããŸã㯠out ãã©ã¡ãŒã¿ãŒã®æ»ãå€ã倿Žãã
â DISALLOWED: ããããã£ããã£ãŒã«ãããŸãã¯ãã©ã¡ãŒã¿ãŒã®æ¢å®å€ã倿Žãã
ãã©ã¡ãŒã¿ãŒã®æ¢å®å€ã倿ŽãŸãã¯åé€ããããšã¯ããã€ããªåºåãã§ã¯ãããŸããã ãã©ã¡ãŒã¿ãŒã®æ¢å®å€ãåé€ãããšãœãŒã¹ã®äžæãçºçãããã©ã¡ãŒã¿ãŒã®æ¢å®å€ã倿Žãããšãåã³ã³ãã€ã«åŸã«åäœãäžæãããå¯èœæ§ããããŸãã
ãã®ããããã©ã¡ãŒã¿ãŒã®æ¢å®å€ãåé€ããããšã¯ããããŸãããæé€ããããã«ããããã®æ¢å®å€ãæ°ããã¡ãœãã ãªãŒããŒããŒãã« "ç§»å" ããå Žåã«èš±å®¹ãããŸãã ããšãã°ãæ¢åã®ã¡ãœãã
MyMethod(int a = 1)ãèããŠã¿ãŸããããMyMethodãšaã® 2 ã€ã®çç¥å¯èœãªãã©ã¡ãŒã¿ãŒãæã€bã®ãªãŒããŒããŒããå°å ¥ããå Žåã¯ãaã®æ¢å®å€ãæ°ãããªãŒããŒããŒãã«ç§»åããããšã§äºææ§ãç¶æã§ããŸãã 2 ã€ã®ãªãŒããŒããŒãã¯MyMethod(int a)ãšMyMethod(int a = 1, int b = 2)ã§ãã ãã®ãã¿ãŒã³ã䜿çšãããšãMyMethod()ãã³ã³ãã€ã«ã§ããŸããâ æªèš±å¯: æ°å€ã®æ»ãå€ã®æå¹æ¡æ°ã倿Žãã
â 倿ãå¿ èŠ:å ¥åã®è§£æãšæ°ããäŸå€ã®ã¹ããŒã倿Žãã (è§£æã®åäœãããã¥ã¡ã³ãã§æå®ãããŠããªãå Žåã§ã)
â çŠæ¢ããã:
union宣èšã«ãããã±ãŒã¹åã®è¿œå ãåé€unionåã®ã±ãŒã¹åã®è¿œå ãŸãã¯åé€ã¯ããã€ããªåºåããšãœãŒã¹åºåãã®äž¡æ¹ã§ããã±ãŒã¹ã®çš®é¡ã远å ããåŸããã¿ãŒã³ ãããã³ã° ãã¹ãã¯å®å šã§ã¯ãªããªããŸããã ã³ã³ãã€ã©ã¯ããã¿ãŒã³ ãããã³ã°åŒãéç¶²çŸ çãšããŠèŠåããŸãã å®è¡æã«äºæããªãå€ãçºçãããšãã©ã³ã¿ã€ã äŸå€ãçºçããŸãã ã±ãŒã¹åãåé€ãããšããã®ã±ãŒã¹åã®ã³ã³ã¹ãã©ã¯ã¿ãŒå®£èšãåé€ãããŸãã
äŸå€
âïž èš±å¯:æ¢åã®äŸå€ã§ã¯ãªã掟çããäŸå€ãã¹ããŒãã
æ°ããäŸå€ã¯æ¢åã®äŸå€ã®ãµãã¯ã©ã¹ã§ããããã以åã®äŸå€åŠçã³ãŒãã¯åŒãç¶ãäŸå€ãåŠçããŸãã ããšãã°ã.NET Framework 4 ã§ã¯ãã«ã«ãã£ã®äœæãšååŸã®ã¡ãœããã¯ãã«ã«ãã£ãèŠã€ãããªãå Žåã«CultureNotFoundExceptionã§ã¯ãªããArgumentExceptionãã¹ããŒãå§ããŸããã CultureNotFoundExceptionã¯ArgumentExceptionããæŽŸçããŠãããããããã¯èš±å®¹ããã倿Žã§ãã
âïž èš±å¯: NotSupportedExceptionãNotImplementedExceptionãNullReferenceExceptionãããå ·äœçãªäŸå€ãæãã
âïž èš±å¯:å埩äžèœãšèŠãªãããäŸå€ãã¹ããŒãã
å埩äžèœãªäŸå€ããã£ããããã®ã§ã¯ãªããé«ã¬ãã«ã® catch-all ãã³ãã©ãŒã§åŠçããå¿ èŠããããŸãã ãããã£ãŠããŠãŒã¶ãŒã«ã¯ããããã®æç€ºçãªäŸå€ããã£ããããã³ãŒãã¯å¿ èŠãããŸããã å埩äžå¯èœãªäŸå€ã¯æ¬¡ã®ãšããã§ãã
âïž èš±å¯:æ°ããã³ãŒã ãã¹ã§æ°ããäŸå€ãã¹ããŒãã
äŸå€ã¯ãæ°ãããã©ã¡ãŒã¿ãŒå€ãŸãã¯ç¶æ ã§å®è¡ããã以åã®ããŒãžã§ã³ã察象ãšããæ¢åã®ã³ãŒãã§ã¯å®è¡ã§ããªãæ°ããã³ãŒã ãã¹ã«ã®ã¿é©çšããå¿ èŠããããŸãã
âïž èš±å¯: ããå ç¢ãªåäœãŸãã¯æ°ããã·ããªãªãæå¹ã«ããããã«äŸå€ãåé€ãã
ããšãã°ã以åã¯æ£ã®å€ã®ã¿ãåŠçãããã以å€ã®å Žåã¯
Divideãã¹ããŒããArgumentOutOfRangeExceptionã¡ãœããã¯ãäŸå€ãã¹ããŒããã«è² ã®å€ãšæ£ã®å€ã®äž¡æ¹ããµããŒãããããã«å€æŽã§ããŸããâïž èš±å¯: ãšã©ãŒ ã¡ãã»ãŒãžã®ããã¹ãã倿Žãã
éçºè ã¯ããŠãŒã¶ãŒã®ã«ã«ãã£ã«åºã¥ããŠå€æŽããããšã©ãŒ ã¡ãã»ãŒãžã®ããã¹ãã«äŸåããªãã§ãã ããã
â æªèš±å¯: äžèšä»¥å€ã®å Žåã«äŸå€ãã¹ããŒãã
â èš±å¯ãããŠããŸãã: äžèšä»¥å€ã®å Žåã®äŸå€ã®åé€
屿§
âïž èš±å¯ãããããš: 芳枬察象ã§ã¯ãªã屿§ã®å€ã倿Žãã
â çŠæ¢: 芳å¯å¯èœãªå±æ§ã®å€ã倿Žããããš
â 倿ãå¿ èŠ: 屿§ã®åé€
ã»ãšãã©ã®å Žåã屿§ ( NonSerializedAttribute ãªã©) ã®åé€ã¯é倧ãªå€æŽã§ãã
ãã©ãããã©ãŒã ã®ãµããŒã
âïž èš±å¯: 以åã¯ãµããŒããããªãã£ããã©ãããã©ãŒã ã§ã®æäœã®ãµããŒã
â çŠæ¢ãããŠããŸã: 以åã¯ãã©ãããã©ãŒã ã§ãµããŒããããŠããæäœããçŸåšã¯ãµããŒããããŠããªãããç¹å®ã®ãµãŒãã¹ããã¯ãå¿ èŠã«ãªããŸãã
å éšå®è£ ã®å€æŽ
â 倿ãå¿ èŠ:å éšã¿ã€ãã®è¡šé¢ç©ã倿Žãã
ãã®ãããªå€æŽã¯äžè¬ã«èš±å¯ãããŠããŸãããéå ¬éã®ãªãã¬ã¯ã·ã§ã³ã¯äºææ§ããªããªããŸãã äžè¬çãªãµãŒã ããŒãã£è£œã©ã€ãã©ãªã倿°ã®éçºè ãå éš API ã«äŸåããŠããå Žåããã®ãããªå€æŽãèš±å¯ãããªãå ŽåããããŸãã
â 倿ãå¿ èŠ: ã¡ã³ããŒã®å éšå®è£ ã倿Žãã
ãããã®å€æŽã¯äžè¬ã«èš±å¯ãããŸããããã©ã€ããŒããªãªãã¬ã¯ã·ã§ã³ã«ã¯æ¯éããããå¯èœæ§ããããŸãã 顧客ã³ãŒãããã©ã€ããŒããªãã¬ã¯ã·ã§ã³ã«é »ç¹ã«äŸåããŠããå Žåãã倿Žã«ãã£ãŠæå³ããªãå¯äœçšãçããå Žåããããã®å€æŽãèš±å¯ãããªãå ŽåããããŸãã
âïž èš±å¯:æäœã®ããã©ãŒãã³ã¹ãåäžããã
æäœã®ããã©ãŒãã³ã¹ã倿Žããæ©èœã¯äžå¯æ¬ ã§ããããã®ãããªå€æŽã«ãããæäœã®çŸåšã®é床ã«äŸåããã³ãŒããäžæãããå¯èœæ§ããããŸãã ããã¯ãéåææäœã®ã¿ã€ãã³ã°ã«äŸåããã³ãŒãã«ç¹ã«åœãŠã¯ãŸããŸãã ããã©ãŒãã³ã¹ã®å€æŽã¯ãåé¡ã® API ã®ä»ã®åäœã«ã¯åœ±é¿ããŸããããã以å€ã®å Žåã倿Žã¯äžæãããŸãã
âïž èš±å¯: æäœã®æ§èœã鿥çã«å€æŽããããš (å€ãã®å Žåããããæªåœ±é¿ãåãŒãããšããããŸã)
åé¡ã®å€æŽãäœããã®çç±ã§ç Žå£ç倿ŽãšããŠåé¡ãããŠããªãå Žåãããã¯èš±å®¹ãããŸãã å€ãã®å Žåã远å ã®æäœãå«ããããæ°ããæ©èœã远å ãããããã¢ã¯ã·ã§ã³ãå®è¡ããå¿ èŠããããŸãã ããã¯ã»ãšãã©ã®å Žåãããã©ãŒãã³ã¹ã«åœ±é¿ããŸãããåé¡ã® API ãæåŸ ã©ããã«æ©èœãããããã«äžå¯æ¬ ãªå ŽåããããŸãã
â DISALLOWED: åæ API ãéåæ (ããã³ãã®é) ã«å€æŽãã
ã³ãŒã倿Ž
âïž èš±å¯: ãã©ã¡ãŒã¿ãŒã«paramsã远å ãã
â çŠæ¢: æ§é äœ ã ã¯ã©ã¹ ã«å€æŽããããšããŸãã¯ãã®éã
â çŠæ¢: ã³ãŒã ãããã¯ã«checkedã¹ããŒãã¡ã³ãã远å ããããš
ãã®å€æŽã«ããã以åã«å®è¡ãããã³ãŒããã OverflowException ãã¹ããŒãããããšãããããã蚱容ãããŸããã
â DISALLOWED: ãã©ã¡ãŒã¿ãŒããparamsãåé€ããããšã¯èš±å¯ãããŠããŸãã
â æªèš±å¯:
paramsãã©ã¡ãŒã¿ãŒã®ã³ã¬ã¯ã·ã§ã³åã®å€æŽC# 13 以éã§ã¯ã
paramsãã©ã¡ãŒã¿ãŒã¯ãSpan<T>ãReadOnlySpan<T>ãã¢ã¯ã»ã¹å¯èœãªãã©ã¡ãŒã¿ãŒãªãã®ã³ã³ã¹ãã©ã¯ã¿ãŒãšã€ã³ã¹ã¿ã³ã¹ IEnumerable<T> ã¡ãœããã䜿çšããŠAddãå®è£ ããæ§é äœãŸãã¯ã¯ã©ã¹åãããã³IList<T>ãªã©ã®ç¹å®ã®ã€ã³ã¿ãŒãã§ã€ã¹åãªã©ãé å以å€ã®ã³ã¬ã¯ã·ã§ã³åããµããŒãããŸãã æ¢åã®paramsãã©ã¡ãŒã¿ãŒã®ã³ã¬ã¯ã·ã§ã³å (ããšãã°ãparams T[]ããparams ReadOnlySpan<T>) ã倿Žãããšãã¡ãœããã® IL ã·ã°ããã£ã倿Žããããã€ããªç Žå£ç倿Žã«ãªããŸãã 以åã®ããŒãžã§ã³ã«å¯ŸããŠã³ã³ãã€ã«ãããåŒã³åºãå ã¯åã³ã³ãã€ã«ããå¿ èŠããããŸããâïž èš±å¯: æ¡åŒµã¡ãœãããæ¡åŒµããã㯠ã¡ã³ããŒæ§æã«å€æãã
C# 14 以éã§ã¯ã以åã®
extensionãã©ã¡ãŒã¿ãŒæ§æã«å ããŠãthisãããã¯ã䜿çšããŠæ¡åŒµã¡ã³ããŒã宣èšã§ããŸãã ã©ã¡ãã®åœ¢åŒã§ãåã IL ãçæããããããåŒã³åºãå ã¯ããããåºå¥ã§ããŸããã æ¢åã®æ¡åŒµã¡ãœãããæ°ããæ¡åŒµãããã¯æ§æã«å€æããããšã¯ããã€ããªãšãœãŒã¹ã®äºææ§ããããŸããâ çŠæ¢: ã€ãã³ãã®çºçé åºã倿Žããããš
éçºè ã¯ãã€ãã³ããåãé åºã§çºçããããšãåççã«æåŸ ã§ããŸããéçºè ã³ãŒãã¯ãã€ãã³ããçºçããé åºã«ãã£ãŠé »ç¹ã«ç°ãªããŸãã
â èš±å¯ãããŠããŸãã: ç¹å®ã®ã¢ã¯ã·ã§ã³ã«å¯Ÿããã€ãã³ãã®çºçãåé€ãã
â DISALLOWED: æå®ãããã€ãã³ããåŒã³åºãããåæ°ã倿Žãã
â èš±å¯ãããŠããŸãã: åæåã«FlagsAttributeã远å ããããšã¯