C # difference between const and readonly (added to the network)

Source: Internet
Author: User

The difference between const and readonly is always unclear, so I checked the information.

The concept of const is a variable that contains unchangeable values.
Constant expressions are fully computed during compilation. Therefore, constants cannot be initialized by extracting values from a variable.
If const int A = B + 1; B is a variable, it is obvious that the result cannot be calculated during compilation, so constants cannot be initialized using variables.

Readonly allows a field to be set as a constant, but some operations can be performed to determine its initial value.
Because readonly is executed during computing, of course it can be initialized with some variables.
Readonly is an instance Member, so different instances can have different constant values, which makes readonly more flexible.

The readonly keyword is different from the const keyword.

1. the const field can only be initialized in the declaration of this field.
The readonly field can be initialized in the Declaration or constructor. Therefore, the readonly field may have different values based on the constructors used.
2. the const field is the number of compiling times, while the readonly field can be used for running times.
3. const is static by default, and readonly must display the declaration if it is set to static.
4. For constants of the reference type, the possible values of const can only be string and null.
Readonly can be of any type

*Note the following:

For a readonly reference type, the value assignment (write) operation is not allowed. The read and write operations on its members are still unrestricted.

Public static readonly class1 my = new class1 ();
...
My. someproperty = 10; // normal
My = new class1 (); // error. The object is read-only.

However, if the class1 in the above example is not a class but a struct, then the following two statements will go wrong.

Static readonly:

In Java, static is executed once when a class is loaded.

C. It is strange that almost every Java book will talk about the static problem. C # often only describes how to use it, but it should be initialized before the main function is called, so static readonly is also running, and can be used to pay the value, such:

Private Static readonly string Path = system. Windows. Forms. application. startuppath + "AAA ";

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.