これは本当に基本的なことかもしれませんが、次のことを達成するためのベストプラクティスについてはわかりません。
文字列プロパティを持つ次のクラスがありますmyString
。
public class MyClass
{
public string myString
{
get {
return myString;
}
}
public void AFunction()
{
// Set the string within a function
this.myString = "New Value"; // Error because the property is read-only
}
}
私は、myString
プロパティに次のことが当てはまることを望みます:
- 内部設定可能
- 内部で取得可能
- 外部から設定不可
- 外部から取得可能
myString
そのため、クラス内で変数を設定し、その値をクラス外から読み取り専用にできるようにしたいと考えています。
次のように、個別の get および set 関数を使用せずにmyString
プロパティをプライベートにすることなく、これを実現する方法はありますか。
public class MyClass
{
private string myString { get; set; }
public void SetString()
{
// Set string from within the class
this.myString = "New Value";
}
public string GetString()
{
// Return the string
return this.myString;
}
}
上記の例では、変数を内部的に設定できますがmyString
、クラスの外部から実際のプロパティに読み取り専用でアクセスすることはできません。
試してみprotected
ましたが、これにより外部から値にアクセスできなくなります。