簡體   English   中英

c# - 為什么在方法或除類之外的任何塊中都不允許使用公共變量?

[英]Why public variables are not allowed inside a method or any block except class in c#?

我遇到的一個非常奇怪的問題是,當我嘗試在類的方法中使用 public 關鍵字聲明string類型的變量 say 時,編譯器會在沒有正確解釋的情況下拋出編譯時錯誤。

考慮下面的一段代碼:

public class MyClass
{
    public string publicVarInClass= null;  // No error here. Works fine

    public void MyMethod()
    {    // Error shown here is "Expected } "
        public string publicVarInMethod = null;  // not allowed, but no error is shown in this line. WHY?

        try // Error shown here is Invalid token 'try' in class, struct or interface declaration
        {
        //some code here
        }
    }
}

根據我的考慮,當我們在方法中將變量 decalre 為 public 時,它除了該方法是類、結構或接口。

這就是我的問題,為什么 C# 限制我們將變量聲明為 public 內部方法。 它有什么問題?

變量和字段之間存在差異。 只有字段具有訪問保護,而變量在方法主體之外根本無法訪問。

C# 中的“公共變量”稱為fields C# 允許字段聲明僅出現在類或結構體中。 字段是對象定義的一部分,它們要么附加到實例,要么在所有實例之間共享。

另一方面,方法內部的變量不是字段。 作為方法主體的本地,它們不需要訪問保護。 它們的生命周期和范圍在方法內部受到限制,因此該方法之外的任何代碼都無法訪問局部變量。

這與范圍有關,我們不會在方法的范圍內為變量提供訪問修飾符,該變量只能在該方法中訪問,而不能在其他任何地方訪問,我們將訪問修飾符(公共私有保護)添加到屬性/字段一個班級。

供參考 Public 對其他對象具有全局可用性 Private 只能在該類或該類的對象內訪問 Protected 可從該類或子類內訪問

在方法內部,您聲明的任何變量只能在該方法內訪問,它稱為局部變量。 訪問修飾符(公共、私有等)在這里沒有意義,因為變量不會存在於方法范圍之外。

如果你想要一個方法來設置你的公共變量以便在別處訪問,你可以給它賦值,但你不能在你的方法中聲明一個公共變量。

首先回答自己一個問題 - 你想如何在方法之外訪問這個變量?

你問的是OOP的基礎知識。 類具有對這些字段進行操作的字段/屬性和方法。

因為這個變量生命周期只有在方法開始和結束時才開始和結束。 程序看不到方法內的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM