Para una aplicación que estoy escribiendo, quiero tener extensibilidad extrema y los métodos de extensión parecen darme lo que quiero, además de la capacidad de llamarlos sin una instancia, que también necesito.Métodos estáticos vs métodos de instancia en C#
Recuerdo haber leído que los métodos estáticos son más rápidos que los métodos de instancia pero no obtienen las ventajas de GC. ¿Es esto correcto?
Es muy poco probable que cambie mi diseño a menos que encuentre una alternativa superior por diseño, no velocidad. Pero aún así para obtener información adicional, quiero saber las diferencias en velocidad, GC, etc.
EDIT: Gracias. Más información: Digamos que tenemos una clase Persona:
class Person
que puede tener un método de instancia Distancia tan parecida:
this.Distance (Person p)
Esto es grande, pero esto no me da la capacidad de calcular la distancia entre 2 puntos (digamos Point3), sin crear instancias de la clase Person.
Lo que quiero hacer es esto:
class Person (no Distance methods)
pero de extensión métodos de Distancia:
Distance (this Person, Person)
Distance (this Point3, Point3)
De esta manera puedo hacer las dos cosas:
myPerson.Distance (yourPerson)
y
Extensions.Distance (pointA, pointB)
EDIT2: @Jon, sí, creo que eso era lo que quería decir (no obtener las ventajas de GC), pero de alguna manera pensé que los métodos estáticos crean esta carga/sobrecarga.
Gracias Jon. ¿Tiene sentido ahora? –
Gracias Jon. No tengo el tipo de distancia porque es solo un flotador. Lo de la instancia es donde no estoy seguro de si debo usar. Al igual que puedo tener el método Distance en Point, pero también quiero decir PointToRGBColor, pero en mi diseño para mí parece que este método RGB también debería ser una extensión. –
Ahora la creación de una instancia aquí tiene 100% de sentido, como el método RGB podría estar en la clase Color. Pero esto me impide hacer un uso directo de la funcionalidad si debe haber una instancia. Para Point, está bien porque es el tipo más básico que uno necesita para usarlo. –