VB.NET рдФрд░ C # рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реВрдЪреАред рднрд╛рдЧ реи

рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, TIOBE рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ C # рдкрд░ VB.NET рд╢реНрд░реЗрд╖реНрдарддрд╛ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЬреАрд╡рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реАред рдЗрд╕рд▓рд┐рдП, AngReload рдХреА рд╕рд▓рд╛рд╣ рдкрд░ , StackOverflow рдХреЗ рд░реБрдЭрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ ред

C # рдЕрднреА рднреА рдордЬрдмреВрдд рд╣реИ! рдЬрд┐рд╕ рдХреНрд░рд╛рдВрддрд┐ рдХреА рдмрд╛рдд рдЗрддрдиреЗ рд╕рдордп рд╕реЗ рдХреА рдЬрд╛ рд░рд╣реА рдереА, рд╡рд╣ рд░рджреНрдж рд╣реЛ рдЧрдИ рд╣реИ! рд╣реБрд░реНрд░реЗ, рдХреЙрдорд░реЗрдбреНрд╕! рдпрд╛ рдирд╣реАрдВ? TIOBE рд░реЗрдЯрд┐рдВрдЧ рдЦреЛрдЬ рдЗрдВрдЬрди рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ SO рд░реЗрдЯрд┐рдВрдЧ рдкреВрдЫреЗ рдЧрдП рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЯреИрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╢рд╛рдпрдж VB.NET рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдРрд╕реЗ рд▓реЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕реНрдЯреИрдХрд╡реЗрд░рдлреНрд▓реЛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ? рдпрд╛ Google, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╣рд╛рдВ рдЧрдП, рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ? рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд Miscrosoft рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛ, рдФрд░ рд╕рднреА рдХреБрдЫ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдкрд╣рд▓реЗ рд╣реА рджрд┐рдП рдЬрд╛ рдЪреБрдХреЗ рд╣реЛрдВред

рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, VB.NET рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╕реНрдерд┐рд░ рд╣реИ, рдпрджреНрдпрдкрд┐ рдорд╛рддреНрд░рд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рд╣реИред рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдФрд░ рднрд╛рд╖рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдордЬрдмреВрдд рдЯреАрдо рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдкрд░рд┐рдгрд╛рдо рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдиреАрдЪреЗ рдЗрд╕ рдЯреАрдо рдХреЗ рдПрдХ рд╕рджрд╕реНрдп рдПрдВрдердиреА рдЧреНрд░реАрди рдХреЗ рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИред

рд╕рд╛рдордЧреНрд░реА


рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда

рд░реВрдкрд╛рдВрддрд░рдг



рднрд╛рд╡



рд░реВрдкрд╛рдВрддрд░рдг


34. рдмреВрд▓рд┐рдпрди рдкрд░рд┐рд╡рд░реНрддрди


Boolean True рдХреЛ рдХрд┐рд╕реА рднреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреИрджрд╛рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП Boolean True рд╣реИ -1 , рдФрд░ рдХрд┐рд╕реА рднреА рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ C # рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, Convert.ToInt32 рд╡рд┐рдзрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, True рдХреЛ 1 рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ IL рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ, 0 рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рднреА рд╕рдВрдЦреНрдпрд╛ True рдмрджрд▓ рдЬрд╛рддреА рд╣реИред

рдХреНрдпреЛрдВ? VB рдХрд╛ рдХрд╛рд░рдг -1 рд╕реЗ 1 рддрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ -1 (рд╕рднреА рдмрд┐рдЯреНрд╕ 0 рдкрд░ рд╕реЗрдЯ рд╣реИрдВ) рдХреА рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдиреЗрдЧреЗрдЯрд┐рд╡ -1 (рд╕рднреА рдмрд┐рдЯреНрд╕ 1 рд╕реЗрдЯ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ And , Or Xor рдЬреИрд╕реЗ рдСрдкрд░реЗрд╢рдиред
"рдЯреНрд░реВ" рдФрд░ "рдЧрд▓рдд" рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдмрд╛рддрдЪреАрдд рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдмреЗрд╢рдХ, рдХреЗрд╕ рдЕрд╕рдВрд╡реЗрджрдирд╢реАрд▓)ред

