Учитывая приведенные ниже настройки и фрагменты кода, какие причины вы можете придумать для использования одного вместо другого? У меня есть пара аргументов, использующих любой из них, но мне любопытно, что думают другие.
Настроить
public class Foo
{
public void Bar()
{
}
}
Первый фрагмент
var foo = new Foo();
foo.Bar();
Фрагмент два
new Foo().Bar();
5 ответов
Первая версия означает, что вы можете легче проверить foo
в отладчике перед вызовом Bar()
.
Первая версия также означает, что вы связываете имя с объектом (на самом деле это, конечно, имя переменной, но явно существует мысленная ассоциация), что иногда может быть полезно:
var customersWithBadDebt = (some big long expression)
customersWithBadDebt.HitWithBaseballBat();
Яснее, чем
(some big long expression).HitWithBaseballBat();
Если ни одна из этих причин не подходит, конечно, не стесняйтесь выбирать однострочную версию. Это личный вкус, который затем применяется к каждому конкретному контексту.
Если вы не собираетесь использовать экземпляр Foo для чего-то большего, чем просто выполнение этого вызова, я бы, вероятно, выбрал второй, но я не вижу, что должно быть какое-либо практическое различие, если только вызов не происходит очень часто (но это действительно так. не кажется мне очень вероятным с этой конструкцией).
Я бы предпочел второй вариант, поскольку он дает понять, что мне вообще не нужна ссылка на объект.
Я бы поставил под сомнение ваши мотивы использования этого метода в качестве экземпляра. Если бы я только обновил объект, чтобы вызвать для него один метод, а затем отбросить его, статический метод с зависимостями классов в качестве параметров должен был бы стать подходящим вариантом (хотя я презираю статику).
Что приводит к более интересной проблеме: если вы вообще не полагаетесь на внутреннее состояние, то вы всего лишь функция, и поэтому я бы сказал, что вы принадлежите какой-то сущности, а не своему собственному классу.
Я бы выбрал фрагмент номер один.
Если у вас будет класс Foo do Bar (), то Bar2 () будет проще.
Кроме того, его легче отлаживать, потому что вы можете смотреть foo, что вы не можете с фрагментом 2
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.