2009-02-03 4 views
5

Il y a quelques mois, j'ai lu une technique de sorte que si les paramètres que vous avez passés correspondent aux variables locales, vous pouvez utiliser une syntaxe abrégée pour les définir. Pour éviter cela:C# Constructeur d'objet - Syntaxe de la propriété raccourcie

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

Des idées?

Répondre

25

Vous pensez peut-être à la nouvelle syntaxe d'initialisation d'objet dans C# 3.0. Il ressemble à ceci:

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

Alors que nous donne une nouvelle instance de Foo, avec la propriété « Bar » initialisé à 1 et la propriété « Fizz » à « bonjour ».

L'astuce avec cette syntaxe est que si vous omettez le "=" et fournissez un identifiant, il supposera que vous affectez à une propriété du même nom. Ainsi, par exemple, si j'avais déjà une instance Foo, je pouvais le faire:

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

Ce, alors, est d'obtenir assez proche de votre exemple. Si votre classe a p1, p2 et propriétés p3, et vous avez des variables avec le même nom, vous pouvez écrire:

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

Notez que ceci est pour la construction de cas seulement - pas pour passer des paramètres dans les méthodes que votre exemple montre - Ce n'est peut-être pas ce à quoi tu penses.

+0

Vous pourriez avoir raison Matt même si je ne suis pas certain. haha. vraiment besoin de sauver ces choses quand je les trouve la prochaine fois. à votre santé. – Schotime

2

Vous pensez peut-être à "l'initialiseur d'objet" en C#, où vous pouvez construire un objet en définissant les propriétés de la classe, plutôt qu'en utilisant un constructeur paramétré.

Je ne suis pas sûr qu'il peut être utilisé dans l'exemple que vous avez depuis que votre "ceci" a déjà été construit.

+0

Existe-t-il quelque chose de similaire en Java? – Verhogen

+1

Pas aussi loin que je sache. –