2011-01-06 13 views

Odpowiedz

218

To skrót tylko dla "konstruktora" - i to właśnie nazywa się konstruktor w IL. Na przykład otwórz Reflector i zobacz typ, a zobaczysz elementy o nazwach .ctor dla różnych konstruktorów.

+2

dlaczego nazywa się .ctor? Jakie jest znaczenie kropki (.) Z przodu? – isuruceanu

+0

@isuruceanu: Podejrzewam, że to pokazanie, że to zastrzeżona nazwa. Tylko zgadnij. –

+0

Co z xxx. #. Ctor()? , zawiedzie moje wykonywanie FxCop. http://stackoverflow.com/questions/17024149/fxcop-exception-bad-method-type-parameter-in-position-0 –

41

Zazwyczaj ten region powinien zawiera konstruktorzy klasy

+1

"powinien zawierać" - robi to oznacza, że ​​.ctor niekoniecznie zawsze odwołuje się do konstruktora lub po prostu nie zawsze odwołuje się do konstruktora klasy (ponieważ mógłby na przykład odwoływać się do struktury)? – cogumel0

+0

@ cogumel0 Lub raczej "powinien zawierać ** s **" ;-) –

28

Aby rozwinąć trochę więcej, istnieją dwa rodzaje konstruktorów: inicjalizatory instancji (.ctor), inicjalizatory mostowe (.cctor). Zbuduj poniższy kod i zbadaj kod IL w pliku ildasm.exe. Można zauważyć, że pole statyczne „b” zostaną zainicjowane przez .cctor(), natomiast pole instancja zostanie zainicjowany przez .ctor()

internal sealed class CtorExplorer 
{ 
    protected int a = 0; 
    protected static int b = 0; 
} 
7

Type „ctor” i naciśnij TAB klawisz dwa razy w tym doda domyślny konstruktor automatycznie

+0

W VS2013 (i przy użyciu R # 2016.1) muszę nacisnąć tylko jedną kartę. Nie jestem pewien co do innych wersji VS/R # –

+5

To nie jest odpowiedź na pytanie. – Malfist

+2

Brak odpowiedzi, więc została odrzucona. Ale interesującą rzeczą jest wiedzieć, więc nieuwzględnione. :-) –