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 difference between association, aggregation and inheritance relationships?
Can you explain template pattern?
How do switch statements work?
What are handlers in c#?
Illustrate namespaces in c#?
What are the collection types can be used in c#?
What is public or shared assemblies ?
what is virtual method in c#?
What is connection pooling in ado.net?
Is java better than c sharp?
can you allow a class to be inherited, but prevent the method from being over-ridden?
Which one is trusted and which one is untrusted?
What is Dependency of Injection?
What is default boolean value in c#?
Can constructor be protected?