[英]How to access the top-level statement variable in a class in C#?
我在下面有一個簡單的代碼。 我想訪問類Program
中的變量x
。 由於x
是一個全局變量,我應該可以訪問它,有沒有辦法訪問頂級變量之外的頂級變量?
int x = 0;
namespace ConsoleApp1
{
internal class Program
{
public void TestMethod()
{
int y = x;
}
}
}
錯誤信息:
CS8801 不能在此上下文中使用在頂級語句中聲明的局部變量或局部函數“x”
只允許以下嗎? 我的意思是只能在頂層訪問?
int x = 0;
int z = x; //no compilation error?
編輯: int y = global::x;
也給出編譯錯誤
只允許以下嗎? 我的意思是只能在頂層訪問?
是的,頂級語句實際上生成一個方法,所有聲明的變量都是局部的。 即您的代碼將被翻譯成類似下面的內容( @sharplab ):
[CompilerGenerated]
internal class Program
{
private static void <Main>$(string[] args)
{
int num = 0;
}
}
namespace ConsoleApp1
{
internal class Program
{
public void TestMethod()
{
}
}
}
另請注意,實際生成的類/方法名稱可能取決於框架/SDK/編譯器版本,因為在 .NET 6 中,生成模式發生了變化,據我所知,支持ASP.NET Core 的集成測試和最小托管模型。
有關生成模式的更多信息可以在文檔中找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.