2009-02-03 7 views
5

Hace unos meses leí sobre una técnica para que si hay parámetros que pasaste coincidiendo con las variables locales, entonces podrías usar alguna sintaxis de mano corta para establecerlos. Para evitar esto:C# Object Constructor - sintaxis de propiedad taquigráfica

public string Method(p1, p2, p3) 
{ 
    this.p1 = p1; 
    this.p2 = p2; 
    this.p3 = p3; 
} 

¿Alguna idea?

Respuesta

25

Puede que esté pensando en la nueva sintaxis del inicializador de objetos en C# 3.0. Se ve así:

var foo = new Foo { Bar = 1, Fizz = "hello" }; 

Así que nos está dando una nueva instancia de Foo, con la propiedad "bar" inicializado a 1 y la propiedad "Fizz" a "hola".

El truco con esta sintaxis es que si omite el "=" y proporciona un identificador, asumirá que está asignando a una propiedad del mismo nombre. Así, por ejemplo, si yo ya tenía una instancia de Foo, que podría hacer esto:

var foo2 = new Foo { foo1.Bar, foo1.Fizz }; 

Ésta es, pues, está poniendo muy cerca de su ejemplo. Si su clase tiene P1, P2 y propiedades p3, y tiene variables con el mismo nombre, se podría escribir:

var foo = new Foo { p1, p2, p3 }; 

Tenga en cuenta que esto es para la construcción de los casos solamente - no para pasar parámetros a métodos como su ejemplo muestra - entonces puede que no sea en lo que estás pensando.

+0

Podrías tener razón, Matt, aunque no estoy seguro. jaja. realmente necesito guardar estas cosas cuando las encuentre la próxima vez. aclamaciones. – Schotime

2

Puede que esté pensando en el "inicializador de objetos" en C#, donde puede construir un objeto estableciendo las propiedades de la clase, en lugar de utilizar un constructor parametrizado.

No estoy seguro de que se pueda utilizar en el ejemplo que tiene ya que su "esto" ya se ha construido.

+0

¿Hay algo similar en Java? – Verhogen

+1

No tan lejos como sé. –