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
What is a int in c#?
Explain the difference between the system.array.copyto() and system.array.clone()?
Explain the advantage of using system.text.stringbuilder over system.string?
What is streamreader/streamwriter class?
What do you mean by thread safe in c#?
Is void a class?
Does c# do array bounds checking?
What is a nullreferenceexception?
What is the usage of transponders?
What is sqladapter c#?
What is the difference between int16 and int32 in c#?
What is the base class of all classes in c#?
How do I run managed code in a process?
What is the difference between Java and .NET garbage collectors?
Can int be null c#?