Wpis z mikrobloga

#csharp #programowanie

Jeśli wszystkie typy wbudowane w C# są tak naprawdę strukturami, to nawet olewając pytania o rozmiary tych struktur - co przechowuje właściwe dane? Bo skoro int jest tak naprawdę strukturą System.Int32, to... jak jest zaimplementowany w środku, skoro nie ma inta w C# jako typu prawdziwie podstawowego?
  • 15
@g500s: lel

internal int m_value;

public const int MaxValue = 0x7fffffff;
public const int MinValue = unchecked((int)0x80000000);

Przecież tutaj jest użyty int, który jest aliasem na Int32. Co tu się odjebuje? Ponadto widzę tutaj dwa pola, które chyba zwiększają dodatkowo rozmiar tej struktury?
@Khaine: w sumie jak pola są const to logiczne by było jakby były przechowywane w jednym egzemplarzu(mam na myśli optymalizacje kompilatora), niezależnie od egzemplarzy struktur, bo i tak dla wszystkich są takie same. ale czy to tak działa to nie wiem
@g500s: A to one nie powinny być aby statyczne po prostu? Ponadto jak działa przypisywanie wartości do tej wewnętrznej zmiennej m_value? Gdzie konstruktor kopiujący?
Jeśli wszystkie typy wbudowane w C# są tak naprawdę strukturami,


@Khaine: Nie wszystkie.

Tak patrze na twoje kolejne posty i dochodzę do wniosku, że jakbyś chciał nauczyć się robić meble drewniane, to zamiast kupić drzewo w tartaku to zacząłbyś analizować nie tylko gospodarkę leśną ale też peryklinalny i antyklinalny podział kambium żeby się dowiedzieć jak to się dzieje, że drzewo rośnie.( ͡° ͜ʖ ͡°)
A potem rozbierał
@ZapomnialWieprzJakProsiakiemByl: C/C++ niszczy ludzi. Jestem przyzwyczajony że pułapka jest wszędzie ( ͡° ͜ʖ ͡°) Poza tym lubię wiedzieć po prostu. Bo mnie zadziwia, że to działa tak jak to działa i nikt nie wnika nawet czemu jest coś zrobione jak jest. W takim C++ jak ktoś nie wie jak jest np. zaimplementowana lista std to jest śmieciem i nawet nie ma o czym z kimś takim rozmawiać.
@Khaine:
Już zacząłem podejrzewać, że jakiś "genialny" wykładowca kazał zrobić "genialny projekt-referat"( ͡° ͜ʖ ͡°)
.Net jest tak pomyślane aby nie wynajdywać ciągle koła od nowa. Chyba cała trudność nauki c# to poznanie istniejących bibliotek i ich wykorzystanie. Korzystaj z czarnej roboty, którą ktoś odwalił za ciebie. I tyle. 21000 bibliotek i tak nie rozgryziesz od A do Z( ͡° ͜ʖ ͡°)
@ZapomnialWieprzJakProsiakiemByl: Bo zadaję dosyć niestandardowe pytania, na które często nie ma prostej odpowiedzi. Po prostu próbuję zrozumieć co tam się dzieje a nie tylko wiedzieć co wklepać żeby się zadziało. Nie wiem, dla mnie inżynieria to rozumienie natury rzeczy a nie wkręcanie śrubek śrubokrętem ( ͡º ͜ʖ͡º)
@Khaine: Miałem to samo. Też lubię wiedzieć dokładnie jak coś działa. Z tym System.Int32 to nie jest tak, że każdy int jest strukturą znaną ci z C++. Int to int cztery bajty na stosie, nic więcej. System.Int32 stanowi po prostu jakby interface dla int'a z zaimplementowanymi metodami.