問題タブ [collection-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.
c# - 単一のオブジェクトと別のオブジェクトのリストの両方でリストを初期化します
オブジェクトとオブジェクトのリストを特定の順序でリストを初期化したい。現在、私は次のことを行っています。
私はそれを初期化ステートメントに統合することを望んでいました(もちろん構文は間違っています):
これを簡潔に行う方法はありますか?
c# - コレクション初期化子を使用すると、別のスレッドが部分的に作成されたコレクションを見ることができますか?
あるメソッドでこの C# コードを想像してみてください。
ディクショナリにアクセスするために、明示的なメモリ バリアやロックを使用している人は誰もいないとしましょう。
最適化が行われない場合、グローバル ディクショナリは null (初期値) または 1 つのエントリを持つ適切に構築されたディクショナリのいずれかになります。
問題は、Add 呼び出しと SomeGlobalStaticDictionary への割り当ての効果を並べ替えて、他のスレッドが空の null 以外の SomeGlobalStaticDictionary (またはその他の無効な部分的に構築された辞書) を参照できるようにすることはできますか?
SomeGlobalStaticDictionary が揮発性である場合、答えは変わりますか?
http://msdn.microsoft.com/en-us/magazine/jj863136.aspx (およびその 2 番目の部分) を読んだ後、理論的には、ソース コードで 1 つの変数が割り当てられているという理由だけで、他のスレッドが原因で別の方法で表示される可能性があることを学びました。多くの理由。IL コードを見ましたが、問題は、SomGlobalStaticDictionary の割り当ての前に、JIT コンパイラや CPU が Add 呼び出しの効果を他のスレッドに「フラッシュ」しないように許可されているかどうかです。
c# - insert ステートメントでコレクション初期化子を使用する
私は次のものを持っていますmethod
:
ReSharper
collection initializer
parsに を使用するように指示していますList
。
質問: SQLiteParameter をコレクション初期化子に追加するにはどうすればよいですか?
asp.net-mvc - TextBoxFor を使用して名前空間プレフィックスを持つ HTML 属性を設定する
ASP.NET MVC で動作するようにいくつかの既存の HTML を変換しており、名前空間プレフィックスを含む追加の属性 (現時点では保持する必要があります) を持つ入力フィールドを含むいくつかのフォームがあります。
コレクション初期化構文を使用して指定TextBoxFor
できるヘルパー メソッド オーバーロードを使用したいと思います。htmlAttributes
foo:required
ただし、 (etc)にコロンがあるため、この構文は有効ではありません。
代わりに、次のより冗長な辞書初期化構文を使用する必要があります。
最初の構文のバリエーションを使用して、(より適切な言葉が必要なため) コロンをエスケープすることは可能ですか?
または
TextBoxFor
これは、ヘルパー メソッドが実際には役に立たないシナリオですか。既存の未加工の HTML を保持value="@Model.UserName"
して、input
要素に追加する方が簡単でしょうか?
java - 二重ブラケット コレクション初期化子での未定義のコンストラクタ エラー
次のコードでは、getEntriesNotWorking
メソッドはコンパイル時エラーを報告します。
エラー:
コンストラクタ DoubleBracketInitializerTest.Entry(new ArrayList(){}) は未定義です
getEntriesWorking()
メソッドが正しくコンパイルされている間。DetailedContailer
aは のサブクラスであるため、コンストラクターは明らかにそこにありContailer
ます。
コードを無効にするこれら2つの方法の違いは何ですか? このクラス階層で二重括弧初期化子を機能させるにはどうすればよいですか?
c# - コレクション初期化子と TypeInitializationException と IEnumerable の比較
にコレクション初期化子を使用し、Dictionary
を受け取りましたTypeInitializationException
:
InnerException
、コールスタックなどの有用な情報がないため、混乱しています。そこで、問題を少し調べたところ、同じ値を持つ 2 つのキーがあることに気付きました。
IL に関しては、このコレクション初期化子の構文はDictionary.Add(...)
呼び出しに変換されるためAdd
、同じキーで 2 回呼び出しを行うと発生しますSystem.ArgumentException
(これは で予想される内部例外ですTypeInitializationException
)。したがって、元の質問に効果的に答えましたが、別の質問が出てきました。
最終的にコレクション初期化子が呼び出しに変換されたときに( IEnumerable を介してクラスに存在することが保証されていない) 、なぜクラスが実装IEnumerable
(およびしたがって提供IEnumerator
)する必要があるのですか? 私は何か重要なものを見逃していますか?Add
c# - C# 6.0 の新しい Dictionary Initializer - 明確化
私はそれを読んだ:
チームは通常、イニシャライザに他のバリエーションを実装するのに忙しくしています。たとえば、 Dictionary オブジェクトを初期化できるようになりました
しかし、見て:
対。
どこにメリットがあるのかわからない。それは同じように見えます。どちらも名前と値のコレクションにすぎません。
彼らは中括弧のペアを角括弧のペアといくつかのコンマに置き換えました
質問:
新しい構文を使用することの付加価値は何ですか? 実世界の例は大歓迎です。