Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# для профСссионалов. Π’ΠΎΠΌ IIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 121

Автор Π‘ΠΈΠΌΠΎΠ½ Робинсон

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π² основном Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ†Π°ΠΌ Π² C#, Ρ‡Ρ‚ΠΎ ΠΈ Π² C++:

int NCustomers, Result;

double DistanceTravelled;

double Height = 3.75;

const decimal Balance = 344.56M;

Π₯отя, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹. Как Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Ρ‡Π»Π΅Π½Ρ‹ класса. C# Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ эквивалСнт, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ статичСских (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠΌ) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² C++. Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² C# полями.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ C# Ρ‚Π°ΠΊΠΆΠ΅ строго Ρ€Π°Π·Π»ΠΈΡ‡Π°Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Π² стСкС (Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Π² ΠΊΡƒΡ‡Π΅ (ссылочныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…). ΠœΡ‹ ΠΏΠΎΠ·ΠΆΠ΅ рассмотрим этот вопрос Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Как ΠΈ Π² C++, C# ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ собствСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ классы ΠΈΠ»ΠΈ структуры.

Π’ C# ΠΈ C++ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… для C# ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

Имя Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π‘ΠΈΠΌΠ²ΠΎΠ» sbyte 8-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ   byte 8-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°   short 16-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ   ushort 16-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ°   int 32-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ   uint 32-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° U long 64-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число со Π·Π½Π°ΠΊΠΎΠΌ L ulong 64-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π±Π΅Π· Π·Π½Π°ΠΊΠ° UL float 32-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ со Π·Π½Π°ΠΊΠΎΠΌ F double 64-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ со Π·Π½Π°ΠΊΠΎΠΌ D bool true ΠΈΠ»ΠΈ false   char 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ символ Unicode '' decimal Число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с 28 Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΌΠΈ Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ M string ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ символов Unicode ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ "" object Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΠΌ эквивалСнтом Π² C++ являСтся void*, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ object Π½Π΅ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ символ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ столбцС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±ΡƒΠΊΠ²Ρƒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° послС числа, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ явно, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 28UL ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ число 28, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ ΠΊΠ°ΠΊ long Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Как ΠΈ Π² случаС C++, ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обозначСния символов, Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для строк. Однако Π² C# символы всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ символами Unicode, Π° строки ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ссылочным Ρ‚ΠΈΠΏΠΎΠΌ, Π° Π½Π΅ просто массивом символов.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ, Ρ‡Π΅ΠΌ Π² C++. НапримСр, Π² C++ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ оТидаСтся, Ρ‡Ρ‚ΠΎ int Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ 2 Π±Π°ΠΉΡ‚Π° (16 Π±ΠΈΡ‚ΠΎΠ²), Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ANSI C++ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это зависСло ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Windows int Π² C++ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°, ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ сколько ΠΈ long. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ достаточно ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ совмСстимости ΠΏΡ€ΠΈ пСрСносС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ C++ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π² C# ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ string ΠΈ object) ΠΈΠΌΠ΅Π΅Ρ‚ явноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² (ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ являСтся любой ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ string ΠΈ object) фиксирован Π² C#, Ρ‚ΠΎ сущСствуСт мСньшая ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ sizeof, хотя ΠΎΠ½ ΠΈ Π΅ΡΡ‚ΡŒ Π² C#, Π½ΠΎ допустим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ (ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ описано ΠΏΠΎΠ·ΠΆΠ΅).

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° Π² C# Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΈΠΌΠ΅Π½Π°ΠΌ C++ ΠΈ сущСствуСт достаточно ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятноС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ синтаксичСски. Π’ частности, signed ΠΈ unsigned Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами Π² C# (Π² C++ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ long ΠΈ short для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, unsigned long, short int). Π’Π°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ нСдопустимы Π² C#, поэтому привСдСнная Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π° являСтся фактичСски ΠΏΠΎΠ»Π½Ρ‹ΠΌ списком ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ C++ (Π½ΠΎ ΠΊΠ°ΠΊ Π² Java) Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C# Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. НапримСр, Π² C# Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π² строку ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

