常量变量vs参考变量和只读变量

苏尼尔

我有一个具有三种类型的变量的类-常量,只读,像这样的引用变量

public class Constants
{
    public const int constA = 10;
    public int readOnlyB = 10;
    public readonly int referenceVarC = 10;
}

还有另一个项目像这样从上面引用这些变量-

class Program
{
    static void Main(string[] args)
    {
        int a = Constants.Constants.constA;
        int b = new Constants.Constants().readOnlyB;
        int c = new Constants.Constants().referenceVarC;
        Console.WriteLine("The value of a is {0}", a);
        Console.WriteLine("The value of b is {0}", b);
        Console.WriteLine("The value of c is {0}", c);
        Console.ReadLine();
    }
}

根据常量类型变量的性质-当我更改Constant的值并重新编译项目但不重新编译消耗常量的项目时,它指的是常量的旧值。仅在重新编译消耗项目时,常量项目的新价值。这是可以理解的。

但是为什么还要为只读和引用变量遵守这种性质。有价值,如果在他们的创建项目中更改了项目并对其进行了编译,则应该在使用方项目中进行更改,未重新编译的使用方项目应该进行更改,但是我观察到它们指向旧值。

按照我的观点,当运行消费项目时不进行重新编译时,将加载引用的程序集(已重新编译),并且应加载新值。

缪斯凡

如果不进行检查,我将假定您需要重新编译消耗项目,因为这是将引用的DLL复制过来的过程。换句话说,如果不重新编译,则仍在输出bin文件夹中使用旧的DLL。

如果要手动将DLL从源输出“ bin”复制到使用者输出“ bin”,则可以运行应用程序而无需重新编译,并且它将使用新值。

这里的关键点是应用程序并不真正了解其他应用程序。因此,尽管您在Visual Studio中将一个项目引用到另一个项目,但实际的应用程序并不知道另一个项目存在。它所知道的只是“我需要使用这些DLL文件”,而VS在重建时会负责更新DLL文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章