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

C#(「seesharp」と発音)は、Microsoftによって開発された、静的に型指定された高レベルのマルチパラダイムプログラミング言語です。C#コードは通常、Microsoftの.NETファミリのツールとランタイムを対象としています。これには、.NET Framework、.NET Core、Xamarinなどが含まれます。このタグは、C#またはC#の正式な仕様で記述されたコードに関する質問に使用します。


8
Visual Studio:フォルダー構造をコピーせずに「出力ディレクトリにコピー」する方法
プロジェクトフォルダーの\ libフォルダーにいくつかのdllファイルがあります。dllのプロパティページで、[コンテンツ]として[ビルドアクション]、[常にコピー]として[出力ディレクトリにコピー]を選択しました。 ビルド後、私は実際にdllをコピーしていますが、それらは\ bin \ Releaseではなく\ bin \ Release \ lib内にあります。 ビルド後のスクリプトを記述したり、nantなどを使用したりせずに、dllファイルを\ bin \ Release(\ bin \ Release \ libではなく)にコピーする方法はありますか?

3
ToLookupとGroupByが異なるのはなぜですか?
.ToLookup<TSource, TKey>を返しますILookup<TKey, TSource>。ILookup<TKey, TSource>インターフェースも実装していますIEnumerable<IGrouping<TKey, TSource>>。 .GroupBy<TSource, TKey>を返しますIEnumerable<IGrouping<Tkey, TSource>>。 ILookupには便利なインデクサープロパティがあるため、辞書のような(またはルックアップのような)方法で使用できますが、GroupByは使用できません。インデクサーなしでGroupByを使用するのは面倒です。その後、戻りオブジェクトを参照できる唯一の方法は、それをループする(または別のLINQ拡張メソッドを使用する)ことです。つまり、GroupByが機能する場合は、ToLookupも機能します。 これらすべてから、なぜGroupByに悩む必要があるのでしょうか。なぜ存在する必要があるのですか?
111 c#  linq 

2
asp.net mvcでハイフネーションされたhtml属性
ハイフネーションされた属性を持つ要素を作成するときに、より良い構文はありますか: <%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %> 提案された標準HTML 5およびWIA ARIAのHTML仕様を見ると、HTML 属性のハイフンは、ある種の単純な名前間隔としてより一般的になるように計画されているようです。 たとえば、HTML 5はカスタム属性にプレフィックスを付けることを提案しdata-、WIA ARIAはaria-すべてのWIA ARIA属性のプレフィックスを使用します。 <%= Html.TextBox("name", value, new { attribute = attributeValue }) %>匿名オブジェクトなどのASP.NET MVCでHTMLヘルパーを使用すると、辞書に変換されます。 残念ながら、C#では名前のハイフンはサポートされていないため、唯一の選択肢は辞書を作成することです。構文が非常に冗長ですが、拡張機能全体を書き直さなくても、ASP.NET MVCのHTML拡張機能を変更するための優れた代替手段または簡単な方法を誰かが見たことがありますか?
111 c#  asp.net-mvc 


8
C#SQL Server-ストアドプロシージャにリストを渡す
C#コードからSQL Serverストアドプロシージャを呼び出しています。 using (SqlConnection conn = new SqlConnection(connstring)) { conn.Open(); using (SqlCommand cmd = new SqlCommand("InsertQuerySPROC", conn)) { cmd.CommandType = CommandType.StoredProcedure; var STableParameter = cmd.Parameters.AddWithValue("@QueryTable", QueryTable); var NDistanceParameter = cmd.Parameters.AddWithValue("@NDistanceThreshold", NDistanceThreshold); var RDistanceParameter = cmd.Parameters.AddWithValue(@"RDistanceThreshold", RDistanceThreshold); STableParameter .SqlDbType = SqlDbType.Structured; NDistanceParameter.SqlDbType = SqlDbType.Int; RDistanceParameter.SqlDbType = SqlDbType.Int; // Execute the query …

5
parallel.foreachを解除しますか?
parallel.forループから抜け出すにはどうすればよいですか? 次のようなかなり複雑なステートメントがあります。 Parallel.ForEach<ColorIndexHolder>(ColorIndex.AsEnumerable(), new Action<ColorIndexHolder>((ColorIndexHolder Element) => { if (Element.StartIndex <= I && Element.StartIndex + Element.Length >= I) { Found = true; break; } })); 並列クラスを使用すると、このプロセスを大幅に最適化できます。しかしながら; 並列ループを解除する方法がわかりませんか?break;文は、次の構文エラーがスローされます。 中断または継続する囲みループがない


7
ロックステートメントはどれくらい高価ですか?
私はマルチスレッドと並列処理を実験しており、基本的なカウントと処理速度の統計分析を行うためのカウンターが必要でした。クラスの同時使用に関する問題を回避するために、クラスのプライベート変数にロックステートメントを使用しました。 private object mutex = new object(); public void Count(int amount) { lock(mutex) { done += amount; } } しかし、私は不思議に思っていました...変数のロックはどれほど高価ですか パフォーマンスへの悪影響は何ですか?

3
リフレクションで静的メソッドを呼び出す
私は名前空間にいくつかの静的なクラスを持っているmySolution.Macrosような static class Indent{ public static void Run(){ // implementation } // other helper methods } だから私の質問は、リフレクションの助けを借りてそれらのメソッドを呼び出すことがどのように可能になるのでしょうか? メソッドが静的でない場合は、次のようなことができます: var macroClasses = Assembly.GetExecutingAssembly().GetTypes().Where( x => x.Namespace.ToUpper().Contains("MACRO") ); foreach (var tempClass in macroClasses) { var curInsance = Activator.CreateInstance(tempClass); // I know have an instance of a macro and will be able to …
111 c#  reflection  dynamic 

9
どの要素をクリックしても、WPFウィンドウをドラッグ可能にする
私の質問は2つあります。WinFormsの標準ソリューション(この説明を行う前にChristophe Geersが提供したもの)ではなく、WPFによって提供される両方のソリューションが簡単になることを願っています。 最初に、マウスクリック+ドラッグイベントをキャプチャして処理せずにウィンドウをドラッグ可能にする方法はありますか?ウィンドウがタイトルバーによってドラッグ可能であることを意味しますが、ウィンドウを設定せずにドラッグできるようにしたい場合、タイトルバーのドラッグを処理するものにイベントを何らかの方法でリダイレクトする方法があります。 ? 次に、ウィンドウ内のすべての要素にイベントハンドラーを適用する方法はありますか?同様に、ユーザーがクリックしてドラッグする要素に関係なく、ウィンドウをドラッグ可能にします。明らかに、ハンドラーを手動で追加せずに、すべての単一の要素に追加します。どこかで一度だけやるの?

4
xUnitでコレクションサイズを確認する慣用的な方法は何ですか?
私のテストスイートには、次のようなテストがあります。 [Fact] public void VerifySomeStuff() { var stuffCollection = GetSomeStuff(); Assert.Equal(1, stuffCollection.Count()); } このテストは期待どおりに機能しますが、実行するとxUnitが警告を出力します。 警告xUnit2013:コレクションサイズのチェックにAssert.Equal()を使用しないでください。 ただし、警告では代替案は提案されておらず、グーグル検索により、この警告が出力されることを確認するテストのためにxUnitのソースコードが表示されます。 Assert.Equal()コレクションの長さを確認する正しい方法ではない場合、何をしますか? 明確にするために、たとえば変数を抽出するかAssert.True(stuff.Count() == 1)代わりに使用することで、xUnitを「だまして」この警告を出さないようにすることができます。後者は単にハックであり、前者はxUnitがたとえばの複数の反復を回避しようとしているように感じる場合IEnumerable<T>、これは間違った方法です(問題がある場合はコンパイラーのヒントを個別に取得するため)、そしてxUnitそれ自体は、入力を2回以上評価する必要はありません(実際、C#関数呼び出しのしくみのため、変数の抽出に関係なく、同じ入力を取得する可能性があります)。 そのため、出力からその警告を削除することに興味があるだけではありません。私の質問への回答は、なぜその警告が最初にライブラリに含まれているのか、そして代わりに私が代わりに使用すべきアプローチがより優れている理由を説明しています。
111 c#  xunit  xunit.net 

5
Insertコマンドを実行し、SQLで挿入されたIDを返す
MVC 4でC#を使用してSQLテーブルにいくつかの値を挿入しています。実際には、値を挿入して、最後に挿入されたレコードの 'ID'を返します。次のコードを使用します。 public class MemberBasicData { public int Id { get; set; } public string Mem_NA { get; set; } public string Mem_Occ { get; set; } } IDは、挿入時にデータベースで自動的に増分されます。 public int CreateNewMember(string Mem_NA, string Mem_Occ ) { using (SqlConnection con=new SqlConnection(Config.ConnectionString)) { using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ)",con)) { …

14
List <T>を(容量ではなく)指定されたサイズに初期化する方法は?
.NETは、パフォーマンスがほぼ同じである一般的なリストコンテナーを提供します(配列のパフォーマンスとリストのパフォーマンスの質問を参照)。ただし、初期化はかなり異なります。 配列は、デフォルト値で非常に簡単に初期化でき、定義により、すでに特定のサイズになっています。 string[] Ar = new string[10]; これにより、ランダムなアイテムを安全に割り当てることができます。 Ar[5]="hello"; リストでは物事はよりトリッキーです。同じ初期化を行う2つの方法を見ることができます。どちらもエレガントとは言えません。 List&lt;string&gt; L = new List&lt;string&gt;(10); for (int i=0;i&lt;10;i++) L.Add(null); または string[] Ar = new string[10]; List&lt;string&gt; L = new List&lt;string&gt;(Ar); よりクリーンな方法は何でしょうか? 編集:これまでの答えは、容量を参照していますが、これはリストに事前入力する以外の方法です。たとえば、容量が10で作成されたばかりのリストでは、L[2]="somevalue" 編集2:人々が私がなぜこのようにリストを使用したいのか不思議に思っています、それはそれらが意図された使用方法ではないからです。私には2つの理由があります。 リストは「次世代」の配列であり、ほとんどペナルティなしで柔軟性を追加すると、説得力をもって主張することができます。したがって、デフォルトでそれらを使用する必要があります。初期化が簡単ではないかもしれないと指摘しています。 私が現在書いているのは、より大きなフレームワークの一部としてデフォルトの機能を提供する基本クラスです。私が提供するデフォルトの機能では、リストのサイズは事前にわかっているため、配列を使用することもできます。ただし、どの基本クラスにも動的に拡張する機会を提供したいので、リストを選びます。

12
(パスで選択された)画像をbase64文字列に変換する
ユーザーのコンピューター上のパスからC#でbase64文字列に画像を変換するにはどうすればよいですか? たとえば、画像へのパス(形式C:/image/1.gif)がありdata:image/gif;base64,/9j/4AAQSkZJRgABAgEAYABgAAD..、1.gif返された画像を表すようなデータURIが必要です。
111 c#  image  base64 

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