int I = 10;

string Y = I.ToString();

МоТно Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

string Y = 10.ToString();

Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΡΠ½ΡƒΡŽ связь ΠΌΠ΅ΠΆΠ΄Ρƒ C# ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов .NET. C# ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, отобраТая ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, string отобраТаСтся Π² System.String, int Π² System.Int32 ΠΈ Ρ‚.Π΄. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π° самом Π΄Π΅Π»Π΅ Π² C# всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Однако ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для синтаксичСских Ρ†Π΅Π»Π΅ΠΉ. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° эти Ρ‚ΠΈΠΏΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ описанныС Π½ΠΈΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ языка, поэтому Π½Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, связанной с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, доступныС для Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ подробности прСдставлСны Π² MSDN. Однако Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ особСнности:

β–‘ Π’сС Ρ‚ΠΈΠΏΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ToString(). Для Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строковоС прСдставлСниС ΠΈΡ… значСния.

β–‘ char содСрТит большоС число свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ своСм содСрТимом (IsLetter, IsNumber ΠΈ Ρ‚.Π΄.), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для выполнСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ (ToUpper(), ToLower()).

β–‘ string ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ большоС число ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π’Π°ΠΊΠΆΠ΅ доступСн ряд статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ‡Π»Π΅Π½ΠΎΠ² ΠΈ свойств. Они Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

β–‘ Π¦Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ MinValue ΠΈ MaxValue, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ минимальноС ΠΈ максимальноС значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

β–‘ Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… float ΠΈ double Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ свойство Epsilon, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ наимСньшСС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС нуля, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π² Π½Π΅ΠΌ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ.

β–‘ ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния β€” NaN (Π½Π΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ), PositiveInfinity (ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ) ΠΈ NegativeInfinity (ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ для float ΠΈ double. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вычислСния Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ эти значСния Π² подходящих ситуациях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа Π½Π° ноль Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ PositiveInfinity, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ нуля Π½Π° Π½ΡƒΠ»ΡŒ создаст NaN. Π­Ρ‚ΠΈ значСния доступны ΠΊΠ°ΠΊ статичСскиС свойства.

β–‘ ΠœΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС числовыС, ΠΈΠΌΠ΅ΡŽΡ‚ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Parse(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· строки: double D = double.Parse("20.5").

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² C# Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…: int.MaxValue ΠΈ float.Epsilon.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° являСтся процСссом, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хранящССся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… прСобразуСтся Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Π’ C++ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ явно ΠΈΠ»ΠΈ нСявно:

float f1 = 40.0;

long l1 = f1; // Π½Π΅ΡΠ²Π½ΠΎ

short s1 = (short)l1; // ΡΠ²Π½ΠΎ, старый ΡΡ‚ΠΈΠ»ΡŒ C

short s2 = short(f1); // ΡΠ²Π½ΠΎ, Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ C++

Если ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° опрСдСляСтся явно, Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ явно указываСтся имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… назначСния. C++ позволяСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ явныС прСобразования Ρ‚ΠΈΠΏΠ° Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… стилСй β€” старым стилСм Π‘, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠΌΠ΅Ρ‰Π°Π»ΠΎΡΡŒ Π² скобки, ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ стилСм, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ помСщаСтся Π² скобки. Оба стиля ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π²Ρ‹ΡˆΠ΅ ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ вопросом синтаксичСского прСдпочтСния, Π²Ρ‹Π±ΠΎΡ€ стиля Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° ΠΊΠΎΠ΄. Π’ C++ допустимы прСобразования Π»ΡŽΠ±Ρ‹Ρ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Однако, Ссли сущСствуСт риск ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² связи с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… назначСния ΠΈΠΌΠ΅Π΅Ρ‚ мСньший Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ исходный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ настройки уровня ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, поэтому компилятор Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π―Π²Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ прСобразования являСтся Π½Π° самом Π΄Π΅Π»Π΅ способом ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ компилятору Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ дСйствиС ΠΎΠ±Π΄ΡƒΠΌΠ°Π½Π½ΠΎ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ подавлСнию всСх ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.