我已经阅读了 C# 中的 const 和 readonly 关键字。这些关键字之间的区别之一是 const 的值在编译时解析,而 readonly 关键字在运行时解析。虽然我没有机会在我的任何项目中实施它们。所以我想试一试。我创建了我将在我的其他项目中使用的 mylibrary。mylibrary 中的代码如下
namespace MyLibrary
{
public class Class1
{
public static readonly string MyVar = "Vikram";
//public readonly string MyVar;
//public Class1()
//{
// MyVar = "Test";
//}
}
}
现在我将在我的其他控制台项目中使用这个库作为参考,如下所示
class Program
{
static void Main(string[] args)
{
//MyLibrary.Class1 class1 = new MyLibrary.Class1();
Console.WriteLine(MyLibrary.Class1.MyVar); // output is vikram
Console.ReadLine();
Console.WriteLine(MyLibrary.Class1.MyVar); // changed to Test but still op as vikram
Console.ReadLine();
}
}
现在在这两个 writeline 之间,我将更改库中“MyVar”的值并重新编译它,根据 readonly 的概念,它应该反映在控制台项目中,而无需重新编译我的主项目。
如果我对 readonly 关键字的理解是错误的,请纠正我。
PS我已经通过这个链接的答案。在其中一个答案中提到了以下内容
在只读值的情况下,它就像一个内存位置的引用。该值未包含在 AssemblyB 的 IL 中。这意味着如果内存位置被更新,程序集 B 无需重新编译即可获得新值。所以如果 I_RO_VALUE 更新为 30,则只需要构建 AssemblyA。所有客户端都不需要重新编译。
谁能解释一下粗线的确切含义。我认为这就是我在我的例子中所做的。