2009-02-03 25 views
5

Birkaç ay önce bir tekniğini okudum, böylece yerel değişkenleri eşleştirdiğiniz paramaters varsa bunları ayarlamak için bazı kısa el yazımlarını kullanabilirsiniz. Bunu önlemek için:C# Object Constructor - shorthand özellik sözdizimi

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

Herhangi bir fikir?

cevap

25

C# 3.0'daki yeni nesne başlatıcı sözdizimini düşünebilirsiniz. Bu şuna benzer:

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

Böylece 1'e başlatıldı "Bar" özelliği ile "Fizz" özelliğine "Merhaba" ile bize Foo yeni bir örneğini veriyor.

Bu sözdizimi ile ilgili hilede, "=" işaretini bırakır ve bir tanımlayıcı sağladığınızda, aynı adda bir mülke atadığınızı varsayar. Zaten bir Foo örneğini olsaydı Yani, örneğin, ben bunu:

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

Bu, o zaman, örneğin çok yakın oluyor. Sınıf p1, P2 ve P3 özelliklere sahiptir ve aynı adla değişkenleri varsa, yazabilirsiniz:

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

Not Bu yalnızca örneklerini oluşturmak için olduğunu - değil örnek gösterdiği gibi yöntemlerle içine parametreleri geçirilmesi için - yani düşündüğün gibi olmayabilir.

+0

Emin olmamam için doğru Matt olabilirdin. haha. Bir dahaki sefere onları bulduğumda bu şeyleri kaydetmem gerek. şerefe. – Schotime

2

Parametre oluşturulmuş bir kurucu kullanmak yerine, sınıfın özelliklerini ayarlayarak bir nesneyi oluşturabileceğiniz C# içindeki "nesne başlatıcıyı" düşünebilirsiniz.

"Bu" öğenizin önceden oluşturulduğundan beri kullandığınız örnekte kullanılabileceğinden emin değilim.

+0

Java'da benzer bir şey var mı? – Verhogen

+1

Bildiğim kadarıyla değil. –