35. Enum рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Enum рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реАрдорд┐рдд рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд┐рдХрд▓реНрдк рд╕рдЦреНрдд рдСрди рдкрд░ рд╕реЗрдЯ рд╣реЛ


рджрд╛рд░реНрд╢рдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдХ рднрд╛рд╖рд╛ Enum рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдореВрд▓ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдорд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬрд╣рд╛рдВ рдЬрдЧрд╣ рд╕рдорд╛рдирддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рддреБрд▓рдирд╛ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдорд╛рди рд╕реЗ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдЬрдмрдХрд┐ C # рдореЗрдВ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред

рдХрд╣рд╛рдиреА рдХрд╛ рд╕рдордп: рд░реЛрдЬрд▓рд┐рди рдПрдкреАрдЖрдИ рдХрдИ рдЖрдВрддрд░рд┐рдХ рд╕рдВрд╢реЛрдзрдиреЛрдВ рд╕реЗ рдЧреБрдЬрд░рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ SyntaxKind рдЧрдгрдирд╛ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдереА, рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрдпрд╛ рдиреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IfStatement , TryCastExpression )ред рдПрдХ рдмрд╛рд░, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдПрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рднрд╛рд╖рд╛ рд╕реЗ рдЕрдореВрд░реНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ SyntaxKind рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓реМрдЯрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ SyntaxKind рд░реВрдк рдореЗрдВ, рдФрд░ рдХрдЪреНрдЪреЗ SyntaxKind рдФрд░ SyntaxKind рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рддреБрд░рдВрдд рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдЖрдпрд╛ рдФрд░ рд╢рд┐рдХрд╛рдпрдд рдХреА: "int рд╣реИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╕реНрддрд╛рд░, рдореБрдЭреЗ рдПрдХ рдХрд╛рд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛! " ред

рд╡рд░реНрд╖реЛрдВ рдХреЗ рджреМрд░рд╛рди, рдПрдкреАрдЖрдИ рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ ( Property Kind As SyntaxKind ) рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдПрдХ рднрд╛рд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛, рдФрд░ рд╕рднреА рдПрдкреАрдЖрдИ Property Kind As SyntaxKind рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд▓рдЧреЗред рд╕рднреА C # рдХреЛрдб рдЯреВрдЯ рдЧрдП, рдФрд░ рд╕рднреА VB рдХреЛрдб рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗ рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред

рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж, рд╣рдордиреЗ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо RawKind рдирд╛рдо рдкрд░ RawKind рдФрд░ рднрд╛рд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ Kind() рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╕рднреА C # рдХреЛрдб рдЯреВрдЯ рдЧрдП рдХреНрдпреЛрдВрдХрд┐ рдХреЛрд╖реНрдардХ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ VB рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛, рд╕рднреА VB рдХреЛрдб рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рдереЗ рдЬреИрд╕реЗ рдХрд┐ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред

36. рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ / рдирдХрд╛рд░рд╛рддреНрдордХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рди рд╡рд╛рддрд╛рд╡рд░рдг (рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕) рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди VB рдФрд░ C # рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; VB рдореЗрдВ, рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЬрд╛рдБрдЪ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИ


рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Byte 0 рд╕реЗ 255 рддрдХ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЖрдк Byte 1 рдХреЛ 255 рддрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдпрджрд┐ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ / рдЕрдВрдбрд░рдлреНрд▓реЛ рдЪреЗрдХ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдорд╛рди 0. рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ, рддреЛ рдпрд╣ рд╕рдмрд╕реЗ рдХрдо рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SByte рд▓рд┐рдП -128) рдХреЛ SByte ред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ / рдЕрдВрдбрд░рдлреНрд▓реЛ рдЬрд╛рдБрдЪ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЗрд╕ рд╣рд╛рдирд┐рд░рд╣рд┐рдд For loop рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

 Module Program Sub Main() For i As Byte = 0 To 255 Console.WriteLine(i) Next End Sub End Module 

