問題タブ [object-initializers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - オブジェクト初期化子での二重代入
私はちょうど次のことにつまずいた:
突然、コントロールのサイズを変更できなくなりました... IntelliSense が問題を示しました。マウスを上に置くHeight
と、FrameworkElement.Height
プロパティが意図されていることが示されました。では、オブジェクト初期化子で二重代入を使用できないのはなぜでしょうか?
c# - デフォルト コンストラクターのない C# オブジェクト初期化子
C# オブジェクト初期化子を使用してオブジェクトを作成しようとしています。しかし、そのクラスには、必要に応じて1つの引数を持つコンストラクターが既にあり、デフォルトのコンストラクターは必要ないため、提供しませんでした。クラスにユーザー提供のコンストラクターがある場合、コンパイラーもデフォルトのコンストラクターを提供しません。
オブジェクト初期化子を使用してこのクラスのインスタンスを作成しようとすると、問題が発生します。
次のようにクラスをインスタンス化します。
そして今、コンパイル時エラーが発生しています:
「Foo には、0 引数を取るコンストラクターが含まれていません」
私はエラーを知っています。それはデフォルトのコンストラクターがないためです。デフォルトのコンストラクターが必要ないのに、オブジェクト初期化子を使用するためだけにコンストラクターを提供する必要があるのはなぜですか? デフォルトのコンストラクターを明示的に提供せずにこのオブジェクト初期化子を使用できる他の方法 (スタイル、構文) はありますか?
このMSDNリンクを確認しました。クラスにプライベートデフォルトコンストラクターがある場合、オブジェクト初期化子を使用できないと書かれていますが、ここにはプライベートデフォルトコンストラクターがありません。
c# - オブジェクト初期化子による括弧
C# では、次のようなクラスを作成できます。
このクラスを次のように初期化できます。
または:
かっこが必要なく、オブジェクト初期化子によって設定されるプロパティがない場合、これを行うことができないのはなぜですか?
c# - c#でオブジェクトにアクセスするには?
クラスに属するdataという名前のオブジェクトがありますが、
ここで、values は独自の変数を持つ別のクラスで、最初は次のコードの実行中に、
2 行目を実行すると、null 例外が発生します。
問題は何ですか?実行後でも data.values.Name が null のままである理由
それに価値を与えるにはどうすればいいですか?
c# - オブジェクト初期化子を使用する - Resharper の提案
私はReSharper
毎日使用していますが、今日、これを行うときに ReSharper が「オブジェクト初期化子を使用する」ことを提案する理由を自問しました。
それは次のように置き換えられます:
これは私のコードの実行を最適化しますか、それとも再フォーマットの問題ですか?
個人的には好きです。しかし、次の理由で嫌いになることもあります。
step-by-step
私はデバッグを行うことができません:(
c# - オブジェクト初期化子での関数とプロパティの使用法
C# の仕様では、オブジェクト (または構造体) の初期化子構造内からメソッドを呼び出すことはできませんか?
私が尋ねている理由は、LINQ-to-XML ステートメントを使用して初期化子内でゲーター データを使用しようとしていたからです。これは動作しません。ただし、手動でローカル変数に保存する前にデータを取得すると、問題なく動作します。コードのエラーをすでに把握しているので、なぜこれが起こるのか疑問に思っていました。
動作しません:
作品:
c# - オブジェクト初期化子のこのバリアントはどこに文書化されていますか?
MSDN:Object and Collection Initializersでこれについての説明は見当たりませんでした。具体的には、サブタイプ自体を新しくするのではなく、オブジェクト初期化子を使用してサブタイプのプロパティを設定できることに注意しました。
構文自体は、MSDN ページに関する私の理解と一致しません。オブジェクト初期化子を使用して初期化されたオブジェクトのフィールドを設定できることは理解していますが、フィールドのフィールドを設定できることが文書化されている場所がわかりません。
これが合法であることは私には理にかなっています。で同じことを達成できbt.subType.subTypeValue=5;
ます。
c# - オブジェクト初期化子を使用することの付加価値は何ですか?
オブジェクト初期化子を使用することの付加価値は何ですか? 参照型と比較して値型で使用する違いはありますか?
最近 ReSharper をインストールしました。次の例をご覧ください。
私のコードはこれに変換されます:
個人的には、イニシャライザが大きすぎるとコードをたどるのが難しくなります。