C # - каковы преимущества «частичных» классов?

== проверяет ссылки на объекты, .equals() проверяет строковые значения.

Иногда кажется, что == сравнивает значения, потому что Java делает некоторые закулисные вещи, чтобы убедиться, что одинаковые строки в строке являются одним и тем же объектом.

Для Например:

String fooString1 = new String("foo");
String fooString2 = new String("foo");

// Evaluates to false
fooString1 == fooString2;

// Evaluates to true
fooString1.equals(fooString2);

// Evaluates to true, because Java uses the same object
"bar" == "bar";

Но будьте осторожны с нулями!

== обрабатывает строки null в порядке, но вызов .equals() из пустой строки приведет к исключению:

String nullString1 = null;
String nullString2 = null;

// Evaluates to true
System.out.print(nullString1 == nullString2);

// Throws a NullPointerException
System.out.print(nullString1.equals(nullString2));

Итак, если вы знаете, что fooString1 может но не менее очевидно, что он проверяет значение null (из Java 7):

System.out.print(Objects.equals(fooString1, "bar"));
13
задан Community 23 May 2017 в 11:51
поделиться

5 ответов

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

31
ответ дан 1 December 2019 в 17:37
поделиться

Большим преимуществом является скрытие кода, сгенерированного компьютером (разработчиком).
Эрик Липперт недавно опубликовал в блоге сообщение о частичном ключевом слове в целом.

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

11
ответ дан 1 December 2019 в 17:37
поделиться

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

Когда дизайнер сгенерировал код в отдельном файле, намного легче работать по сравнению с 1.1, где код часто может быть изменен Visual Studio (в формах Windows).

Visual Studio по-прежнему создает беспорядок, синхронизируя файл дизайнера, код и файл дизайна с ASP.NET.

3
ответ дан 1 December 2019 в 17:37
поделиться

Другой момент заключается в том, что, когда класс реализует несколько интерфейсов, вы можете разделить реализации интерфейса на разные файлы.

Таким образом, каждый файл кода содержит только код, принадлежащий реализации интерфейса. Это согласно концепции разделения ответственности .

3
ответ дан 1 December 2019 в 17:37
поделиться

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

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

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

2
ответ дан 1 December 2019 в 17:37
поделиться
Другие вопросы по тегам:

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