[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
2022-03-16 14:02:06
質問
C#のオートプロパティに初期値を与えるには?
コンストラクタを使うか、古い構文に戻すか、どちらかですね。
コンストラクタを使用する。
class Person
{
public Person()
{
Name = "Initial Name";
}
public string Name { get; set; }
}
通常のプロパティ構文の使用 (初期値あり)
private string name = "Initial Name";
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
もっといい方法はないのでしょうか?
どのように解決するのですか?
C# 5以前では、自動実装されたプロパティに初期値を与えるには、コンストラクタで行う必要があります。
C# 6.0以降では、インラインで初期値を指定することができるようになりました。構文は以下の通りです。
public int X { get; set; } = x; // C# 6 or higher
DefaultValueAttribute
は、VSデザイナー(または他の消費者)が、初期値ではなく、デフォルト値を指定するために使用することを意図しています。(設計されたオブジェクトであっても、初期値はデフォルト値です)。
コンパイル時
DefaultValueAttribute
は生成されたILに影響を与えないので、その値にプロパティを初期化することは読み取られません(
DefaultValue属性がAutoプロパティで機能しない
).
ILに影響を与える属性の例としては
ThreadStaticAttribute
,
CallerMemberNameAttribute
, ...
関連
-
[解決済み】C#で四捨五入する方法
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] ラムダ式からプロパティ名を取得する
-
[解決済み] LINQを使用して、プロパティ値の最小または最大値を持つオブジェクトを選択する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】C#のオートプロパティの初期化【重複あり