Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
18
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Ограничения

Имеется несколько правил, которые необходимо выполнять при работе с определениями разделяемого класса:

  • Все определения разделяемого типа, являющиеся частями одного и того же типа, должны изменяться с использованием модификатора partial. Например, следующие объявления класса приведут к появлению ошибки:

    public partial class A { }

    //public class A { } // Error, must also be marked partial

  • Модификатор partial должен находиться непосредственно перед ключевыми словами class, struct или interface.

  • В определениях разделяемого типа могут присутствовать вложенные разделяемые типы, что показано в следующем примере:

----

  • Все определения разделяемого типа, являющиеся частями одного и того же типа, должны быть определены в одной сборке и в одном модуле (EXE-файл или DLL-файл). Разделяемые определения не могут находиться в разных модулях.

  • Имя класса и параметры универсального типа должны соответствовать всем определениям разделяемого типа. Универсальные типы могут быть разделяемыми. Все объявления разделяемого типа должны использовать одинаковые имена параметров в одном и том же порядке.

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

    • public

    • private

    • protected

    • internal

    • abstract

    • sealed

    • базовый класс

    • модификатор new (вложенные части)

    • универсальные ограничения

Example 1

Description

In the following example, the fields and the constructor of the class, CoOrds, are declared in one partial class definition, and the member, PrintCoOrds, is declared in another partial class definition.

Code

public partial class CoOrds

{

private int x;

private int y;

public CoOrds(int x, int y)

{

this.x = x;

this.y = y;

}

}

public partial class CoOrds

{

public void PrintCoOrds()

{

System.Console.WriteLine("CoOrds: {0},{1}", x, y);

}

}

class TestCoOrds

{

static void Main()

{

CoOrds myCoOrds = new CoOrds(10, 15);

myCoOrds.PrintCoOrds();

}

}

Output

CoOrds: 10,15

Пример 1 Описание

В следующем примере поля и конструктор класса CoOrds объявлены в одном определении разделяемого класса, а член PrintCoOrds — в другом определении разделяемого класса.

Код

----

Результат

CoOrds: 10,15

Example 2

Description

The following example shows that you can also develop partial structs and interfaces.

Code

partial interface ITest

{

void Interface_Test();

}

partial interface ITest

{

void Interface_Test2();

}

partial struct S1

{

void Struct_Test() { }

}

partial struct S1

{

void Struct_Test2() { }

}