2010-01-11 6 views
5

Przeczytałem, że tworzenie klasy sealed w języku C# jest wskazane w scenariuszach o wysokiej wydajności, ponieważ zwalnia kompilator, aby dokonać pewnych optymalizacji (np. Inlining obiektów pobierających właściwości), że nie byłby w stanie zrobić inaczej. Czy to samo dotyczy NotInheritable w VB.NET? Zgaduję, że tak, ale publikuję to pytanie na wypadek, gdyby ktoś inny już zbadał sprawę i poznał odpowiedź.Czy utworzenie klasy NotInheritable w VB.NET oferuje takie same (potencjalne) optymalizacje kompilatora, jak w C#?

Odpowiedz

8

Tak, wygenerowana IL dla sealed w C# jest identyczna z NotInheritable w VB.NET i te potencjalne optymalizacje będą wykonane przez kompilator JIT, który będzie się odbywał niezależnie od oryginalnego języka.

+0

Wynika z tego, co mówisz (myślę), że kompilator JIT nie jest w stanie określić, czy klasa pochodna istnieje w środowisku wykonawczym. Mogę docenić, że nie jest to łatwe do wykonania (poza klasami publicznymi, których hierarchia może przekraczać złożenia), ale czy nie jest to coś, co JIT ma poprawić w porównaniu z tradycyjną optymalizacją w czasie kompilacji? –