問題タブ [object-initializer]

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.

0 投票する
7 に答える
90789 参照

c# - オブジェクト初期化子とコンストラクターの違いは何ですか?

2つの違いは何ですか?また、いつ「コンストラクター」よりも「オブジェクト初期化子」を使用し、その逆を使用しますか? それが重要な場合、私はC#で作業しています。また、オブジェクト初期化メソッドは C# または .NET に固有のものですか?

0 投票する
3 に答える
184 参照

c# - {blah="asdf"}で初期化されたオブジェクトにアイテムを追加する方法

次で初期化されたオブジェクトにアイテムを追加する方法:

別のキーと値のペアを追加したい場合、どうすればよいですか?

0 投票する
6 に答える
5000 参照

c# - ExpandoObject でコレクション初期化構文を使用するにはどうすればよいですか?

必要なメソッドとメソッドを備えた新しいExpandoObject実装があることに気付きました。そのため、アイテムを辞書に追加するのと同じ方法で、コレクション初期化子構文を使用して expando オブジェクトにプロパティを追加できるはずです。IDictionary<string,object>IEnumerable<KeyValuePair<string, object>>Add(string, object)

しかし、それを行う方法はないようです。エラー:

「System.Dynamic.ExpandoObject」には「追加」の定義が含まれていません

インターフェイスが明示的に実装されているため、これは機能しないと思います。しかし、それを回避する方法はありますか?これはうまくいきます、

しかし、コレクション初期化子の構文ははるかにきれいです。

0 投票する
3 に答える
81 参照

c# - メソッドパラメータの単純なイニシエータ

私はこのような流暢なインターフェースを構築しました:

私はこのようなことをすることができますか?

paramsキーワードを使用してメソッドを使用しようとしました:

しかし、私はこれを行う必要があります:

重要なのは、メソッドに「新しい」キーワードを書きたくないということです。

0 投票する
1 に答える
590 参照

c# - ReSharper とオブジェクト初期化子による間隔

Object Initializer を使用してオブジェクトを初期化しようとすると、ReSharper は常に大量の空白を挿入します。

初期化子の後に文字を置き換える;と、コードは次のようにフォーマットされます。

問題を再現するには、次の手順に従います (Piers Myers に感謝します)。

  • たとえば、左中括弧の後のインデント位置にカーソルを置きます (空の行では、カーソルを行の最初または Resharper/VS が使用すべきと考えるインデント レベルに置くことができます)。
  • CTRL+スペース、CTRL+ALT+スペース、またはSHIFT+ALT+スペースを押します。カーソルの前にスペースを挿入して埋めますが、カーソルの後に同じ量のスペースも追加しますが、これは正しくありません。

最初に生成された空白の原因を知っている人はいますか? おそらく、どの設定を間違って構成したのでしょうか?

0 投票する
2 に答える
162 参照

c# - 初期化子を使用してオブジェクトの配列を作成すると失敗するようです

GM と呼ぶゲームオブジェクトがあります。これに添付されているのは、ゲームのプライマリ論理コントローラーになることを意図したスクリプトです。

そのスクリプトのどこかに、次のものがあります。

関連する dbEquipment.cs のスニペット:

Unity を実行すると、次のようになります。

次の行を指しています:

最初に配列を実行して、すべての clEquipment オブジェクトを空の clEquipment() に初期化してみました。

配列が実際に満たされていることを完全に確認するためですが、同じ結果が得られました。

また、それを に変更し、すべてを適切に変更しようとしましたList<clEquipment>-サイコロはありません。

何か案は?

0 投票する
4 に答える
13890 参照

c# - オブジェクト初期化子またはコンストラクターを使用する必要がありますか?

オブジェクト初期化子について学んだばかりで、それらをいつ使用する場合のベストプラクティスは何か疑問に思っていました。

これは私がそれらについて読んだものです:http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx 匿名型を作成するためにそれらが必要であることは明らかですが、私がすべきかどうか知りたいです他のすべての場合は、通常のコンストラクターよりもそれらを優先するようにしてください。

0 投票する
2 に答える
197 参照

c# - Visual Studio 2015 に新しいキーワードがありません - コンパイラ エラーはありません

新しいアプリケーションの 1 つに取り組んでいたとき、ばかげた間違いを犯しました… オブジェクト初期化子内に「new ClassName」と書くのを忘れていました。不思議なことに、VS はコードをコンパイルしただけで、エラーや警告はありませんでした。(VS 2015、.Net 4.5.2を使用しました)

私のコード:

(Start と End はどちらも DateTimeValue 型です)

アプリケーションを起動すると、このコードが NullReferenceException をスローしました。(「新しいDateTimeValue」を追加すると問題が修正されました)。コンパイラからエラーが発生しなかったのはなぜですか?

0 投票する
1 に答える
453 参照

python - コマンドライン引数の解析とオブジェクトの初期化のリンク

約12個のオブジェクト変数を持つクラスがあります。各変数とともに、デフォルト値、ヘルプ文字列 (argparse 用)、およびコメント文字列 (データ ファイルに書き込むため) を提供したいと考えています。次の方法でオブジェクトをインスタンス化できるようにしたい:

  1. init メソッドに明示的な値を提供する
  2. コマンドラインで使用する値を提供する
  3. デフォルトを取る
  4. 上記のいくつかの組み合わせ。

オブジェクト変数が 2 つしかないときは、init 関数の宣言でデフォルトを指定し、引数パーサーを作成するときにこれらとヘルプ文字列を複製しました。しかし、多くの変数では、非常に面倒です。

以下の縮小されたサンプル コードは、私の現在のソリューションであり、かなり満足しており、私が望んでいることを正確に実行し、非常にうまく機能します。しかし、2 つの質問があります。

  1. それはpythonicですか?
  2. 確かに、これはすでに解決された問題であるに違いありません。それを行うための「標準的な」方法はありますか?

私はここを見回し、少しグーグルで検索しましたが、既存の解決策を見つけることができませんでした.