Для приложения, которое я пишу, я хочу иметь экстремальные методы расширяемости и расширения, кажется, дает мне то, что я хочу, плюс возможность называть их без экземпляра, который мне тоже нужен.Статические методы vs методы экземпляра в C#
Помню, что статические методы быстрее, чем методы экземпляров, но не имеют преимуществ GC. Это верно?
Очень маловероятно, что я изменю свой дизайн, если не найду превосходную альтернативу по дизайну, а не по скорости. Но все же для дополнительной информации я хочу знать различия в скорости, GC и т. Д.
EDIT: Спасибо. Более подробную информацию: Допустим, у нас есть класс Person:
class Person
, который может иметь метод экземпляра Distance так как:
this.Distance (Person p)
Это замечательно, но это не дает мне возможность рассчитать расстояние между 2 точками (например, Point3), без создания экземпляров класса Person.
То, что я хочу сделать это:
class Person (no Distance methods)
но удлинительные методы Расстояние:
Distance (this Person, Person)
Distance (this Point3, Point3)
Таким образом, я могу как сделать:
myPerson.Distance (yourPerson)
и
Extensions.Distance (pointA, pointB)
EDIT2: @Jon, да, я думаю, это было то, что подразумевалось под (не получить преимущества GC), но я почему-то думал, что статические методы создают это бремя/накладные расходы.
Спасибо Jon. Это имеет смысл сейчас? –
Спасибо, Джон. У меня нет типа расстояния, потому что это просто поплавок. Дело в том, где я не уверен, использовать ли. Как и у меня есть метод Distance в Point, но я также хочу сказать PointToRGBColor, но в моем дизайне мне кажется, что этот метод RGB также должен быть расширением. –
Теперь создание здесь составляет 100%, как метод RGB может быть в классе Color. Но это мешает мне делать прямое использование функциональности, если должен быть экземпляр. Для Point это нормально, потому что это самый базовый тип, который нужно использовать для его использования. –