What is the Difference between read only and constant
variables?

Answer Posted / dilip tiwari

For Eg I have used constant(public const int X = 123;
)in my assembly and compiled that assembly. After compiling
I haved used the .dll in myapplication then the value of X
is 123.After some time recognised that value of X is 234
then to make the changes I have to again recompile my
assembly and main application. But If I use redonly then I
have to just compile my assembly and the reference of new
dll in my main application. No need to recompile my main
application

using System;
public class A
{
public const int X = 123;
}

csc /t:library /out:A.dll A.cs

using System;
public class MyTest
{
public static void Main()
{
Console.WriteLine("X value = {0}", A.X);
}
}

csc /r:A.dll MyTest.cs

To run: mytest
The output :
X value = 123

Then you install the program into your client computer. It
runs perfectly.
One week later, you realised that the value of X should
have been 812 instead of 123.
What you will need to do is to

1] Compile A (after making the changes)
csc /t:library /out:A.dll A.cs

2] Compile your application again
csc /r:A.dll MyTest.cs

This can be a little troublesome. However, if you used the
readonly instead of const,the situation will be slightly
different. You start with

using System;
public class A
{
public static readonly int X = 123;
}

csc /t:library /out:A.dll A.cs

using System;
public class MyTest
{
public static void Main()
{
Console.WriteLine("X value = {0}", A.X);
}
}

csc /r:A.dll MyTest.cs


To run: mytest
The output :
X value = 123

Now you realised, you have made a mistake. All you need to
do is

1] Recompile A.cs (after making changes)
csc /t:library /out:A.dll A.cs

2] Copy the new dll to the client computer and it should
run perfectly. There is no need to recompile your
application MyTest.cs here

Is This Answer Correct ?    0 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is a int in c#?

460


Explain the difference between the system.array.copyto() and system.array.clone()?

496


Explain the advantage of using system.text.stringbuilder over system.string?

463


What is streamreader/streamwriter class?

516


What do you mean by thread safe in c#?

467






Is void a class?

480


Does c# do array bounds checking?

538


What is a nullreferenceexception?

557


What is the usage of transponders?

545


What is sqladapter c#?

530


What is the difference between int16 and int32 in c#?

476


What is the base class of all classes in c#?

509


How do I run managed code in a process?

507


What is the difference between Java and .NET garbage collectors?

509


Can int be null c#?

527