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

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

6
Newtonsoft.Json.Linq.JArrayを特定のオブジェクトタイプのリストに変換する
次のタイプの変数があります{Newtonsoft.Json.Linq.JArray}。 properties["Value"] {[ { "Name": "Username", "Selected": true }, { "Name": "Password", "Selected": true } ]} 私が達成したいのは、これを次のタイプのList<SelectableEnumItem>場所に変換することですSelectableEnumItem: public class SelectableEnumItem { public string Name { get; set; } public bool Selected { get; set; } } 私はプログラミングに慣れていないので、これが可能かどうかはわかりません。実例を参考にしていただければ幸いです。
236 c#  json.net 

15
ソフトウェアライセンスキーを生成および検証する方法
私は現在、C#で開発された製品の開発に携わっており、無料でダウンロードしてインストールできますが、非常に限定されたバージョンです。すべての機能にアクセスするには、ユーザーはライセンス料を支払い、キーを受け取る必要があります。次に、そのキーをアプリケーションに入力して、完全版を「ロック解除」します。 そのようなライセンスキーを使用するのは普通のことなので、私は思っています: それは通常どのように解決されますか? どうすればキーを生成でき、アプリケーションでどのように検証できますか? キーをインターネットで公開して、ライセンスを支払っていない他の人(基本的に「自分」ではないキー)が使用するのを避けるにはどうすればよいですか。 どういうわけか、キーをアプリケーションのバージョンに関連付けて、機能バージョンの新しいキーに課金できるようにする必要があると思います。 このシナリオで他に考慮すべきことはありますか?
236 c#  license-key 

5
パラメータをActivator.CreateInstance <T>()に渡す方法
私が持っているジェネリックメソッドで指定する型のインスタンスを作成したいと思います。この型には、多数のオーバーロードされたコンストラクタがあります。コンストラクタに引数を渡せるようにしたいのですが、 Activator.CreateInstance&lt;T&gt;() これはオプションとして表示されません。 それを行う別の方法はありますか?


8
Boolean.ToStringが「true」ではなく「True」を出力する理由
true.ToString() false.toString(); Output: True False 「真」ではなく「真」である正当な理由はありますか?XMLのブール型が小文字であるとしてXMLを書き込むと壊れ、C#のtrue / falseとの互換性もありません(ただしCLSについては不明です)。 更新 これは、C#で回避するための非常にハックな方法です(XMLで使用するため)。 internal static string ToXmlString(this bool b) { return b.ToString().ToLower(); } もちろん、これによりスタックにメソッドが1つ追加されますが、どこでもToLowers()が削除されます。
235 c#  .net  boolean 

4
辞書に新しいアイテムを追加するか、既存のアイテムを更新する方法
一部のレガシーコードでは、新しいキー値アイテムの追加やキーがすでに存在する場合の値の更新を容易にするために、次の拡張メソッドを参照しています。 方法1(レガシーコード)。 public static void CreateNewOrUpdateExisting&lt;TKey, TValue&gt;( this IDictionary&lt;TKey, TValue&gt; map, TKey key, TValue value) { if (map.ContainsKey(key)) { map[key] = value; } else { map.Add(key, value); } } しかし、私はそれmap[key]=value がまったく同じ仕事をすることを確認しました。つまり、このメソッドは、以下のメソッド2で置き換えることができます。 方法-2。 public static void CreateNewOrUpdateExisting&lt;TKey, TValue&gt;( this IDictionary&lt;TKey, TValue&gt; map, TKey key, TValue value) { map[key] = value; } …
235 c#  dictionary 

