Jakie jest znaczenie CTOR?


221

W wielu plikach C # zapisuję tagi regionów (?) O nazwie CTOR lub ctor. Jakie jest znaczenie ctor? Dlaczego taki region nazywa się ctor?

Odpowiedzi:


305

Jest to tylko skrót od „konstruktora” - i tak też nazywa się konstruktor w IL. Na przykład otwórz Odbłyśnik i spójrz na typ, a zobaczysz członków wezwanych .ctordo różnych konstruktorów.


3
dlaczego nazywa się .ctor? Jakie jest znaczenie (.) Kropki z przodu?
isuruceanu

@isuruceanu: Podejrzewam, że ma to pokazać, że jest to nazwa zastrzeżona. Tylko zgadnij.
Jon Skeet

Co z xxx. #. Ctor ()? , nie powiedzie się moje wykonanie FxCop. stackoverflow.com/questions/17024149/…
Andreas Blomqvist

8
@Jessy: Rzadko słyszałem, jak to się wymawia, ale wymawiam to jako „patrz-tor”.
Jon Skeet

5
@isuruceanu Wszystko zaczyna się od „.” w IL są metadane.
Juda

45

Zazwyczaj ten region powinien zawierać konstruktory klasy


2
„powinien zawierać” - czy to oznacza, że ​​.ctor niekoniecznie zawsze odnosi się do konstruktora? A może po prostu nie zawsze odwołuje się do konstruktora klasy (ponieważ może na przykład odwoływać się do struktury)?
cogumel0

@ cogumel0 Lub raczej „powinien zawierać s ” ;-)
Sнаđошƒаӽ

36

Aby rozszerzyć nieco więcej, istnieją dwa rodzaje konstruktorów: inicjatory instancji (.ctor), inicjatory typu (.cctor). Zbuduj poniższy kod i poznaj kod IL w ildasm.exe. Zauważysz, że pole statyczne „b” zostanie zainicjowane przez .cctor (), podczas gdy pole instancji zostanie zainicjowane przez .ctor ()

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

14

Wpisz „ctor” i naciśnij dwukrotnie klawisz TAB, aby automatycznie dodać domyślnego konstruktora


W VS2013 (i przy użyciu R # 2016.1) wystarczy nacisnąć klawisz Tab tylko raz. Nie jestem pewien co do innych wersji VS / R #
ro͢binmckenzie

13
To nie jest odpowiedź na pytanie.
Malfist,

9
Żadna odpowiedź, więc pochlebnie. Ale ciekawa rzecz, o której warto wiedzieć, więc nie jest to znane. :-)
Sнаđошƒаӽ
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.