[解決済み] C#の「const correctness」(コンスタント・コレクトネス)
2023-07-06 23:51:32
質問
const-correctness のポイントは、ユーザが変更したり削除したりできないインスタンスのビューを提供できるようにすることです。コンパイラは、const関数内からconstを破ったとき、またはconstオブジェクトの非const関数を使用しようとしたときに指摘することによって、これをサポートしています。そこで、constのアプローチをコピーすることなく、C#で使用できる、同じ目的を持った方法論はないでしょうか?
私は不変性を認識していますが、それは一例を挙げると、コンテナオブジェクトに本当に引き継がれるわけではありません。
どのように解決するのですか?
私もこの問題に何度も遭遇し、結局はインターフェースを使うことになりました。
C#がC++の何らかの形である、あるいは進化したものであるという考えを捨てることが重要だと思います。この2つは、ほとんど同じ構文を共有する2つの異なる言語なのです。
私は通常、クラスの読み取り専用ビューを定義することによって、C#の「const correctness」を表現します。
public interface IReadOnlyCustomer
{
String Name { get; }
int Age { get; }
}
public class Customer : IReadOnlyCustomer
{
private string m_name;
private int m_age;
public string Name
{
get { return m_name; }
set { m_name = value; }
}
public int Age
{
get { return m_age; }
set { m_age = value; }
}
}
関連
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] 2つのリストを結合する
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] コンストコレクトネスを売り込む
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] C#のConst関数パラメータ [重複]について
-
[解決済み] なぜC#ではconstパラメータが許されないのですか?