Keyword readonly and static in C#

Access restriction of a variable in a class is a broad topic in C#; we define the restriction by adding the keyword in front of our variables.

In some cases, we may have some member or variables in our class, and we don’t want other objects or classes amend their value. In this case, keyword readonly and static are very handy.

Between keyword readonly and static, static is more strict compared with readonly.


Case Study

We define a Book class and the Book class has a name property and category property. We will pay more attention on the category member in this case.

Keyword – Read-Only

We add a keyword readonly in front of category.

public string Name 
{
get;
set;
}

readonly string category = "Science";

public Book(string name)
{
Name = name;
category = "";
}

The code above is perfectly legal, we assign variable category as Science in the beginning. We can assign another value when we run the class initialiser. However, if we try to amend the value of category outside of the initialiser, complier will issue an error; because it has a keyword readonly.

For example, the following code is illegal; because we try to amend the category outside of the initialiser.

public string Name 
{
get;
set;
}

readonly string category = "Science";

public Book(string name)
{
Name = name;
category = "";
}

public void AddRate(char letter) 
{
category = ""; //It is illegal, as we try to amend readonly vairble outside of the initialiser.
}

Keyword – static

Compared with keyword readonly, keyword static is more strict.

The following code is illegal, as category is not a variable anymore; because we add a keyword static in front of category property.

public string Name 
{
get;
set;
}

static string category = "Science";

public Book(string name)
{
Name = name;
category = ""; //It is illegal, as constant category is no longer a variable anymore
}

In another word, if we declare a member as constant, we can’t change it anymore. If we need to access the member outside our class, we need to access by type name, instead of object name.

For example, we need to access the value of category outside of the class. The following code is perfectly legal.

Book.category; //Legal

Whereas, the following code is illegal.

book.category; //Illegal


2 Replies to “Keyword readonly and static in C#”

  1. Dzięki za sugestii dotyczących naprawy kredytu na temat tego konkretnego sieci -teren. Rzeczy i chciałbym zaoferować jako rada ludziom oznacza zwykle zrezygnować z tej mentalności że w tym momencie i rozwidź później. Being a as be a} społeczeństwo {my|my wszyscy|my wszyscy|wielu z nas|większość z nas|większość ludzi} ma tendencję do {robienia tego|robienia tamtego|próbowania tego|zdarzyć się|powtórz to} dla wielu {rzeczy|problemów|czynników}. Obejmuje to {wakacje|wakacje|wypady|wyjazdy wakacyjne|wycieczki|rodzinne wakacje}, meble, {i|jak również|a także|wraz z|oprócz|plus} przedmiotów {chcemy|chcielibyśmy|życzymy|chcielibyśmy|naprawdę chcielibyśmy to mieć}. Jednak {musisz|musisz|powinieneś|powinieneś chcieć|wskazane jest, aby|musisz} oddzielić {swoje|swoje|to|twoje obecne|swoje|osoby} chcą {od wszystkich|z potrzeb|z}. {Kiedy jesteś|Kiedy jesteś|Kiedy jesteś|Jeśli jesteś|Tak długo, jak jesteś|Kiedy} pracujesz, aby {poprawić swój kredyt|poprawić swoją zdolność kredytową|zwiększyć swój kredyt|zwiększyć swój kredyt|podnieś swój ranking kredytowy|popraw swój kredyt} wynik {musisz zrobić|zrobić|faktycznie potrzebujesz|naprawdę musisz} dokonać kilku {poświęceń|kompromisów}. Na przykład {możesz|możesz|możesz|możesz|będziesz mógł|| możesz|prawdopodobnie możesz} robić zakupy online {aby zaoszczędzić pieniądze|aby zaoszczędzić pieniądze|aby zaoszczędzić} lub {możesz przejść do|może się zwrócić|może odwiedzić|może obejrzeć|może sprawdzić|może kliknąć} używane {sklepy|sklepy|detaliści|sprzedawcy|punkty sprzedaży|dostawcy} zamiast {drogie|drogie|drogie|drogie|drogie|drogich} domów towarowych {dla|w odniesieniu do|dotyczących|odnoszących się do|przeznaczonych dla|do zdobycia} odzieży {strzykawki insulinowe 1ml|strzykawki tuberkulinowe|strzykawki|strzykawka|strzykawki insulinowe|strzykawki do insuliny|strzykawki trzyczęściowe tuberkulinowe|strzykawka tuberkulinowa|strzykawka insulinowa|strzykawka do insuliny|strzykawka trzyczęściowe tuberkulinowa}.

Leave a Reply

Your email address will not be published. Required fields are marked *