ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: ironMan
9. августа 2011 01:06

Иногда некоторый класс играет чисто вспомогательную роль для другого класса и используется только внутри него. В этом случае логично описать его внутри существующего класса. Вот пример такого описания:



using System;
namespace test
{

class ClassA
{
/* Вложенный класс */
private class ClassB
{
public int z;
}

/* Переменная типа вложенного класса */
private ClassB w;

/* Конструктор */
public ClassA()
{
w = new ClassB ();
w.z=35;
}

/* Некоторый метод */
public int SomeMethod()
{
return w.z;
}
}

class Test
{
static void Main(string[] args)
{
ClassA v = new ClassA();
int k = v.SomeMethod();
Console.WriteLine(k);
}
}
}



После запуска программа выведет результат:

55

Здесь класс ClassB объявлен внутри класса ClassA, причем со словом private, так что его экземпляры мы можем создавать только внутри класса ClassA (что мы и делаем в конструкторе класса ClassA). Методы класса ClassA имеют доступ к экземпляру класса ClassB (как, например, метод SomeMethod). Вложенный класс имеет смысл использовать тогда, когда его экземпляр используется только в определенном классе. Кроме того, с вложением классов улучшается читаемость кода — если нас не интересует устройство основного класса, то разбирать работу вложенного класса нет необходимости.

( отрывок из книги В. В. Лабор "Си Шарп: Создание приложений для Windows" )


Если скучно тебе стало, то можно онлайн тв бесплатно смотреть.

Похожие записи


Изолированные классы в C#
Если вы хотите быть уверены, что класс никогда не будет использован как базовый, при определении класса примените модификатор sealed. Единственное ограничение: абстрактный класс не может быть изолированным, так как в силу своей природы предназначен для использования в качестве базового. И еще. Хотя изолированные классы предназначены для предотвращения непреднамеренног...

Как создать сборку в памяти и использовать ее классы отражением (reflection) на C# ?
Продолжаю тему загрузки плагинов из БД, начатую в предыдущих моих постах. Недавно на работе пришлось написать небольшой движок запускающий плагины на C#. Плагины хранились в виде classlib сборки (DLL). Они хранились в поле varchar(max) в таблице MS SQL Server. Соответственно после загрузки данных в массив байтов нужно было создать сборку в памяти, потом создать ...

Виртуальные свойства в C#
Свойства, как и методы, могут быть перегружены в производных классах. Для свойств также могут задаваться модификаторы virtual, override или abstract. Подробно о наследовании говорилось в главе «Методы», сейчас я лишь хочу еще раз привести подробный пример использования механизма виртуализации с применением свойств: [code:c#] using System; enum COLORS { RE...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий