タグ付けされた質問 「c#-3.0」

C#3.0( "C#Orcas")は、C#2.0に基づいて構築されたいくつかの言語拡張機能を導入して、高階の機能スタイルクラスライブラリの作成と使用をサポートします。拡張機能により、リレーショナルデータベースやXMLなどのドメインでクエリ言語と同等の表現力を持つ構成APIを構築できます。質問がC#3.0固有の機能に特に関係する場合は、このタグを使用してください。それ以外の場合は、C#タグを使用してください。

18
ラムダとDistinct()?
そうです、私は列挙可能であり、そこから明確な値を取得したいと考えています。 使用してSystem.Linq、と呼ばれる拡張メソッドは、もちろんありますDistinct。単純なケースでは、次のようにパラメーターなしで使用できます。 var distinctValues = myStringList.Distinct(); ええと、いいのですが、等価性を指定する必要があるオブジェクトの列挙可能オブジェクトがある場合、使用できる唯一のオーバーロードは次のとおりです。 var distinctValues = myCustomerList.Distinct(someEqualityComparer); 等価比較引数はのインスタンスでなければなりませんIEqualityComparer<T>。もちろん、私はこれを行うことができますが、それはいくぶん冗長で、まあまあです。 私が期待していたのは、ラムダをとるオーバーロード、たとえばFunc <T、T、bool>です。 var distinctValues = myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId); 誰かがそのような拡張機能が存在するかどうか、または同等の回避策を知っていますか?それとも何か不足していますか? または、インラインでIEqualityComparerを指定する方法はありますか(私を当惑させます)? 更新 この件に関するMSDNフォーラムの投稿に対するAnders Hejlsbergからの返信を見つけました。彼は言う: あなたが遭遇する問題は、2つのオブジェクトが等しい場合、それらは同じGetHashCode戻り値を持つ必要があることです(そうしないと、Distinctによって内部的に使用されるハッシュテーブルが正しく機能しません)。EqualsとGetHashCodeの互換性のある実装を単一のインターフェイスにパッケージ化するため、IEqualityComparerを使用します。 それは理にかなっていると思います

30
メタデータファイル「.dll」が見つかりませんでした
私はWPF、C#3.0プロジェクトで作業しており、次のエラーが発生します。 Error 1 Metadata file 'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug \BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools \VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem これは私のユーザーコントロールを参照する方法です: xmlns:vms="clr-namespace:VersionManagementSystem" <vms:SignOffProjectListing Margin="5"/> ビルドが失敗するたびに発生します。ソリューションをコンパイルするための唯一の方法は、すべてのユーザーコントロールをコメントアウトしてプロジェクトを再構築することです。その後、ユーザーコントロールのコメントを外すと、すべて正常です。 ビルドの順序と依存関係の構成を確認しました。 ご覧のとおり、DLLファイルの絶対パスが切り捨てられているようです...長さにバグがあることを確認しました。これは可能性のある問題ですか? これは非常に煩わしく、コメント、ビルド、コメント解除をしなければならないため、ビルドは非常に面倒になっています。


4
文字列からXDocumentに入力
私は少し何かに取り組んでおり、文字列からXDocumentをロードできるかどうかを確認しようとしています。XDocument.Load()渡された文字列を物理XMLファイルへのパスとして受け取るようです。 最初に物理的なXMLファイルを作成し、XDocumentの作成にすぐにジャンプする必要があるという手順を回避したいと思います。 何か案は?
358 c#  xml  c#-3.0  linq-to-xml 

15
C#ラムダ式:なぜそれらを使用する必要があるのですか?
Microsoft Lambda Expressionのドキュメントをすぐに読みました。 ただし、この種の例は、理解を深めるのに役立ちました。 delegate int del(int i); del myDelegate = x => x * x; int j = myDelegate(5); //j = 25 それでも、なぜそれがそのようなイノベーションなのか、私にはわかりません。「メソッド変数」が終了したときに死ぬのは単なるメソッドですよね?実際の方法の代わりにこれを使用する必要があるのはなぜですか?
309 c#  c#-3.0  lambda 

30
LINQの最も難しい、または最も誤解されている側面は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 背景:来月は、について、または少なくともLINQに関連して3つの講演を行いますC#。人々が理解するのが難しいと思うことや、彼らが誤った印象を持っているかもしれないことに基づいて、かなりの注意を払う価値のあるトピックを知りたいのです。私は特にについて話されることはありませんLINQへのSQLクエリが式ツリー(通常は使用してリモートで実行することができる方法の例として以外またはEntity FrameworkのIQueryable)を。 それで、あなたは何が難しいと思いましたLINQか?誤解に関してあなたは何を見ましたか?例は次のいずれかですが、自分を制限しないでください! どのようにC#コンパイラの扱いクエリ表現 ラムダ式 式の木 拡張メソッド 匿名型 IQueryable 遅延実行と即時実行 ストリーミングとバッファリングされた実行(たとえば、OrderByは据え置かれますが、バッファリングされます) 暗黙的に型付けされたローカル変数 複雑な一般的な署名の読み取り(例:Enumerable.Join)
282 c#  linq  c#-3.0 

6
C#では、モナドとは何ですか?
最近、モナドについて多くの話題があります。私はいくつかの記事/ブログの投稿を読みましたが、コンセプトを完全に理解するのに十分なほど例を挙げられません。その理由は、モナドは関数型言語の概念であり、したがって、例は私が使用していない言語に含まれているためです(関数型言語をあまり使用していないため)。記事を完全に理解するのに十分なほど構文を理解することはできません... ただし、ラムダ式やその他の関数型機能を含め、C#についてはよく知っています。C#には機能的な機能のサブセットしかないため、モナドをC#で表現できない可能性があります。 しかし、確かにコンセプトを伝えることは可能でしょうか?少なくとも私はそう願っています。おそらく、C#の例を基礎として提示し、C#開発者がそこから実行できることを望むが、言語には関数型プログラミング機能が不足しているために説明できないかもしれません。モナドの意図と利点を伝えるため、これは素晴らしいことです。だから私の質問です:モナドをC#3開発者に与えることができる最良の説明は何ですか? ありがとう! (編集:ちなみに、SOには既に「モナドとは何か」という質問が少なくとも3つあることは知っています。しかし、私はそれらについて同じ問題に直面しています...したがって、C#開発者のため、この質問はimoに必要ですフォーカス。ありがとう。)
189 c#  c#-3.0  lambda  monads 

5
Linqを使用してオブジェクトのリストからプロパティの一意のリストを取得するにはどうすればよいですか?
Linqを使用して、IDがプロパティであるオブジェクトのリストを指定してIDのリストを返そうとしています。各オブジェクトをループして、見つけた一意のIDを引き出すことなく、これを実行できるようにしたいと思います。 MyClassタイプのオブジェクトのリストがあり、このクラスのプロパティの1つはIDです。 public class MyClass { public int ID { get; set; } } 私がしたいことは、それらのIDのリストを返すLinqクエリを作成することです idをIList<MyClass>返すような方法でそれを行うにはどうすればよいIEnumerable<int>ですか? MyClassリストの各項目をループして一意の値をリストに追加するのではなく、Linqを使用して1行または2行で実行できるはずです。 エレガントなソリューションを作成するための助けがあれば大歓迎です!
171 linq  class  list  c#-3.0  properties 

7
C#の一般的なタイムアウトを実装する
コードの単一行(または匿名デリゲート)をタイムアウトで実行する一般的な方法を実装するための良いアイデアを探しています。 TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min 私のコードが気質的なコードと対話する(変更できない)多くの場所でエレガントに実装できるソリューションを探しています。 さらに、可能であれば、問題のある「タイムアウト」コードをさらに実行しないようにしたいと思います。

10
C#3.0以降のプロパティとフィールドの違い
StackаэтотвопросестьответынаStack Overflowнарусском:Длячегонужнысвойства? C#のフィールドとプロパティの違いは何ですか?しかし、私の質問には(私の観点から)若干の違いがあります: それを知ったら 「プロパティでのみ機能するテクニック」ではクラスを使用しません。 ゲッター/セッターでは検証コードを使用しません。 プロパティの設定におけるある種の制御のように、(スタイル/将来の開発のものを除いて)何か違いはありますか? 間に追加の違いはありますか: public string MyString { get; set; } そして public string myString; (最初のバージョンではC#3.0以降が必要であり、コンパイラーがプライベートフィールドを作成することを認識しています。)

8
ラムダ式をプレーンなデリゲートパラメーターとして提供するときにキャストする必要がある理由
メソッドSystem.Windows.Forms.Control.Invoke(Delegate method)を取る なぜこれがコンパイル時エラーになるのですか? string str = "woop"; Invoke(() => this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type しかし、これはうまくいきます: string str = "woop"; Invoke((Action)(() => this.Text = str)); メソッドがプレーンなデリゲートを期待するとき?
124 c#  c#-3.0  delegates  lambda 

8
コレクションへのAddRange
同僚から本日、コレクションに範囲を追加する方法を尋ねられました。彼はから継承するクラスを持っていCollection<T>ます。そのタイプのget-onlyプロパティがあり、すでにいくつかのアイテムが含まれています。別のコレクションのアイテムをプロパティコレクションに追加したいと考えています。どのようにしてC#3フレンドリーな方法でこれを行うことができますか (取得専用プロパティに関する制約に注意してください。これにより、Unionの実行や再割り当てなどの解決策が妨げられます。) 確かに、プロパティのforeachです。追加は機能します。ただし、- List<T>スタイルのAddRangeの方がはるかにエレガントです。 拡張メソッドを書くのは簡単です: public static class CollectionHelpers { public static void AddRange<T>(this ICollection<T> destination, IEnumerable<T> source) { foreach (T item in source) { destination.Add(item); } } } でも、ホイールを再発明しているような気がします。System.Linqまたはmorelinqで類似するものは見つかりませんでした。 悪いデザイン?追加を呼び出すだけですか?明らかなものがない?


3
新しい匿名クラスを動的にするには?
C#3.0では、次の構文で匿名クラスを作成できます var o1 = new { Id = 1, Name = "Foo" }; これらの匿名クラスを変数に動的に作成する方法はありますか? 例: var o1 = new { Id = 1, Name = "Foo" }; var o2 = new { SQ = 2, Birth = DateTime.Now }; 動的作成の例: var o1 = DynamicNewAnonymous(new NameValuePair("Id", 1), new NameValuePair("Name", "Foo")); var …

7
Dictionary <TKey、TValue>エントリにコレクション初期化子を使用できますか?
コードの次のビットにコレクション初期化子を使用したいと思います。 public Dictionary&lt;int, string&gt; GetNames() { Dictionary&lt;int, string&gt; names = new Dictionary&lt;int, string&gt;(); names.Add(1, "Adam"); names.Add(2, "Bart"); names.Add(3, "Charlie"); return names; } したがって、通常は次のようになります。 return new Dictionary&lt;int, string&gt; { 1, "Adam", 2, "Bart" ... しかし、これの正しい構文は何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.