C# Interview Questions on Constants


What are constants in C#?
Constants in C# are immutable values which are known at compile time and do not change for the life of the program. Constants are declared using the const keyword. Constants must be initialized as they are declared. You cannot assign a value to a constant after it isdeclared. An example is shown below.

using System;
class Circle
{
   public const double PI = 3.14;
   public Circle()
   {
      //Error : You can only assign a value to a constant field at the time of declaration
      //PI = 3.15;
   }
}
class MainClass
{
   public static void Main()
   {
      Console.WriteLine(Circle.PI);
   }
}

Can you declare a class or a struct as constant?
No, User-defined types including classes, structs, and arrays, cannot be const. Only the C# built-in types excluding System.Object may be declared as const. Use the readonly modifier to create a class, struct, or array that is initialized one time at runtime (for example in a constructor) and thereafter cannot be changed.

Does C# support const methods, properties, or events?
No, C# does not support const methods, properties, or events.

Can you change the value of a constant filed after its declaration?
No, you cannot change the value of a constant filed after its declaration. In the example below, the constant field PI is always 3.14, and it cannot be changed even by the class itself. In fact, when the compiler encounters a constant identifier in C# source code (for example, PI), it substitutes the literal value directly into the intermediate language (IL) code that it produces. Because there is no variable address associated with a constant at run time, const fields cannot be passed by reference.

using System;
class Circle
{
   public const double PI = 3.14;
}

How do you access a constant field declared in a class?
Constants are accessed as if they were static fields because the value of the constant is the same for all instances of the type. You do not use the static keyword to declare them. Expressions that are not in the class that defines the constant must use the class name, a period, and the name of the constant to access the constant. In the example below constant field PI can be accessed in the Main method using the class name and not the instance of the class. Trying to access a constant field using a class instance will generate a compile time error.

using System;
class Circle
{
   public const double PI = 3.14;
}
class MainClass
{
   public static void Main()
   {
      Console.WriteLine(Circle.PI);
      Circle C = new Circle();
      // Error : PI cannot be accessed using an instance
      // Console.WriteLine(C.PI);
   }
}

5 comments:

  1. Q:What is diff between const and read only?
    A:Read only value can be change at run time however const value can'r ever change.

    ReplyDelete
    Replies
    1. Constant variables are compile time constant. Readonly variables are runtime constant.
      Constant is created with const keyword where as Readonly is created with readonly keyword.
      Constants are class specific but readonly are object specific.
      Assignment of the constant value is only the time of declaration but assignment of the readonly can be done by declaration time as well as through constructor also. even by the same you can change the value of readonly

      Delete
    2. constants are class specific where readonly are objects specific. Readonly can be initialized at the declaration time as well as through constructor. In ReadOnly through constructor one can change the value of the readonly as per required. but constants can be initialized at the declaration time only.

      Delete
  2. How to use the readonly modifier to create a class, struct, or array? Can anyone provide an example. I tried everywhere but I couldn't!

    ReplyDelete

If you are aware of any other C# questions asked in an interview, please post them below. If you find anything missing or wrong, please feel free to correct by submitting the form below.

 
Disclaimer - Terms of use - Contact Us