Я понял. Благодарю.
===================

кую этим, это может быть новым вопросом, но здесь идет. Я испытываю желание добавить метод к классу, который мог бы иметь тысячи и тысячи экземпляров в памяти в данный момент времени. Теперь другой вариант - создание статического класса со статическим методом, и просто создайте метод [static] вместо метода экземпляра в классе. Примерно так:

Этот:

Вместо этого:

Мне просто интересно, если бы альтернатива статического класса заняла бы значительно меньше памяти.

Спасибо!

 с учетом определенных условий и оптимизаций. Например, 10 000 экземпляров класса, которые определяют член Int32, будут занимать ~ 40000 байт памяти.

Струны, с другой стороны, не так просты из-за интернирования. Вы можете попробовать это в качестве примера:

Если те же 10 000 экземпляров также определяют строку, и эта строка одинакова для каждого экземпляра, то у вас будет 10 000 ссылок, указывающих на одни и те же данные, что значительно сокращает накладные расходы (но в 32-разрядной среде есть еще 40 000 байты занято ссылками).

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

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

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



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



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

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



 памяти только один раз, независимо от того, являются ли они статическими или экземплярами, но статические методы запускаются на несколько минут быстрее, чем методы экземпляров, потому что методы Instance фактически используют указатель экземпляра this в качестве первого параметр, поэтому метод экземпляра всегда будет иметь эти издержки

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



 сколько памяти использует метод.



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



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

У метода экземпляра есть экземпляр класса, переданный ему как невидимый (доступ к которому можно получить через`this`), по сути, делая newName из`void Rename(string newName)` второй параметр, переданный в ваш метод экземпляра; Таким образом, в результате сожгли инструкции для`static void RenamePet(Pet pet, string newName)` а также`void Rename(string newName)` выглядят практически одинаково, поэтому они не имеют различий в производительности или что-либо



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