Как частичные методы используются в C# 3.0?

вы пытались пропинговать сервер MySQL и telnet порт?

::: 3306 указывает, что ваш сервер MySQL прослушивает ipv4 и ipv6, если вы хотите получить к нему доступ через ipv6, вам нужно добавьте

bind-address = ::

для поддержки вашего доступа к ipv6

18
задан Keith 4 September 2008 в 12:00
поделиться

5 ответов

Частичные методы были представлены по подобным причинам для того, почему частичные классы были в.Net 2.

А частичный класс является тем, который может быть разделен через несколько файлов - компилятор создает их всех в один файл, когда он работает.

преимущество для этого состоит в том, что Visual Studio может предоставить графическому разработчику для части класса, в то время как кодеры продолжают работать другой.

наиболее распространенным примером является Конструктор форм. Разработчики не хотят располагать кнопки, поля ввода, и т.д. вручную большую часть времени.

  • В.Net 1 это было автоматически сгенерировано код в #region блок
  • В.Net 2, они стали отдельными классами разработчика - форма является все еще одним классом, это просто разделяется на один файл, отредактированный разработчиками, и один конструктором форм

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

В.Net 3.5 Linq был представлен. Linq имеет разработчика DBML для создания Ваших структур данных, и это генерирует автокод.

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

, Поскольку разработчики расширят эти классы (с дополнительными частичными файлами), они не могли использовать абстрактные методы здесь.

другая проблема - то, что большую часть времени эти методы привычка быть названными, и называющий пустые методы являются пустой тратой времени.

Пустые методы не оптимизированы .

, Таким образом, Linq генерирует пустые частичные методы. Если Вы не создадите свое собственное частичное для завершения их, то компилятор C# просто оптимизирует их.

Так, чтобы это могло сделать это, частичные методы всегда возвращаются пусто.

при создании нового файла Linq DBML, он автоматически сгенерирует частичный класс, что-то как [1 119]

[System.Data.Linq.Mapping.DatabaseAttribute(Name="MyDB")]
public partial class MyDataContext : System.Data.Linq.DataContext
{
    ...

    partial void OnCreated();
    partial void InsertMyTable(MyTable instance);
    partial void UpdateMyTable(MyTable instance);
    partial void DeleteMyTable(MyTable instance);

    ...

Затем в собственном частичном файле, можно расширить это:

public partial class MyDataContext
{
    partial void OnCreated() {
        //do something on data context creation
    }
}

, Если Вы не расширяете эти методы, они выводят оптимизированное право.

Частичные методы не могут быть открытыми - поскольку затем они должны были бы быть там, чтобы другие классы звонили. Если Вы пишете, что Ваши собственные генераторы кода I видят, что они полезны, но иначе они только действительно полезны для разработчика VS.

пример я упомянул, прежде чем будет одна возможность:

//this code will get optimised out if no body is implemented
partial void DoSomethingIfCompFlag();

#if COMPILER_FLAG
//this code won't exist if the flag is off
partial void DoSomethingIfCompFlag() {
    //your code
}
#endif

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

23
ответ дан 30 November 2019 в 07:23
поделиться

Генерация кода является одной из главных причин, они существуют и одна из главных причин использовать их.

<час>

РЕДАКТИРОВАНИЕ: Даже при том, что та ссылка к информации, характерной для Visual Basic, те же основные принципы относятся к C#.

2
ответ дан 30 November 2019 в 07:23
поделиться

Частичные методы очень похожи в понятии на Шаблонный Метод GoF поведенческая модель ( Шаблоны разработки , p325).

Они позволяют поведению алгоритма или операции быть определенным в одном месте и реализованным или измененным, в другом месте включая расширяемость и удовлетворение требованиям заказчика. Я начал использовать частичные методы в C# 3.0 вместо шаблонных методов, потому что я думает, что код является более чистым.

Одна хорошая функция - нереализованные частичные методы не подвергаются никакому времени выполнения наверху, поскольку они компилируются далеко.

10
ответ дан 30 November 2019 в 07:23
поделиться

Я рассматриваю их как легкие события. Вы можете иметь файл повторно используемого кода (обычно автоматически генерируемый, но не обязательно) и для каждой реализации, просто обработать события, о которых Вы заботитесь в Вашем частичном классе. На самом деле это - то, как это привыкло в LINQ к SQL (и почему функция языка была изобретена).

2
ответ дан 30 November 2019 в 07:23
поделиться

Вот лучший ресурс для частичных классов в C#.NET 3.0: http://msdn.microsoft.com/en-us/library/wa80x488 (По сравнению с 85) .aspx

я стараюсь не использовать частичные классы (за исключением partials, созданного Visual Studio для файлов разработчика; это является великим). Мне более важно иметь весь код для класса в одном месте. Если Ваш класс хорошо разработан и представляет одну вещь ( единственный принцип ответственности ), то весь код, для которого одна вещь должна быть в одном месте.

0
ответ дан 30 November 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: