2017-10-02 7 views
1

J'ai un membre. Ce membre est seulement assigné par le constructeur, pourquoi j'ai pensé qu'il pourrait être rendu en lecture seule. Cette classe a, plusieurs constructeurs.Appel d'une méthode du constructeur avec "constructor rights"

Y at-il un moyen d'affecter ce membre une fois, pour créer un point de défaillance unique. D'abord, j'ai pensé qu'il pourrait fonctionner avec une méthode en ligne. La seule façon que je trouve est avec:

[MethodImpl(MethodImplOptions.AggressiveInlining)] 

Mais cela ne fonctionne pas.

Ou est-il possible de donner une méthode "droits du constructeur" ou est-ce impossible?

+1

Thats ce 'readonly' fait. – HimBromBeere

+2

utilise le constructeur chaînage? –

Répondre

4

Je pense que le mieux est de surcharger ici vos constructeurs et puis la chaîne

readonly int myReadonly; 

public test(int a, int b) 
    :this (a) 
{ 
    myReadonly = b; 
} 

private test(int a) 
{ 
    //other work 
} 
+0

Stupide Question: Est-ce exact, quand j'appelle test (int a, int b) que ceci est exécuté avant que (int a) ne soit appelé? –

+0

@ KenanTabinas La question est ** pas stupide **. Et il a été demandé plusieurs fois sur SO, par exemple [ici] (https://stackoverflow.com/q/4609774/982149). – Fildor

+0

@Fildor Ce n'est pas la bonne réponse. J'ai demandé "Est-ce une question vraie". Une réponse à une telle question est un booléen. Dans cet exemple, la réponse correcte est "non". Mais merci quand même. –