I teraz z drugiej mańki, słowo kluczowe "const" w języku C#! Ono także sprawi, że Wasza zmienna stanie się wartością niemodyfikowalną.

"CONST" W JĘZYKU C# TAKŻE UCZYNI WARTOŚĆ TYLKO DO ODCZYTU

"const" to jeszcze jeden modyfikator obowiązujący w "CSharpie", który także sprawi że zmienna przestanie być zmienną, a stanie się daną niemodyfikowalną.

Zero komplikacji w zrozumieniu. W sytuacji, gdy zmienna ma być odporna na modyfikacje, dorzucacie tytułowe słówko "const" w języku C# przed typem danych i to koniec Waszych zmartwień (ponownie)!

const int x = 15;

Najlepsze zastosowanie? Kiedy chcemy ochronić się przed modyfikacją - to chyba jasne! Efekt? Taki sam. Błąd kompilacji do którego przyczynia się każda instrukcja przypisania, bądź modyfikacji:

x = 6;	// błąd
x += 14;	// błąd

I tak dalej, i tak dalej…

CO JEST GRANE? ZNOWU TO SAMO?

Chyba muszę naprostować mały galimatias jaki mógł się narodzić w Waszych głowach. Istotnie "const" w języku C# daje ten sam efekt co "readonly". Tylko intuicja może kazać wysnuć wniosek, że jeśli podzielono to na dwa różne słowa kluczowe to MUSI być jakaś różnica między nimi, nie?

Tak się składa, że jest! "const" jest wartością stałą istniejącą w czasie kompilowania programu, a "readonly" w czasie jego uruchamiania!!! To dlatego "readonly" możemy zdefiniować trochę później w konstruktorze klasy, a nie w tej samej linijce gdzie zadeklarowano wartość tylko do odczytu:

class MyClass
{
	public readonly int value;
	
	public MyClass()
	{
		value = 6;
	}
}

Spróbujcie tak zrobić z "const" w języku C# i to się już nie powiedzie! Przypisanie wartości MUSI się znaleźć w tej samej linijce kodu:

class MyClass
{
	public const int value = 17;
	
	public MyClass()
	{
		value = 6;	// błąd
	}
}

Z tego samego powodu, "readonly" może posiadać jakieś wyrażenia, które wymagają kalkulacji przy użyciu funkcji lub właściwości. Jest taki jeden przykład w dokumentacji oficjalnej.

Taka niewielka niespodzianka, żeby wprowadzenie wydawało się Wam już znajome. Lubię zaskakiwać ludzi.

Słowo kluczowe "const" w języku C#

Modyfikator "const" w języku C# TAKŻE zabrania modyfikować wartość, natomiast w przeciwieństwie do "readonly", stała istnieje w czasie kompilacji. Z tego powodu nie wolno wstawiać wyrażeń pochodzących z funkcji lub właściwości!


Tyle! Napiszę Wam szczerze. Gdybym był rekruterem, to mógłbym rozważyć takie pytanie w stronę kandydata czym się różni "const" od "readonly", skoro oba słowa kluczowe powodują, że wartość staje się wartością tylko do odczytu. Podchwytliwe, ale zweryfikowałoby poziom wnikliwości Waszej wiedzy...

PODOBNE ARTYKUŁY