我有一个具有三种类型的变量的类-常量,只读,像这样的引用变量
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] 删除。
我来说两句