Diskuze: Správně použití private static metod
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Přesně jak říkáš, daná metoda je nezávislá na instanci.
Asi nejjednodušší příklad je parsování, např statická metoda
public static int Parse(
string s
)
Rozhodně nestojíš o to muset vytvářet nějaký int proto aby jsi mohl tuto metodu použít, ale metoda je ve třídě Int32, protože s ní zkrátka má blízkou souvislost.
O vlivu na rychlost netuším, možná tak když to porovnáš s tím, že by jsi musel instanci vytvořit vs nevytvořit tak ano, ale jinak asi těžko.
Promiň přehlédl jsem private ... bohužel komentář klasicky už nejde upravit.
A k tomu výkonu, jde o to, že do statických metod nemusí program dávat
instanci jako parametr, pořád dokola, v C# to nejde moc vidět, ale
například v Pythonu, má každá instanční metoda na prvním místě
parametr self (this), jen v C# je to hádám skryté
Eh.. takto fungují téměř všechny rozumné jazyky (asi proto ne v Pythonu).
Kromě toho, všechny tyto jazyky používají většinou tzv. fastcall, což znamená, že většinou první dva parametry předává přeš registry CPU.. takže "ukazatel" na instanci, jde přes registr vždy = nemá to reálně žádný dopad.
Nějak nechápu první větu, napsal jsem, že v Pythonu to jde krásně
vidět, ale že v C# je to skryté, jak s tím souvisí, to co jsi napsal?
No, napsal jsem svůj osobní názor na Python a pak ti reagoval na dopad na
výkon toho, když to není statická metoda
"A k tomu výkonu, jde o to, že do statických metod nemusí program dávat instanci jako parametr,"
Ahaa, no já se tady dočetl, že to vliv asi nějaký malý má.
Jop.... statické metody jsou by default non-virtual, takže tam není indirection přes vtable.
Mimochodem, k tomu, že se vše kromě statiky volá přes callvirt, se
vztahuje takový hezký příběh, defakto čtvrtstoletí starý
Zobrazeno 9 zpráv z 9.