При каких условиях хорошо иметь “частичный класс?”

Идеи объединяющегося Линделефа и Gregg Lind:

last <- function(x) { tail(x, n = 1) }

Работа при подсказке, я обычно опускаю" n=", т.е. tail(x, 1).

, В отличие от этого last от pastecs пакет, head и tail (от utils) работа не только на векторах, но также и на кадрах данных и т.д., и также может возвратить данные "без первых/последних n элементов", например,

but.last <- function(x) { head(x, n = -1) }

(Обратите внимание, что необходимо использовать head для этого, вместо [1 110].)

6
задан pencilCake 2 December 2009 в 14:57
поделиться

4 ответа

Когда вам нужно автоматически сгенерировать часть этих классов и вручную записать остальное содержимое классов.

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

Вот как MS генерирует контент класса для своих дизайнеров графического интерфейса (вспомните те * .designer.cs файл), и позволяет вам поместить мясо вашей логики в другой связанный файл ( *. cs )

17
ответ дан 8 December 2019 в 03:01
поделиться

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

public partial class MyClass
{
    private class NestedClass
    {
        ...
    }
}

Кроме того, есть небольшая хитрость, позволяющая вложить файл в проводник решений (чтобы сделать как winform и вложить файл Form1.designer.cs ).

<Compile Include="Foo.1.cs">
  <DependentUpon>Foo.cs</DependentUpon>
</Compile>

Вложенный файл в Visual Studio

6
ответ дан 8 December 2019 в 03:01
поделиться

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

Например, расширение LINQ на генерируемые классы SQL.

5
ответ дан 8 December 2019 в 03:01
поделиться

Допустим, у вас есть обработчики событий и другой код графического интерфейса пользователя в одном месте, и вы хотите сохранить другой код, не связанный с графическим интерфейсом пользователя, в одном месте. Паттерн MVC, который непрост в C #.

3
ответ дан 8 December 2019 в 03:01
поделиться
Другие вопросы по тегам:

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