github рд╕реНрд░реЛрдд рдХреЛрдб

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рд▓реВрдк VB рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ (рдЪреВрдВрдХрд┐ рд▓реВрдк рдХрд╛ рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ Byte рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЬрд╛рдВрдЪ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдпрд╣ рд▓реВрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 255 рдХреЗ рдмрд╛рдж рдореИрдВ рдлрд┐рд░ рд╕реЗ 0 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рд╕реЗ рдиреАрдЪреЗ рдШрдЯрд╛рддреЗ рд╕рдордп рдЕрдВрддрд░реНрд╡рд╛рд╣ рд╡рд┐рдкрд░реАрдд рд╕реНрдерд┐рддрд┐ рд╣реИред

рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╕реНрдерд┐рддрд┐ рдХреЗрд╡рд▓ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЬреЛрдбрд╝ рд╣реИред 130 рдФрд░ 150 рдХреА рд╕рдВрдЦреНрдпрд╛, рджреЛрдиреЛрдВ рдХреЛ Byte рд░реВрдк рдореЗрдВ рд▓реЗрдВред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЙрддреНрддрд░ 280 рд╣реИ, рдЬреЛ рдмрд╛рдЗрдЯ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЗрд╕рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╡рд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ 24 рд╣реИред

рд╡реИрд╕реЗ, рдЗрд╕рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдПрдХ рдмрд╛рдЗрдЯ рдорд┐рд▓рддреА рд╣реИ; рдпрд╣ рд╕рд┐рд░реНрдл рдмрд╛рдЗрдирд░реА рдЧрдгрд┐рдд рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдЖрдк рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдХреЗ рднреА рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд▓реЙрдиреНрдЧ рдХреЛ рдЗрдВрдЯреЗрдЧрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреЗ рдмрд┐рдирд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗрд╡рд▓ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд┐рдЯреНрд╕ рдФрд░ рд╕рд╛рдорд╛рди рдХреЛ рдХрд╛рдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЗрд╕ рдЪрд░ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ? рдкреНрд░рджрд░реНрд╢рдиред рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд▓рдЖрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЧреИрд░-рдЪреЗрдХрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕рднреА рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪреЛрдВ рдХреА рддрд░рд╣ред VB рджрд░реНрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдБрдЪ рд╕рдХреНрд╖рдо рд╣реИред C # рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдЖрдЬ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддреА рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдкрд╣рд▓реЗ C # рдбреЗрд╡рд▓рдкрд░реНрд╕ C / C ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЖрдП рдереЗ, рд▓реЛрдЧреЛрдВ рдХреЗ рдЗрд╕ рд╕рдореВрд╣ рдХреЛ рд╕рдВрднрд╡рддрдГ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдб рдХреБрдЫ рдФрд░ рди рдХрд░реЗрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рдХреА рд▓рд╛рдЧрдд рд╣реЛ рд╕рдХрддреА рд╣реИ ; рдпрд╣ рдПрдХ рдХрдард┐рди рджрд╛рд░реНрд╢рдирд┐рдХ рдЕрдВрддрд░ рд╣реИ ред

Nuance: рдУрд╡рд░рдлреНрд▓реЛ / рдЕрдВрдбрд░рдлреНрд▓реЛ рдЪреЗрдХ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдиреЗ рдкрд░ рднреА, PositiveInfinity , NegativeInfinity , NaN рдХреЗ Single рдпрд╛ Double рд╕реЗ Decimal NaN рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ Decimal , рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рд┐рджреНрдзрд╛рдВрдд рджрд╢рдорд▓рд╡ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

37. рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░реЛрдВ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдВрдХрд░реЛрдВ рдХреЛ рдЯреНрд░рдВрдХрдЯрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдЧреЛрд▓рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ


рдпрджрд┐ рдЖрдк VB рдореЗрдВ 1.7 рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо 2 рд╣реЛрдЧрд╛ред C # рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо 1 рд╣реЛрдЧрд╛ред рдореИрдВ рдЕрдореЗрд░рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рдЧрдгрд┐рддреАрдп рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рдЧреЛрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВред рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рд░реНрдХрд▓ рдХреЗ рдмрд╛рд╣рд░ рдореБрдЭреЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ 1.7 рдХрд╛ рдирд┐рдХрдЯрддрдо рдкреВрд░реНрдгрд╛рдВрдХ 1 рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдФрд░ VB (рдФрд░ Math.Round рдкрджреНрдзрддрд┐ рдореЗрдВ) рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрд╡рд┐рджреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмреИрдВрдХ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдпрд╛ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рджреЛ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЗ рдмреАрдЪ рдмреАрдЪ рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП, рд╡реАрдмреА рдирд┐рдХрдЯрддрдо рд╕рдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреЛрд▓ рд╣реЛрддрд╛ рд╣реИред рддреЛ 1.5 рдХреЛ 2 рдХреЗ рд▓рд┐рдП рдЧреЛрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ 4.5 рдХреЛ 4 рд╕реЗ рдЧреЛрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рд╕реНрдХреВрд▓ рдореЗрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкрдврд╝рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдореБрдЭреЗ 0.5 рд╕реЗ рдЧреЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╢реВрдиреНрдп рд╕реЗ рдкрдХреНрд╖ рдХреА рдУрд░)ред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдмреИрдВрдХ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдХрд╛ рдпрд╣ рдлрд╛рдпрджрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрдзреЗ рдореЗрдВ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рддреЗ рд╕рдордп рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдкреИрд╕рд╛ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдореЗрд╢рд╛ рдкреИрд╕рд╛ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдмрдбрд╝реЗ рд╕реЗрдЯ рдкрд░, рдпрд╣ рдбреЗрдЯрд╛ рд╡рд┐рд░реВрдкрдг рдХреЛ рдЕрдВрддрд┐рдо рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд┐рдЪрд▓рди рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред

рдлрд░реНрдХ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ? рдЧреЛрд▓рд╛рдИ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рддреЗрдЬреА рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк LOB рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ VB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ VBA рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ Excel macros рдЬреИрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдмрд╕ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ...ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдореБрджреНрджрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...

38. NotInheritable Classes рдХреЛ / рдРрд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдмрджрд▓рдирд╛ рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╡реЗ рд╕рдВрдХрд▓рди рдХреЗ рд╕рдордп рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ


рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрджрд┐ рдЖрдк рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ NonInheritable class рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рд░реВрдкрд╛рдВрддрд░рдг рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдореВрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рд░реВрдкрд╛рдВрддрд░рдг рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рдирдЯрд╛рдЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, COM рдЗрдВрдЯрд░реЙрдк рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ, рдЬрдм рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдпрд╣ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдпрд╣ рд╣реЛрдЧрд╛ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, VB рдХрдВрдкрд╛рдЗрд▓рд░ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рдХреНрдпреЛрдВ? VB рдФрд░ COM рдПрдХ рд╕рд╛рде рдмрдбрд╝реЗ рд╣реБрдП рдЬрдм рд╡реЗ рдкреБрд░рд╛рдиреЗ рдкрдбрд╝реЛрд╕ рдореЗрдВ рдмрдЪреНрдЪреЗ рдереЗред рддреЛ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реАрдмреА рдЙрди рдЪреАрдЬреЛрдВ рдкрд░ рдмрд╣реБрдд рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ .NET 1.0 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рдордп COM рдореЗрдВ рдореМрдЬреВрдж рдереЗред

39. рдкреНрд░рдХрд╛рд░ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдирдкреИрдХ (рдЕрдирдмреЙрдХреНрд╕) рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛, NullReferenceException рдирд╣реАрдВ рд╣реИ


рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рдБ:
 CInt(CObj(Nothing)) = 0 

рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ CInt(Nothing) = 0 , рдФрд░ рднрд╛рд╖рд╛ рдХреБрдЫ рд╣рдж рддрдХ рд╕реБрд╕рдВрдЧрдд рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЪрд░ рдЯрд╛рдЗрдк рдХрд┐рдП рд╣реЛрдВ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рди рдХрд┐ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП # 25 рдкрд░ рддрд░реНрдХ рджреЗрдЦреЗрдВред

40. рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ


VB рдФрд░ C # рджреЛрдиреЛрдВ рдореЗрдВ рдЖрдк Short рдХреЛ Integer рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдкреИрдХ Short рдХреЛ Integer рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ? VB рдореЗрдВ Short рдХреЛ рдкрд╣рд▓реЗ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ Integer рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред C # рдореЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк int рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдирдкреИрдХ рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ InvalidCastException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдкреИрдХреНрдб рдиреНрдпреВрдореЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдиреНрдпреВрдореЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рджрд┐рдирд╛рдВрдХ рдХреЗ рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг (рд╣рд╛рдБ, рджрд╢рдорд▓рд╡ рдФрд░ рджрд┐рдирд╛рдВрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╣реИрдВ)ред

рдХреНрдпреЛрдВ? рдлрд┐рд░ рд╕реЗ, рдирд┐рд░рдВрддрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд╛рд╣реЗ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдКрдкрд░ # 39 рджреЗрдЦреЗрдВред

41. String рдФрд░ Char рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВ


  • String рдХреЛ Char String рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
  • Char рдХреЗрд╡рд▓ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ String рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдХреЛ рднреА VB (рдФрд░ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдпрд╛рдж рд╣реИред

42. String рдФрд░ Char рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВ


  • String рдЕрдкрдиреЗ рд╕рднреА рд╡рд░реНрдгреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ Char рд╕рд░рдгреА String рдмрджрд▓ рдЬрд╛рддреА рд╣реИред
  • Char рд╕рд░рдгреА рдЕрдкрдиреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ String рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд▓рд┐рдП: рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЖрдВрддрд░рд┐рдХ String рд╕рдВрд░рдЪрдирд╛ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред

рдордЬреЗрджрд╛рд░ рдХрд╣рд╛рдиреА: рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ .NET 3.5 рдФрд░ 4.0 рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╛рдпрд╛ (рдпрд╛ рдореИрдВ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореИрдВ рдЗрд╕ рдкрд░ рд╢реЛрдз рдХрд░ рд░рд╣рд╛ рдерд╛), рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ .NET рдЯреАрдо рдиреЗ ParamArray рд╕рдВрд╢реЛрдзрдХ рдХреЛ рджреВрд╕рд░реЗ String.Join рдЕрдзрд┐рднрд╛рд░ String.Join рдЬреЛрдбрд╝рд╛, рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИред ред рд╕рдЯреАрдХ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рд╕рдордп рдореЗрдВ рдЦреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП), рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ ParamArray рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде рдЕрдм рдЖрдк рдПрдХ Char рд╕рд░рдгреА рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдордЬреЗрджрд╛рд░ рд╡рд┐рд╖рдпред

43 рдФрд░ 44. рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХ рдФрд░ рддрд┐рдерд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ (рдЖрдорддреМрд░ рдкрд░)


  • CInt("&HFF") = 255
  • CInt("1e6") = 1_000_000
  • CDate("#12/31/1999#") = #12/31/1999#

рдпрд╣ рдЖрдзрд╛рд░ рдЙрдкрд╕рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ (рдпрд╛ рдСрдХреНрдЯрд▓) рдЗрдирдкреБрдЯ рдХреЛ рдПрдХ рдирдВрдмрд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ: CInt("&H" & input) ред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдпрд╣ рд╕рдорд░реВрдкрддрд╛ рдХрдо рд╣реЛрддреА рдЬрд╛ рд░рд╣реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реАрдмреА рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмрд╛рдЗрдирд░реА рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдмреА рдпрд╛ 1_000 рдЕрдВрдХ рд╕рдореВрд╣ 1_000 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд╕рдВрдХреЗрддрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдк рдкреНрд░рддреНрдпрдп рдХреЗ рдмрд┐рдирд╛, рдФрд░ рджрд┐рдирд╛рдВрдХ рд░реВрдкрд╛рдВрддрд░рдг рднреА рдорд╛рдирдХ рддрд┐рдерд┐ рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП ISO-8601 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ JSON рдкреНрд░рд╛рд░реВрдк рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: CDate("2012-03-19T07: 22Z") = #3/19/2012 02:22:00 AM# ред

рдХреНрдпреЛрдВ? рдореИрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдЖрдЬ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╣реИрдВ, рдЬреИрд╕реЗ # рдПрдлрдПрдл, рдпреВ + рдПрдлрдПрдл, 0 рдПрдХреНрд╕рдПрдлрдПрдлред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЬреАрд╡рди рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ ...

45. Char рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ


рдХреНрдпрд╛?!?!?
рдЗрди рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрдпрд╛ рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реИрдВ? VB Char рдФрд░ Integer рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдордирд╛ рдХрд░рддрд╛ рд╣реИ:

  • CInt("A"c) рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  • CChar(1) рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпреЛрдВ? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ VB рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ / рдпрд╛ рд╕рд╣рдЬ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди CInt("1") рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CInt("1") рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рдирдВрдмрд░ 1 (рдЪрд░рд┐рддреНрд░ рдореВрд▓реНрдп 1) тАЛтАЛрдХреА рдЙрдореНрдореАрдж рд╣реЛрдЧреА рдФрд░ рдЖрдзреЗ рдирдВрдмрд░ 49 (ASCII / UTF рдХреЛрдб) рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ рдЪрд░рд┐рддреНрд░ 1)ред рдЖрдзреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЧрд▓рдд рдЪреБрдирд╛рд╡ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, VB рдХреЗ рдкрд╛рд╕ рдХреНрд░рдорд╢рдГ ASCII / Unicode рдХреЛрдб рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, AscW рдФрд░ ChrW рд╡рд░реНрдг рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рд╣реИрдВред

