Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Свойство: модификаторы доступа в аксессорахСодержание книги
Поиск на нашем сайте
По умолчанию доступность методов свойств («аксессоров») set и get оказывается такой же, как и у индексатора и свойства, частью которых они являются. Так, если свойство объявляется как public, то по умолчанию его set и get также становятся открытыми (public). Тем не менее для set или get можно указать собственный модификатор доступа, например private. Но в любом случае доступность методов свойства, определяемая таким модификатором, должна быть более ограниченной, чем доступность, указываемая для его свойства или индексатора. Существует целый ряд причин, по которым требуется ограничить доступность метода свойства. Допустим, что требуется предоставить свободный доступ к значению свойства, но вместе с тем дать возможность устанавливать это свойство только членам его класса. Для этого достаточно объявить аксессор данного свойства как private.
Вышесказанное иллюстрирует нижеследующее:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class UserInfo { int age;
public int Age { get { return age; } // Ввод закрыт вне класса private set { age = value; } }
public int myAge() { // Внутри класса доступ открыт Age = 26; return Age; } }
class Program { static void Main(string[] args) { UserInfo ui = new UserInfo(); // Для чтения доступ открыт вне класса Console.WriteLine(ui.Age); Console.WriteLine(ui.myAge()); /* * Так нельзя: * ui.Age = 26; * UserInfo ui1 = new UserInfo{ Age = 26 }; */ Console.WriteLine("Для продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } /* Выведет: * 0 * 26 * Для продолжения нажмите любую клавишу... */
Вероятно, ограничение доступа к аксессорам свойств оказывается наиболее важным для работы с автоматически реализуемыми свойствами. Создать автоматически реализуемое свойство только для чтения или же только для записи нельзя, поскольку оба get и set, должны быть указаны при объявлении такого свойства. Тем не менее, добиться желаемого результата все же можно, объявив один из аксессоров свойств автоматически реализуемого свойства как private.
На применение модификаторов доступа в аксессорах свойств накладываются следующие ограничения:
Понятие «Массив», «Строка», «Кортеж» и «Перечисление» Понятие «Массив» Понятие «Массив»
Понятие «Массив»
Массив — это структура данных, содержащая несколько переменных одного типа. Массив объявляется следующим образом:
type[] arrayName;
В следующем примере показано создание одномерных, многомерных массивов и «массивов массивов»:
class Program { static void Main() { // Объявляем одномерный массив int[] array1 = new int[5]; // Объявляем и заполняем int[] array2 = new int[] { 1, 3, 5, 7, 9 }; // Альтернативный синтаксис int[] array3 = { 1, 2, 3, 4, 5, 6 }; // Объявляем двумерный массив int[,] multiDimensionalArray1 = new int[2, 3]; // Объявляем и заполняем int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } }; // Объявляем массив массивов int[][] jaggedArray = new int[6][]; // Заполняем параметры для первого массива в массиве массивов jaggedArray[0] = new int[4] { 1, 2, 3, 4 }; } }
Массив имеет следующие свойства:
Массивы как объекты
В C# массивы фактически являются объектами, а не только адресуемыми областями непрерывной памяти, как в C и C++. Array является абстрактным базовым типом всех типов массивов. Можно использовать свойства и другие члены класса, которые имеет Array. В примере используется свойство Length для получения длины массива. В следующем коде длина массива numbers, равная 5, присваивается переменной lengthOfNumbers:
int[] numbers = { 1, 2, 3, 4, 5 }; int lengthOfNumbers = numbers.Length;
Класс Array позволяет использовать много других полезных методов и свойств для выполнения сортировки, поиска и копирования массивов.
В этом примере свойство Rank используется для отображения числа измерений массива:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main() { int[,] theArray = new int[5, 10]; Console.WriteLine("Массив имеет {0} измерений", theArray.Rank); Console.WriteLine("Для продолжения нажмите любую клавишу...");; Console.ReadKey(); } } } /* Выведет: * 2 * Для продолжение нажмите любую клавишу... */
Использование оператора foreach
В C# также предусмотрен оператор foreach. Этот оператор обеспечивает простой и понятный способ выполнения итерации элементов в массиве. Например, следующий код создает массив numbers и осуществляет его итерацию с помощью оператора foreach:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main() { int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 }; foreach (int i in numbers) { Console.Write("{0} ", i); } Console.WriteLine("\nДля продолжения нажмите любую клавишу...");; Console.ReadKey(); } } } /* Выведет: * 4 5 6 1 2 3 -2 -1 0 * Для продолжение нажмите любую клавишу... */
Этот же метод можно использовать для итерации элементов в многомерных массивах, например:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main() { int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } }; // Или // int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } }; foreach (int i in numbers2D) { System.Console.Write("{0} ", i); } Console.WriteLine("\nДля продолжения нажмите любую клавишу...");; Console.ReadKey(); } } } /* Выведет: * 9 99 3 33 5 55 * Для продолжение нажмите любую клавишу... */
Однако для лучшего контроля элементов в многомерных массивах можно использовать вложенный цикл for. Виды массивов Виды массивов
Одномерный массив
Можно объявить массив из пяти целых чисел с одним измерением, как показано в следующем примере:
int[] array = new int[5];
Массив содержит элементы с array[0] по array[4]. Оператор new служит для создания массива и инициализации элементов массива со значениями по умолчанию. В данном примере элементы массива инициализируются значением 0.
Массив, в котором хранятся строковые элементы, можно объявить таким же образом. Пример:
string[] stringArray = new string[6];
Массив можно инициализировать при объявлении. В этом случае спецификация ранга не нужна, поскольку она уже предоставлена по числу элементов в списке инициализации. Пример:
int[] array1 = new int[] { 1, 3, 5, 7, 9 };
Строковый массив можно инициализировать таким же образом. Ниже приведено объявление строкового массива, в котором каждый элемент инициализируется названием дня:
string[] weekDays = new string[] { "Пн.", "Вт.", "Ср.", "Чт.", "Пт.", "Суб.", "Вск." };
При инициализации массива при объявлении можно использовать следующий синтаксис:
int[] array1 = { 1, 3, 5, 7, 9 }; string[] weekDays = { "Пн.", "Вт.", "Ср.", "Чт.", "Пт.", "Суб.", "Вск." };
Можно объявить переменную массива без инициализации, но при присвоении массива этой переменной нужно использовать оператор new. Пример:
int[] array3; array3 = new int[] { 1, 3, 5, 7, 9 }; // OK //array3 = {1, 3, 5, 7, 9}; // Так нельзя
|
||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 398; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.49.73 (0.006 с.) |