Czy jest jakiś sposób w C#, aby oznaczyć właściwość jako deterministyczną?Determinizm własności
Powodem, dla którego pytam, jest to, że często znajduję się deklarując zmienną lokalną i czytając właściwość do niej, zamiast wielokrotnie uzyskiwać dostęp do nieruchomości.
Czy istnieje sposób, w jaki mogę udekorować nieruchomość jako deterministyczną, tak aby kompilator mógł zoptymalizować wielokrotne dostępy do tej właściwości? Zgaduję, że w takim scenariuszu klasa musiałaby być niezmienna i tak udekorowana.
Czy to coś, co istnieje, czy też trzymam się kurczowo słomek?
+1 - Tylko jedno pytanie - jeśli kompilator mimo to robi tę optymalizację, to w jaki sposób uwzględniłby zmiany obiektu na niezmiennych obiektach - czy to z tego samego wątku, czy nie? Czy to możliwe, że właśnie potwierdziłeś, że własność dostaje się na prostą własność kosztującą bardzo małą sumę, w którym to przypadku powinienem przestać o tym mówić? :) –
@Matt Whitfield: Kiedy kod zostanie zoptymalizowany, prosta właściwość zostanie internowana. Odczytanie właściwości nie wywoła funkcji pobierającej właściwości w celu zwrócenia wartości, ale uzyska wartość bezpośrednio, tak jak w przypadku uzyskiwania dostępu do publicznej zmiennej w klasie. W kodzie C# otrzymujesz abstrakcję i izolację, którą chcesz w kodzie OOP, ale w skompilowanym kodzie dostajesz prędkość zmiennych publicznych. :) – Guffa
dziękuję - mam zamiar to zaakceptować, ponieważ ten komentarz, który tam masz, jest tym, co daje mi zrozumienie, którego szukałem, gdy zadałem to pytanie. –