рднрд╛рд╡


46. тАЛтАЛрдХреБрдЫ рднреА рдирд╣реАрдВ <> рдЕрд╢рдХреНрдд


VB рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ Nothing рд╢реВрдиреНрдп рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди", рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╢реВрдиреНрдп рд╣реИред рдЕрдВрддрд░ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  1. рдХреБрдЫ рднреА рдирд╣реАрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ ...
  2. рдпрд╣ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╣ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдпрд╣ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИред

рдкрд╣рд▓рд╛, рд╢рд╛рдпрдж рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕рдордЭ рдХрд░ рдЙрдбрд╝рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо "рд╕рд╣реА" рдЫрд╛рдкреЗрдЧрд╛:

 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) рд╕рд╛рде рд╣реА Integer (0) рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ VB2005 / 2008 рдореЗрдВ рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдЕрд╢рдХреНрдд рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

  Module Program Sub Main() Dim i = If(False, 1, Nothing) End Sub End Module 

github рд╕реНрд░реЛрдд рдХреЛрдб

рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛, рдХрд┐ рдХреЛрдИ i рдХреИрд╕реЗ рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ Integer? ( Nullable(Of Integer) ( Nullable(Of Integer) )ред рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Nothing рд╕рдВрджрд░реНрдн рд╕реЗ рдкреНрд░рдХрд╛рд░ Nothing рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдХрд╛рд░ рджреВрд╕рд░реЗ рдСрдкрд░реЗрдВрдб рд╕реЗ рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд╕рд░рд▓ non-nullable Integer (рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, Nothing рдХрднреА рднреА рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╣реИ:

 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 "рдЕрд╢рдХреНрдд" рд╕рдВрдХреЗрдд Nothing рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рднрд╛рд╖рд╛ рдПрдХ рдЕрдзрд┐рднрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИ рдЬреЛ рдЕрд╢рдХреНрдд рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ ( non-nullable , рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ "рд╕рдмрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ" рд╣реИ)ред рдХрдо рд╕реЗ рдХрдо, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ C # рдореЗрдВ рдЕрд╢рдХреНрдд рдХреА рддрд░рд╣, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░ Nothing рд▓рд╛рдЧреВ Nothing рд╣реИ, рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрд╡рд╛рдж рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЧрд▓рдд рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ Nothing = null (Is null?) ред

Nuance: C # 7.1 рдореЗрдВ рдПрдХ рдирдпрд╛ default рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ VB рдореЗрдВ Nothing рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк n рдХреЗ рдмрдЬрд╛рдп default C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рднреА рддреАрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ ред

рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдХрдИ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЛрдИ рдирд╣реАрдВ рдЬреАрддрд╛ рд╣реИ:

  • рд╣рд░ рдмрд╛рд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдПрдВ Nothing рдПрдХ рд╕рд╛рд░реНрдердХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ null рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ рдореЗрдВ null рдирд╣реАрдВ рд╣реИред
  • рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ 0 , 0.0 , ChrW(0) , False , #1/1/0001 12:00:00 AM# ChrW(0) #1/1/0001 12:00:00 AM# рдпрд╛ New T (рдХрд┐рд╕реА рднреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди) рдХрд╛ рд╣рд░ рдмрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рдЬрдм рднреА рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЗрд╕рдХрд╛ рдорд╛рди рдПрдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╣реИред
  • рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрд░реНрде рдЬреЛрдбрд╝реЗрдВ "рдЕрд╢рдХреНрдд, рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ!" Null рдпрд╛ Nothing?
  • рдкреНрд░рддреНрдпрдп (?) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдпрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рдореЗрдВ рдорд╛рди рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП If(False, 0?, Nothing)
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд░реВрдкрд╛рдВрддрд░рдг рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, If (False, CInt? (0), Nothing)

рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ / рдпрд╛ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдЗрд╕рд▓рд┐рдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

  • рдкреВрд░реНрд╡ рд╕рдордп - VB6 рдФрд░ VBA рдореЗрдВ "рдирдерд┐рдВрдЧ", "рдирд▓", "рдЦрд╛рд▓реА" рдФрд░ "рдорд┐рд╕рд┐рдВрдЧ" рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВред
  • 2002 - VB.NET рдореЗрдВ рдХреЗрд╡рд▓ Nothing (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди), рдФрд░ C # рдореЗрдВ - рдХреЗрд╡рд▓ null ред
  • 2005 - рд╕реА # default(T) (рдЯрд╛рдЗрдк T рдХрд╛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди default(T) рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдЬреЗрдирд░рд┐рдХ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рдореВрд▓реНрдп рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ; VB рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ Nothing рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рд╣реИред
  • 2017 - C # default (рд╕рдВрджрд░реНрдн рдореЗрдВ default рдорд╛рди) рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд┐рдирдореЗрдВ T рдирд┐рд░реНрджрд┐рд╖реНрдЯ T рдЕрдирд╛рд╡рд╢реНрдпрдХ рдпрд╛ рдЕрд╕рдВрднрд╡ рд╣реИ

VB Null рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (рдпрд╛ рд╕рдорддреБрд▓реНрдп) рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐:

  • рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред
  • рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЛрдВ рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ред
  • рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рдЕрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Nothing? ); рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ Nothing рдФрд░ Nothing? рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реЛрд░ рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ Nothing? рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдХреБрдЫ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛ред Nothing? )ред
  • рдЕрд╢рдХреНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Nothing рдмрдВрдж Nothing , рдФрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдорд╛рдиреА рд╣реЛрдЧрд╛ред
  • рд╣рд░ рдЬрдЧрд╣, рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рдЪрд▓рд┐рдд Nothing рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
  • Nothing рдФрд░ Null рдЕрднреА рднреА рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рджреЗрд░ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА, рдкрд░рд┐рд╡рд░реНрддрди, рдЖрджрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗред
  • рдпрд╣ рдЫреБрд░рд╛ рдШреЛрдВрдкрдиреЗ рдореЗрдВ рдмрдВрджреВрдХ рдХреА рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреБрдЫ рдЗрд╕ рддрд░рд╣ред

