Программирование >>  Программирование с использованием ajax 

1 ... 82 83 84 [ 85 ] 86 87 88 ... 396


Такой код тоже был бы допустимым:

MyClass myObj = new MyClass (); IMylnterface mylnt = myObj; mylnt.DoSomething() ;

Если же MyDerivedClass реализовал бы DoSomething явно, тогда использовать бы можно было только второй прием. Необходимый для этого код выглядит следующим образом:

public class MyClass : IMylnterface {

void IMylnterface.DoSomething ()

public void DoSomethingElse ()

Здесь метод DoSomething реализуется явно, a метод DoSomethingElse - неявно. Получать доступ непосредственно через экземпляр объекта myClass можно только к последнему.

Добавление в свойства блоков get и set с уровнем доступности, отличным OTpviblic

Ранее было сказано, что при реализации интерфейса со свойством нужно обязательно реализовать соответствующие блоки get и set. Это не совсем так: в свойство внутри класса, где определяющий это свойство интерфейс содержит только блок set, допускается добавлять блок get и наоборот. Подобное, однако, допускается только в случае использования для этого блока более ограничительного модификатора доступа, чем у того, что определен в интерфейсе. Из-за того, что блоки, определяемые в интерфейсе, изначально имеют уровень доступа public, получается, что добавлять можно только блоки с уровнем, отличным от public. Ниже приведен пример:

public interface IMylnterface {

int MylntProperty {

get;

public class MyBaseClass : IMylnterface {

protected int mylnt; public int MylntProperty {

get {

return mylnt;

protected set

mylnt = value;



Частичные определения классов

При создании классов с множеством членов одного или другого типа дело может довольно сильно усложняться, а файлы кода - становится очень длинными. Одним из приемов, который способен помогать в подобных случаях и который уже демонстрировался в предыдущих главах, является организации кода по разделам. Определение разделов в коде позволяет сворачивать и разворачивать их и тем самым делать код более удобным для восприятия. Например, определение класса может выглядеть следующим образом:

public class MyClass {

#region Fields private int mylnt; #endregion

#region Constructor public MyClass 0 {

mylnt = 99;

#endregion

#region Properties public int Mylnt {

get {

return mylnt;

mylnt = value;

#endregion

#region Methods

public void DoSomething0

Выполнение каких-нибудь действий...

#endregion

Здесь можно разворачивать и сворачивать поля, свойства, конструктор и методы класса, концентрируя внимание только на том коде, который представляет интерес. Подобным образом могут также создаваться и вложенные разделы, т.е. такие, которые должны становиться видимыми только при разворачивании того раздела, внутри которого они содержатся.

Однако даже в случае применения такого приема ситуация все равно может выйти из-под контроля. Поэтому существует еще один, альтернативный вариант и заключается он в использовании частичных определений классов. Проще говоря, он подразумевает разбиение определения класса на несколько файлов, помещая, например, определения полей, свойств и конструктора в один файл, а методов - в другой. Все, что для этого требуется - это просто использовать ключевое слово partial с классом в каждом файле, который содержит ту или иную часть его определения:



public partial class MyClass

В случае применения частичных определений классов ключевое слово partial должно присутствовать в каждом из содержащих часть определения файлов.

Частичные классы очень часто используются в Windows-приложениях для сокрытия кода, отвечающего за компоновку форм. На самом деле это уже демонстрировалось в главе 2. Код формы Windows в классе по имени Forml, например, хранился и файле Forml. cs, и в файле Forml. Designer. cs. Это позволяет концентрировать внимание на функциональных возможностях форм, не беспокоясь о дополнении кода не представляющей интерес информацией.

Напоследок важно обратить внимание на еще одну касающуюся частичных классов деталь, а именно на то, что интерфейсы, применяемые к одной части частичного класса, применяются ко всему классу. Это значит, что определение:

public partial class MyClass : IMylntefacel

public partial class MyClass : IMyInteface2

будет эквивалентно определению:

public class MyClass : IMylntefacel, IMyInteface2

To же самое касается и атрибутов, о которых более подробно будет рассказываться в главе 27.

Частичные определения методов

в частичных классах могут также определяться и частичные методы. Такие методы определяются в одном частичном определении класса без тела, а реализуются в другом частичном определении класса. И в том, и в другом месте с ними обязательно используется ключевое слово partial:

public partial class MyClass {

partial void MyPartialMethod () ;

public partial class MyClass {

partial void MyPartialMethod()

Реализация метода

Частичные методы могут быть статическими, но всегда являются приватными и не могут иметь возвращаемого значения. Любые используемые в них параметры не могут быть параметрами out, хотя и могут быть параметрами ref. С ними не может



1 ... 82 83 84 [ 85 ] 86 87 88 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика