簡體   English   中英

C#:當任何 class 的其他實例引用時,是否有辦法使一個實例的字段只讀?

[英]C#: Is there a way to make a field of one instance readonly when referenced by other instances of any class?

有沒有辦法讓tastesGood只能在Apple內部重新定義,但仍然可以被Jim引用?

public class Apple {
    public bool tastesGood = true;

    void ChangeYourMind() {
        tastesGood = false;
    }
}

public class Jim {
    void EatApple() {
        if (tastesGood) {
            Speak("mmmmm!");
        } else {
            Speak("Yuck!");
        }
    }
}

一般來說,您不應該公開類中的字段。 而是將值公開為具有公共 getter 的屬性,但使用私有 setter C# 對屬性和字段使用不同的語法。

public class Apple {

    public bool TastesGood { get; private set; } = true;

    public void ChangeYourMind()
    {
        this.TastesGood = false;
    }
}

其他提示:

  • 在 .NET 中,標准命名約定是始終對類/結構/接口的所有公共成員使用PascalCase (而不是camelCase )。
  • 您發布的示例是具有可變 state 的面向對象的 class - 這很好,因為我假設您已經熟悉編程或 C#,但我會建議您在過去十年中趨向於編程領域不可變的 state 並采用更多的函數式編程方法,因此請留意任何有關 FP 的文章,因為當您還年輕且具有可塑性時,您會學得更好。

暫無
暫無

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

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