русс | укр

C# - Главная
Контакты
Задайте вопрос...
Просмотр всех вопросов


Пространство имен
  ► System
  ► Microsoft


Для учеников (начинающих)
  ► Видео уроки
  ► Обучение
  ► Примеры программ
  ► Секреты в Си Шарп

Для профессионалов
  ► Обучение
  ► Примеры программ
  ► Задачки - для тебя!










Работа с классами C#

Язык C# позволяет разработчику определить новый тип данных – класс. Простейшее описание класса имеет следующий вид.

class имя класса {< список членов класса>}

имя класса – это любой идентификатор, уникальный в пределах своей сферы действия;

список членов класса – список, объявляющий члены класса с указанием уровня доступа.

Члены класса – это поля (члены-данные), методы (функции-члены), свойства и события. В данной лабораторной работе будут создаваться классы, имеющие в качестве членов поля и методы.

Например:

class Myclass {

public int i;

public float x;

public float f()

{return i*y;}

}

В С# имеется пять спецификаторов доступа: public, private, protected, internal, protected internal . Значения спецификаторов доступа следующие:

- public - член класса может быть использован любым методом;

- private - член класса может быть использован только методом того же класса,

- protected - член класса может быть использован только либо методом того же класса, либо методом производного класса;

- internal- член класса может быть использован только методом из той же сборки;

- protected internal- член класса может быть использован только либо методом из той же сборки или методом производного класса из любой сборки.

Во всех объектно-ориентированных языках четко различаются понятия «класс» и «объект». Класс – это определяемый пользователем тип данных, его можно представить себе как чертеж, по которому будут строяться сами данные, т.е. объекты (экземпляры) класса.

В C# создание объектов класса происходит с помощью операции new.

Например:

Myclass a1=new Myclass();

или

Myclass a2;

a2=new Myclass();

Ключевое слово new означает, что среде выполнения следует вызвать конструктор класса и выделить необходимое количество оперативной памяти под экземпляр класса. Поскольку класс относится к ссылочному типу, то выделении памяти производится из «кучи», находящейся в распоряжении среды выполнения .NET . Команды Myclass a1, Myclass a2, определяют ссылки на объекты класса, а не сами объекты, объекты создаются с помощью операции new . Но после того как объекты будут созданы, мы будем их называть объект (экземпляр) a1, и объект (экземпляр) a2.

Рассмотрим еще один пример:

Myclass c=new Myclass();

Myclass d;

d=c;

В этом примере создан один объект и две ссылки на него.

Доступ к членам класса осуществляется с помощью операции точка «.».

Например:

c.x=7; //полю х объекта с присвоено значение 7.

d.i=6; //полю i объекта d присвоено значение 6.

a1.x=c.f();//полю х объекта a1 присвоено значение, которое возвращает метод f, вызванный для объекта с, поскольку ссылка d также указывает на этот же объект, то метод f вернет значение 42.

Конструктор класса C#

Конструктор класса – это метод класса, который предназначен для создания объектов класса и инициализации их.

Конструктор обладает следующими свойствами:

1. Имя конструктора совпадает с именем класса.

2. Конструктор не имеет возвращаемого значения, даже типа void

3. Класс может содержать несколько конструкторов, отличающихся либо количеством, либо типами параметров (отличие в этом случае должно быть существенным), либо и тем и другим.

4. Конструктор без параметров называется конструктором по умолчанию.

5. Если ни один конструктор не был написан программистом, то конструктор по умолчанию генерируется компилятором.

6. Если в классе объявлен хотя бы один конструктор, то компилятор не создает своего.

7. В C# , в отличие от многих других языков, любой конструктор, если не указано иное, обнуляет значения полей.

8. Конструктор не может быть вызван явно, он вызывается автоматически при создании экземпляров класса.

 

Рассмотрим пример.

Определим в классе А два конструктора.

class A {

public int x,y;

public int f()

{return x+y;}

public A() { x=1; y=2; }

public A (int xx, int yy) { x=xx; y=yy;}

}

При выполнении команды A a=new A();для создания объекта класса используется конструктор без параметров. Полям объекта а будут присвоены, соответственно, значения 1 и 2.

Если при создании объекта требуется использовать конструктор с параметрами, то в операторе newпосле имени класса в круглых скобках указываются значения параметров, например, A b=new A(6,13);

А команда A c=new A(3);вызовет ошибку, потому что класс А не содержит конструктора с одним параметром, которому можно было бы присвоить значение 3.

В языке С# существует упрощенная форма написания конструктора: при описании полей класса можно написать инициализирующие выражения.

Пример.

class В {

public int i=10;

}

Все строки, содержащие инициализирующие выражения, включаются в начало всех конструкторов. В данном примере строка i=10; будет включена в конструктор, определяемый компилятором.

Просмотров: 1810






© 2012 ci-sharp.ru При использовании материала прямая индексирующая ссылка на сайт ОБЯЗАТЕЛЬНА.
Права строго защищены нормами международного права, интеллектуальной собственности и авторского права.