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

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

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

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ максимальноС количСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… Π·Π΄Π°Π½ΠΈΠ΅,

// исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ минимальной ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, public int MaxOccupant(int minArea) { return Area / minArea;

Когда вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ MaxOccupant (), Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ minArea ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ минимальной ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. На эту Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ дСлится общая ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ здания ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, послС Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ вСсь класс Building, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ MaxOccupant ().

/*

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

*/

using System;

class Building {

public    int    Floors;    //    ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ этаТСй

public    int    Area;    //    ΠΎΠ±Ρ‰Π°Ρ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ здания

public    int    Occupants;    //    ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΆΠΈΠ»ΡŒΡ†ΠΎΠ²

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ    Π½Π°    ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°,

public int AreaPerPerson()    {

return Area / Occupants;

}

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ максимальноС количСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… Π·Π΄Π°Π½ΠΈΠ΅,

// исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ минимальной ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, public int MaxOccupant(int minArea) { return Area / minArea;

}

}

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ MaxOccupant(). class BuildingDemo { static void Main() {

Building house = new Building();

Building office = new Building();

// ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния полям Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ house, house.Occupants = 4; house.Area = 2500; house.Floors = 2;

// ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния полям Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ office, office.Occupants = 25; office.Area = 4200; office.Floors = 3;

Console.WriteLine("МаксимальноС количСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² Π΄ΠΎΠΌΠ΅, \ΠΏ" + "Ссли Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ " +

300 + " ΠΊΠ². Ρ„ΡƒΡ‚ΠΎΠ²: " + house.MaxOccupant(300));

"Π² ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ, \ΠΏ" +

"Ссли Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ " +

300 + " ΠΊΠ². Ρ„ΡƒΡ‚ΠΎΠ²: " + office.MaxOccupant(300));

}

}

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

МаксимальноС количСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² Π΄ΠΎΠΌΠ΅,

Ссли Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ 300 ΠΊΠ². Ρ„ΡƒΡ‚ΠΎΠ²: 8

МаксимальноС количСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ,

Ссли Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ 300 ΠΊΠ². Ρ„ΡƒΡ‚ΠΎΠ²: 14

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ нСдоступного ΠΊΠΎΠ΄Π°

ΠŸΡ€ΠΈ создании ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² слСдуСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π½ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ…. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ называСтся нСдоступным ΠΈ считаСтся Π² C# Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ. Если ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, содСрТащий нСдоступный ΠΊΠΎΠ΄, компилятор выдаст ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ содСрТания. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°.

public void MyMeth() { char a, b;

// . . .

if(a==b)    {

Console.WriteLine("Ρ€Π°Π²Π½ΠΎ") ; return;

} else {

Console.WriteLine("Π½Π΅ Ρ€Π°Π²Π½ΠΎ") ; return;

}

Console.WriteLine ("это нСдоступный ΠΊΠΎΠ΄");

}

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° MyMeth () всСгда происходит Π΄ΠΎ выполнСния послСднСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, содСрТащСго Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WriteLine(). Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС. Π’ΠΎΠΎΠ±Ρ‰Π΅β€˜Π³ΠΎΠ²ΠΎΡ€Ρ, нСдоступный ΠΊΠΎΠ΄ считаСтся ошибкой программирования, ΠΈ поэтому прСдупрСТдСния ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅ слСдуСт Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΡΠ΅Ρ€ΡŒΠ΅Π·.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Building ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ, Π² частности, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

house.Occupants = 4; house.Area = 2500; house.Floors = 2;

Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ примСняСтся Π² ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ написанном ΠΊΠΎΠ΄Π΅ Π‘#. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ Ρ‡Ρ€Π΅Π²Π°Ρ‚ ошибками (Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ). Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, сущСствуСт Π»ΡƒΡ‡ΡˆΠΈΠΉ способ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ: Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ конструктором^

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании. Π£ конструктора Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ имя, ΠΊΠ°ΠΊ ΠΈ Ρƒ Π΅Π³ΠΎ класса, Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса ΠΎΠ½ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ. Но Ρƒ конструкторов Π½Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ явно. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° общая Ρ„ΠΎΡ€ΠΌΠ° конструктора.

доступ имя_класса{список_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²) {

// Ρ‚Π΅Π»ΠΎ конструктора

}

^ Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, конструктор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для задания ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… экзСмпляра, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² классС, ΠΈΠ»ΠΈ ΠΆΠ΅ для выполнСния Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… установочных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для создания ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ сформированного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, доступ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставляСт собой ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа Ρ‚ΠΈΠΏΠ° public, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ конструкторы Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² классС. А список_ΠΏΠ°-Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ пустым, Ρ‚Π°ΠΊ ΠΈ состоящим ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π£ всСх классов ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ конструкторы, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π²Ρ‹ ΠΈΡ… ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² C# автоматичСски прСдоставляСтся конструктор, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра ΠΈΡ… значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся Π½ΡƒΠ»Π΅Π²ΠΎΠ΅, для Ρ‚ΠΈΠΏΠ° bool β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, Π° для ссылочных Ρ‚ΠΈΠΏΠΎΠ² β€” пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Но ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ свой собствСнный конструктор, Ρ‚ΠΎ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния конструктора.

// ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ конструктор.

using System;

class MyClass { public int x;

public MyClass()    {

x = 10;

}

}

class ConsDemo {

static void Main() {

MyClass tl = new MyClass();

MyClass t2 = new MyClass();

Console.WriteLine(tl,x + " " + t2.x);

}

}

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ конструктор класса MyClass ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄.

public MyClassO {

X = 10;

}

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

MyClass tl = new MyClassO;

конструктор MyClass () вызываСтся для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° tl, присваивая ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΅Π³ΠΎ экзСмпляра tl. Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10. Π’ΠΎ ΠΆΠ΅ самоС происходит ΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° t2. ПослС конструирования пСрСмСнная t2 . Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ.

10 10

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ конструкторы

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

// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ конструктор.

using System;

class MyClass { public int x;

public MyClass(int i) { x = i;

}

}

class ParmConsDemo { static void Main() {

MyClass tl = new MyClass(10);

MyClass t2 = new MyClass(88);

Console.WriteLine(tl.x + " " + t2.x);

}

}

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого ΠΊΠΎΠ΄Π° получаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

10 88

Π’ Π΄Π°Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ конструктора MyClass () ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ i, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ инициализируСтся пСрСмСнная экзСмпляра Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΊΠΎΠ΄Π°:

MyClass tl = new MyClass(10);

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ i пСрСдаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ….

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ конструктора Π² класс Building

Класс Building ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ конструктор, автоматичСски ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ поля Floors, Area ΠΈ Occupants ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Building.

// Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ конструктор Π² класс Building.

using System;

class Building {

public    int    Floors;    //    ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ этаТСй

public    int    Area;    //    ΠΎΠ±Ρ‰Π°Ρ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ здания

public    int    Occupants;    //    ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΆΠΈΠ»ΡŒΡ†ΠΎΠ²

// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ конструктор для класса Building, public Building(int f, int a, int o) {

Floors = f;

Area = a;

Occupants = o;

} \

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, public int AreaPerPerson()    {

return Area / Occupants;

}

// Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ максимальноС количСство Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΡ… Π·Π΄Π°Π½ΠΈΠ΅,

// исходя ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ минимальной ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. ^ public int MaxOccupant(int minArea) { return Area / minArea;

}

}

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ конструктор класса Building, class BuildingDemo { static void Main() {