Różnica między stałą a czytaniem

Różnica między stałą a czytaniem

Ważne jest, aby zrozumieć pojęcia programowania C# przed przystąpieniem do wdrażania kodu. Zanim przejdziemy do różnic między Const i Readonly, najpierw zrozummy słowa kluczowe i sposób ich użycia w programie. Oba są najczęstszymi słowami kluczowymi używanymi w programowaniu C# i zasadniczo w tym samym celu. Jednak oba słowa kluczowe są bardzo różne od siebie. Const jest zarezerwowanym słowem używanym do reprezentowania stałych wartości i określa, że ​​wartość nie można zmodyfikować po czasie kompilacji, podczas gdy odczyt jest modyfikatorem, którego można użyć na polach, a wartość można zmienić w czasie wykonywania. Rzućmy okiem na niektóre kluczowe różnice między Const i Readonly.

Co to jest const?

Const odnosi się do stałej zmiennej i wartości, której należy przypisać tylko raz, podczas deklaracji. Gdy podczas deklaracji używany jest stał słów kluczowych, staje się ono stałe, co oznacza, że ​​wartość pozostaje stała i nie można jej zmienić w całym programie. Jest to bardziej zarezerwowane słowo, które określa, że ​​wartości nie można modyfikować po skompilowaniu czasu. Const jest domyślnie domyślnie statyczna, więc można ją wywołać z nazwą klasy za pomocą „klasowej nazwy.Nazwa variablen ”. Stałe wartości są również nazywane literałami. Może to być dowolny podstawowy typ danych, taki jak liczba całkowita, pływająca stała lub dosłowność łańcucha.

Co jest czytnie?

Słowo kluczowe odczytu jest modyfikatorem, którego można używać tylko na polach, ale nie zmiennych lokalnych. Pole odczytu można zainicjować w momencie deklaracji lub wewnątrz konstruktora w tej samej klasie, więc wartości mogą być różne dla różnych wykonywania programu w zależności od zastosowanego konstruktora. Słowo kluczowe odczytu określa, że ​​zmienna instancji obiektu nie jest możliwa do modyfikowania, a żadna próba zmodyfikowania go po deklaracji powoduje błąd kompilacji. Zmienna nie staje się możliwa do zmodyfikowania dopiero po wykonaniu. Zmienne są wytwarzane odczytycznie tylko po to, aby przestać wywoływać kod przed przypadkową modyfikacją go po skonstruowaniu.

Różnica między stałą a czytaniem

  1. Podstawowy

Constant (const) Słowo kluczowe to tylko niezmienne zmienne, których wartość można zainicjować tylko w czasie kompilacji. Te stałe wartości są również nazywane literałami. Po prostu pozwala nam określić, czy zmienna jest modyfikowalna, czy nie. Mówiąc prosto, stałe są domyślnie statyczne i należy je zainicjować, zanim będą one użyte w programie. Słowo kluczowe odczytu, z drugiej strony, jest modyfikatorem, którego można użyć na polach, a wartość można zmienić w czasie wykonywania. Zapobiega zmianie pola, a wartości można ustawić za pomocą zmiennych odniesienia.

  1. Inicjalizacja

Const jest domyślnie statyczna, a wartości należy przypisać w momencie deklaracji zmiennej, co oznacza, że ​​wartości są przypisywane tylko w czasie kompilacji. Stała jest zadeklarowana za pomocą słowa kluczowego „const”. Inicjalizacja pola stałego musi być stałym wyrażeniem i może nie być modyfikowana. Mówiąc najprościej, const jest stałą czasu kompilacji. Z drugiej strony pole do odczytu można zainicjować tylko na poziomie klasy nie wewnątrz metody, a pola nie można zmodyfikować po inicjalizacji. Innymi słowy, zmienne odczytu można zainicjować w momencie deklaracji lub wewnątrz konstruktora.

  1. Alokacja pamięci

Wartość stałą jest umieszczana bezpośrednio w kodzie, ponieważ działa jako wymiana czasu kompilacji.  Kompilator umieszcza stałą wartość w metadanych montażu, która definiuje stałą i osadza wartość samego kodu IL po inicjowaniu. Wartość odczytu nie jest stała i jest przechowywana w sterowaniu ładowarowym pamięć, dla której nie można przydzielić, dopóki jego typ nie zostanie załadowany. Pola odczytu są przechowywane w pamięci dynamicznej, więc wartości można uzyskać tylko w czasie wykonywania.

  1. Wersja binarna

Chociaż oba słowa kluczowe są używane prawie w tym samym celu, mają różne semantyki wersji binarnej. Gdy wyrażenie odnosi się do stałej, kompilator osadza wartość w czasie kompilacji. Jeśli więc wartość jest używana w innym zespole, oryginalny zespół musi zostać zaktualizowany i należy zmienić wartość. Zmiany w montażu nie są odzwierciedlone, dopóki nie zostanie ponownie skompilowane. Wartość nie jest uzyskiwana do czasu wykonania, gdy wyrażenie odwołuje się do pola odczytu. Jeśli wartość zostanie zmieniona w innym zespole, zmiany zostaną odzwierciedlone w zespole, gdy tylko zostanie załadowana bez konieczności ponownej kompilacji.

Const vs. Readonly: Mapa porównawcza

Podsumowanie const vs. Tylko czytać

Oba słowa kluczowe są używane dla tej samej rzeczy, które ma na celu zadeklarowanie członka, aby wartości nie mogą być zmiany w całym programie. Jednak słowo kluczowe Const bardzo różni się od słowa kluczowego odczytu. Const jest stałą zmienną, której wartość należy zainicjować w czasie kompilacji, podczas gdy pole odczytu można zainicjować tylko na poziomie klasy, w momencie deklaracji lub wewnątrz konstruktora. Const jest stałą czasu kompilacji, podczas gdy pola odczytu są tylko do odczytu. Dostęp do zmiennych Constance można uzyskać za pomocą „ClassName.Zmienna nazwa ”, podczas gdy zmienne odczytu można uzyskać za pomocą„ InstanceName.Nazwa variablen ”. Ponadto zmienne stałów można zadeklarować w metodach, podczas gdy pola odczytu nie można zadeklarować w metodach.