2
含まれていない場合に例外をキャッチするよりも、辞書にキーが含まれているかどうかをチェックする方が速いのはなぜですか?
コードを想像してください: public class obj { // elided } public static Dictionary&lt;string, obj&gt; dict = new Dictionary&lt;string, obj&gt;(); 方法1 public static obj FromDict1(string name) { if (dict.ContainsKey(name)) { return dict[name]; } return null; } 方法2 public static obj FromDict2(string name) { try { return dict[name]; } catch (KeyNotFoundException) { return null; …

6
トップ5を選択するLINQクエリ
LINQクエリがあります。 var list = from t in ctn.Items where t.DeliverySelection == true &amp;&amp; t.Delivery.SentForDelivery == null orderby t.Delivery.SubmissionDate select t; このクエリを変更して、データベースから5つの結果のみを選択するにはどうすればよいですか?
234 c#  linq 

11
文字列からのジェネリック型変換
別のクラスの「プロパティ」を保存するために使用したいクラスがあります。これらのプロパティは名前と値を持つだけです。理想的には、型付きのプロパティを追加できるようにして、返される「値」が常に希望する型になるようにします。 タイプは常にプリミティブである必要があります。このクラスは、基本的に名前と値を文字列として格納する抽象クラスをサブクラス化します。このサブクラスは、基本クラスに型の安全性を追加する(そして、いくつかの変換で私を救う)という考えです。 だから、私は(おおよそ)これであるクラスを作成しました: public class TypedProperty&lt;DataType&gt; : Property { public DataType TypedValue { get { // Having problems here! } set { base.Value = value.ToString();} } } だから問題は: 文字列からプリミティブに戻す「一般的な」方法はありますか? 変換を全面的にリンクする汎用インターフェイスを見つけることができないようです(ITryParsableのようなものが理想的でした!)。

7
C#での参照または値によるオブジェクトの受け渡し
C#では、非プリミティブ変数は参照によって渡され、プリミティブ値は値によって渡されると常に思っていました。 したがって、メソッドにプリミティブ以外のオブジェクトを渡す場合、メソッド内のオブジェクトに対して行われたことは、渡されるオブジェクトに影響します。(C#101のもの) しかし、System.Drawing.Imageオブジェクトを渡したときに、これは当てはまらないように見えました。system.drawing.imageオブジェクトを別のメソッドに渡し、そのオブジェクトに画像をロードした場合、そのメソッドをスコープ外にして呼び出し元のメソッドに戻ると、その画像は元のオブジェクトにロードされませんか? どうしてこれなの?

2
非同期プログラミングとマルチスレッドの違いは何ですか?
私はそれらは基本的に同じものだと思っていました—プロセッサー間でタスクを分割するプログラムを書く(2つ以上のプロセッサーを持つマシン上で)。それから私はこれを読んでいます、それは言う: 非同期メソッドは、非ブロッキング操作を目的としています。非同期メソッドのawait式は、待機中のタスクの実行中に現在のスレッドをブロックしません。代わりに、式は継続としてメソッドの残りの部分にサインアップし、asyncメソッドの呼び出し元に制御を返します。 asyncおよびawaitキーワードを使用しても、追加のスレッドが作成されることはありません。非同期メソッドは独自のスレッドで実行されないため、非同期メソッドはマルチスレッドを必要としません。メソッドは現在の同期コンテキストで実行され、メソッドがアクティブな場合にのみスレッドで時間を使用します。Task.Runを使用してCPUにバインドされた作業をバックグラウンドスレッドに移動できますが、バックグラウンドスレッドは、結果が利用可能になるのを待っているだけのプロセスには役立ちません。 そして、誰かがそれを英語に翻訳できるかどうか疑問に思っています。これは、非同期性(つまり、単語ですか?)とスレッド化を区別しているようで、非同期タスクはあるがマルチスレッド化はできないプログラムを作成できることを示しています。 これで、pgの例のような非同期タスクの考え方がわかりました。ジョンスキートのC#の詳細、第3版の467 async void DisplayWebsiteLength ( object sender, EventArgs e ) { label.Text = "Fetching ..."; using ( HttpClient client = new HttpClient() ) { Task&lt;string&gt; task = client.GetStringAsync("http://csharpindepth.com"); string text = await task; label.Text = text.Length.ToString(); } } asyncキーワードの手段が、「この機能は、それが呼ばれるたびに、そのコールが呼ばれるようにした後、その完了がすべてのために必要とされるコンテキストで呼び出されることはありません。」 つまり、あるタスクの途中でそれを書く int x = 5; DisplayWebsiteLength(); double …


30
C#からExcelファイルを読み取る
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 C#プログラムから直接Excelファイル(.xls)を読み取るための無料またはオープンソースのライブラリはありますか? ワークシートを選択してデータを文字列として読み取るだけで、それほど凝ったものにする必要はありません。これまでは、ExcelのUnicodeテキストへのエクスポート機能を使用して、結果の(タブ区切り)ファイルを解析してきましたが、手動の手順は省きたいと思います。
233 c#  .net  excel  ms-office 

2
ソートされた配列の処理がソートされていない配列よりも遅いのはなぜですか?
Tuple&lt;long,long,string&gt;単純な「間」の検索を実行する500000個のランダムに生成されたオブジェクトのリストがあります。 var data = new List&lt;Tuple&lt;long,long,string&gt;&gt;(500000); ... var cnt = data.Count(t =&gt; t.Item1 &lt;= x &amp;&amp; t.Item2 &gt;= x); ランダムな配列を生成し、ランダムに生成された100個のの値に対して検索を実行すると、検索xは約4秒で完了します。並べ替えが検索に与える大きな驚異を知っていたため、100回の検索を実行する前に、データを最初にItem1、次にItem2、最後にの順に並べ替えることにしましたItem3。分岐予測のため、ソートされたバージョンのパフォーマンスが少し速くなることを期待していました:のポイントに到達するとItem1 == x、のすべてのチェックでt.Item1 &lt;= x分岐が「ノーテイク」と正しく予測され、のテール部分が高速になると考えていました探す。驚いたことに、ソートされた配列の検索には2倍の時間がかかりました。 実験を実行する順序を切り替えてみて、乱数ジェネレーターに別のシードを使用しましたが、効果は同じです。並べ替えられていない配列での検索は、同じ配列での検索のほぼ2倍の速度で実行されましたが、ソートされました! 誰かがこの奇妙な効果をうまく説明していますか?私のテストのソースコードは次のとおりです。.NET 4.0を使用しています。 private const int TotalCount = 500000; private const int TotalQueries = 100; private static long NextLong(Random r) { var data = new byte[8]; …


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