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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# 4.0: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚

Если Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ списком, раздСляСмым запятыми, Ρ‚ΠΎ этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.


int a, b=8, с=19, d; // ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ b ΠΈ с


Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ b ΠΈ с.


ДинамичСская инициализация

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


// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

using System;

class Dynlnit {

  static void Main() {

    // Π”Π»ΠΈΠ½Π° сторон ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

    double s1 = 4.0;

    double s2 = 5.0;

    // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ hypot динамичСски,

    double hypot = Math.Sqrt( (s1 * s1) + (s2 * s2) );

    Console.Write("Π“ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Π° Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° со сторонами "

             + s1 + " ΠΈ " + s2 + " Ρ€Π°Π²Π½Π° ");

    Console.WriteLine("{0:#.###}.", hypot);

  }

}


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.


Π“ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Π° Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° со сторонами 4 ΠΈ 5 Ρ€Π°Π²Π½Π° 6.403


Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: s1, s2 ΠΈ hypot. Π”Π²Π΅ ΠΈΠ· Π½ΠΈΡ… (s1 ΠΈ s2) ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ константами, А Ρ‚Ρ€Π΅Ρ‚ΡŒΡ (hypot) динамичСски инициализируСтся вычисляСмой Π΄Π»ΠΈΠ½ΠΎΠΉ Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρ‹. Для Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Math.Sqrt(). Как пояснялось Π²Ρ‹ΡˆΠ΅, для динамичСской ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎ любоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Math.Sqrt() (ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°) являСтся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ hypot. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ особо ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой элСмСнт, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ самой ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π² Ρ‚ΠΎΠΌ числС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.


НСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Как пояснялось Π²Ρ‹ΡˆΠ΅, всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² C# Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сначала указываСтся Ρ‚ΠΈΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int ΠΈΠ»ΠΈ bool, Π° Π·Π°Ρ‚Π΅ΠΌ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Но начиная с вСрсии C# 3.0, компилятору прСдоставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ самому ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, исходя ΠΈΠ· значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½Π° инициализируСтся. Вакая пСрСмСнная называСтся нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ.

НСявно типизированная пСрСмСнная ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова var ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°. Для опрСдСлСния Ρ‚ΠΈΠΏΠ° этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ компилятору слуТит Ρ‚ΠΈΠΏ Π΅Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Ρ‚.Π΅. значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½Π° инициализируСтся. Рассмотрим Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.


var Π΅ = 2.7183;


Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная Π΅ инициализируСтся Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ double, ΠΈ поэтому ΠΎΠ½Π° относится ΠΊ Ρ‚ΠΈΠΏΡƒ double. Если Π±Ρ‹ пСрСмСнная Π΅ Π±Ρ‹Π»Π° объявлСна ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


var Π΅ = 2.7183F;


Ρ‚ΠΎ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π±Ρ‹ отнСсСна ΠΊ Ρ‚ΠΈΠΏΡƒ float.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ дСмонстрируСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Он прСдставляСт собой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ нСявно.


// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…,

using System;

class ImplicitlyTypedVar {

  static void Main() {

    //Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ нСявно. Они отнСсСны

    // ΠΊ Ρ‚ΠΈΠΏΡƒ double, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ…

    // выраТСния сами относятся ΠΊ Ρ‚ΠΈΠΏΡƒ double,

    var s1 = 4.0;

    var s2 = 5.0;


    //Π˜Ρ‚Π°ΠΊ, пСрСмСнная hypot Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° нСявно ΠΈ

    // относится ΠΊ Ρ‚ΠΈΠΏΡƒ double, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚,

    // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Sqrt(), ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ double,

    var hypot = Math.Sqrt((s1 * s1) + (s2 * s2));

    Console.Write("Π“ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Π° Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° со сторонами "

             + s1 + " by " + s2 + " Ρ€Π°Π²Π½Π° ");

    Console.WriteLine("{0:#.###}.", hypot);


    // Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилирован,

    // ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная s1 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ double ΠΈ

    // Π΅ΠΉ нСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ дСсятичноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

    // s1 = 12.2М; // Ошибка!

  }

}


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ оказываСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нСявно типизированная пСрСмСнная ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаСтся строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.


// s1 = 12.2М; // Ошибка!


Π­Ρ‚Π° опСрация присваивания Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСмСнная s1 относится ΠΊ Ρ‚ΠΈΠΏΡƒ double. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅ΠΉ нСльзя ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ дСсятичноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ, явно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, β€” Π² способС опрСдСлСния Π΅Π΅ Ρ‚ΠΈΠΏΠ°. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот Ρ‚ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΎΠ½ закрСпляСтся Π·Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π΅Π΅ сущСствования. Π­Ρ‚ΠΎ, Π² частности, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ s1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Ρ‹ Π² C# Π½Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Напротив, нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для особых случаСв, ΠΈ самый ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ языку ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… запросов (LINQ), ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСмому Π² Π³Π»Π°Π²Π΅ 19. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈ Π²ΠΏΡ€Π΅Π΄ΡŒ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ явно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

И послСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ нСявно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ объявлСниС


var s1 =4.0, s2=5.0; // Ошибка!


являСтся Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скомпилировано. Π’Π΅Π΄ΡŒ Π² Π½Π΅ΠΌ прСдпринимаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, s1 ΠΈ s2, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.


ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΈ врСмя сущСствования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, использовавшиСся Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, объявлялись Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Main(). Но Π² C# Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π² любом ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅. Как пояснялось Π² Π³Π»Π°Π²Π΅ 2, ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ начинаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой ΠΈ оканчиваСтся Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой. Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ ΠΈ опрСдСляСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° начинаСтся Π±Π»ΠΎΠΊ, образуСтся новая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия опрСдСляСт Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… частях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ уточнСния. Она опрСдСляСт Ρ‚Π°ΠΊΠΆΠ΅ врСмя сущСствования Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ C# ΠΊ числу Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… относятся области дСйствия, опрСдСляСмыС классом ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. РассмотрСниС области дСйствия класса (ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Ρ… Π² Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) придСтся ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° Π² этой ΠΊΠ½ΠΈΠ³Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ классы. А Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ области дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΆΠ΅ Π² самом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, опрСдСляСмая ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, начинаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой ΠΈ оканчиваСтся Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой. Но Ссли Ρƒ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ‚ΠΎ ΠΈ ΠΎΠ½ΠΈ входят Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² области дСйствия, Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ для ΠΊΠΎΠ΄Π°, находящСгося Π²Π½Π΅ этой области. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, объявляя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ области дСйствия, Π²Ρ‹ Ρ‚Π΅ΠΌ самым Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚Π΅ Π΅Π΅ ΠΎΡ‚ доступа ΠΈΠ»ΠΈ видоизмСнСния Π²Π½Π΅ Π΄Π°Π½Π½ΠΎΠΉ области. РазумССтся, ΠΏΡ€Π°Π²ΠΈΠ»Π° области дСйствия слуТат основаниСм для инкапсуляции.

ΠžΠ±Π»Π°ΡΡ‚ΠΈ дСйствия ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. НапримСр, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° создаСтся ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ образуСтся ΠΈ новая, влоТСнная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия. Π’ этом случаС внСшняя ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²ΠΎ внСшнСй области дСйствия, Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄ΠΈΠΌΡ‹ для ΠΊΠΎΠ΄Π° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области дСйствия. Но ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π½Π΅ справСдливо: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области дСйствия, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π²Π½Π΅ этой области.