簡體   English   中英

在方法重載之間共享變量?

[英]Sharing a variable between method overloads?

我是一個真正的新手程序員,我正在嘗試進行重載以共享一個變量。 基本上我想做的是有一個方法,其中一個重載將整數值寫入其中的變量,而另一個重載僅返回該值。

現在我嘗試這樣做:

private int GetQID(int qID)
    {
        int ID = qID;
    }    
private int GetQID()
    {
        return ID;
    }

不幸的是,這不起作用,因為第二個重載無法訪問第一個重載的“ ID”變量。 有什么辦法可以不用求助於全局變量嗎?

不,局部變量僅是所討論方法的局部變量。 目前尚不清楚您要實現的目標,但是如果您希望在方法調用之間保持任何狀態,則需要一個字段,並可能將其公開為屬性。

private int id;
public int Id
{
    set
    {
        // Perform some validation?
        id = value;
    }
    get { return id; }
}

如果只需要一個沒有其他邏輯的字段支持的屬性,那么自動實現的屬性將非常有用:

public int Id { get; set; }

不,您不能訪問局部變量。

它們是在方法內部分配的 ,您無法控制在哪里,如何以及何時進行,因為這些決定是由編譯器做出的,因此即使通過骯臟的技巧也無法訪問它們。

關於global variables are evil ,您最好問自己的朋友他的意思(他是正確的,但僅在一定程度上)。 因為必須在許多類中使用屬​​性和字段,並且如果將每個實例的實例提供給所有人(或者如果它是具有靜態屬性/字段的靜態類,則是單例),那么任何類都可能突然變得全局可用。

在您的需求中,您需要的只是該類的常規屬性 (就像其他人已經回答過的一樣):您可以設置其值並在以后讀取它。 但是,如何使用該類很重要,因為這可能會突然變壞

暫無
暫無

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

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