2011-11-14 40 views
3

我有以下代码:如何在C#/ .NET中声明常量?

public class iSito 
{ 
    public const string myVar = "5262"; 

    public iSito() 
    { 

    } 
} 

现在,如果在任何情况下(在我的情况下,.ascx.cs)我尝试使用iSito.myVar,我不能得到任何价值。

为什么?

+0

您可以在.ascx.cs文件中发布代码示例吗?你还特别指“我无法获得任何价值”? – Justin

+0

你可以提供更多信息吗?你有编译错误吗? –

回答

6

在另一个DLL /程序集中的iSito类?如果是这样,你有没有重建DLL,并重新生成消耗DLL的应用程序?

编译客户端应用程序时,常量值在IL中写为文字。如果你改变const,你将不得不重建客户端应用程序。

如果将const更改为readonly会发生什么? (仅用于测试目的)。

+0

重建!谢谢! :) – markzzz

+0

当您将变量声明为只读时,当您更改该变量的值时,不必重新生成客户端应用程序。 –

+2

@markzzz关于重建潜在需求的好处。 当值为公共时,通常鼓励使用静态只读,并且只有在内部或私有时才使用const –

11

你举的例子是正确的,应该努力 - consts是自动静态的,这样你就可以访问该字段为iSito.myVar - 确保你有完整的命名空间资格一样,同样需要访问类(或添加适当的using语句) 。

0

iSito.myVar的作品。我尝试过这个。

+0

没有那么有用,你可以建议为什么它可能不适用于OP的可能原因。 (如缺少使用指令) –

+0

好的,我只是想证明这个语法必须工作的事实。 – kol

+0

-1:我同意@Ru​​neFS – Fischermaen