рдСрдлрдЯреЙрдкрд┐рдХ (рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд)

рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдКрдкрд░ рджрд┐рдП рдЧрдП рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдорд╛рди рдХреЗ:

 Module Program Sub Main() Dim i As Integer? = If(False, 1, Nothing) Console.WriteLine(i) End Sub End Module 

github рд╕реНрд░реЛрдд рдХреЛрдб

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо 0. рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ, рдпрджреНрдпрдкрд┐ рд╕рдВрдмрдВрдзрд┐рдд, рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕рд╣рдЬ рд░реВрдк рд╕реЗ, рдХреНрдпрд╛ 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 Then i = 1 Else i = Nothing Dim i As Integer? : If False Then i = 1 Else i = Nothing ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (If) рдЕрдкрдиреЗ рдСрдкрд░реЗрдВрдб рдХреЛ рдЕрдВрддрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреА "рд╕реВрдЪрдирд╛" рд╕реЗ рдЧреБрдЬрд░рддреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ VB рдореЗрдВ рдЙрди рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрд┐рдо (рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ) рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ ( Nothing , AddressOf , 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 рд╕реНрд░реЛрдд рдХреЛрдб

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, If рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рджреЛрдиреЛрдВ AddressOf рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ AddressOf рд░реВрдк рд╕реЗ Func(Of Integer, Integer, Integer) рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ Func(Of Integer, Integer, Integer) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред

, 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 

GitHub

C# ┬л-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 

GitHub

C# ( 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.PropertyChangedEventArgs
System.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 

GitHub

C# , 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#

  • ┬л1┬╗ + 1 == ┬л11┬╗

, + &
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#

  • 1 + 1 == 2

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 

GitHub

s = "" 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?) ' This line here: If value = _EndDate Then Return _EndDate = value RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(NameOf(EndDate))) End Set End Property Public Event PropertyChanged As PropertyChangedEventHandler _ Implements INotifyPropertyChanged.PropertyChanged End Class Module Program WithEvents Range As New BindableRange Sub Main() Range.EndDate = Today Range.EndDate = Today Range.EndDate = Nothing Range.EndDate = Nothing End Sub Private Sub BindableRange_PropertyChanged(sender As Object, e As PropertyChangedEventArgs) _ Handles Range.PropertyChanged Console.WriteLine(e.PropertyName & " changed.") End Sub End Module 

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 'Function [Select](Of T)(selector As Func(Of String, T)) As Foo ' Return Me 'End Function Function Where(predicate As Func(Of String, Boolean)) As Integer Return 0 End Function End Class Module Program Sub Main() Dim c As New Foo Dim q = From x In c Where True Select x End Sub End Module 

GitHub

VB, 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} ' BC36606: Range variable name cannot match the name of a member of the 'Object' class. Dim q = From n In numbers Select n.ToString() End Sub End Module 

GitHub

BC36606: 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 . , . , . .

Source: https://habr.com/ru/post/hi445580/


All Articles