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

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

10
C#でyield returnイテレータを使用する目的/利点は何ですか?
yield return x;C#メソッド内での使用について私が見たすべての例は、リスト全体を返すだけで同じ方法で実行できます。そのような場合、yield return構文を使用することとリストを返すことの利点または利点はありますか? また、yield return完全なリストを返すことができなかったシナリオの種類は何ですか?

11
EntityFrameworkは実行時に接続を変更します
モデルとDALアセンブリを参照するWebAPIプロジェクトがあります。ユーザーにはログイン画面が表示され、そこでさまざまなデータベースを選択できます。 次のように接続文字列を作成します。 public void Connect(Database database) { //Build an SQL connection string SqlConnectionStringBuilder sqlString = new SqlConnectionStringBuilder() { DataSource = database.Server, InitialCatalog = database.Catalog, UserID = database.Username, Password = database.Password, }; //Build an entity framework connection string EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder() { Provider = database.Provider, Metadata = Settings.Default.Metadata, ProviderConnectionString …

17
文字列コレクションを検索する最速の方法
問題: 約120,000ユーザー(文字列)のテキストファイルがあり、コレクションに保存して、後でそのコレクションを検索します。 検索方法は、ユーザーがaのテキストを変更するたびに発生TextBoxし、結果はのテキストを含む文字列になりますTextBox。 リストを変更する必要はありませんListBox。結果をプルして、に配置するだけです。 私がこれまでに試したこと: 2つの異なるコレクション/コンテナを試してみました。これらは外部テキストファイルから文字列エントリをダンプしています(もちろん1回)。 List<string> allUsers; HashSet<string> allUsers; 次のLINQクエリを使用します。 allUsers.Where(item => item.Contains(textBox_search.Text)).ToList(); 私の検索イベント(ユーザーが検索テキストを変更すると発生します): private void textBox_search_TextChanged(object sender, EventArgs e) { if (textBox_search.Text.Length > 2) { listBox_choices.DataSource = allUsers.Where(item => item.Contains(textBox_search.Text)).ToList(); } else { listBox_choices.DataSource = null; } } 結果: どちらも応答時間が遅くなりました(各キーを押す間隔は約1〜3秒)。 質問: 私のボトルネックはどこにあると思いますか?私が使ったコレクションは?検索方法は?どちらも? どうすればより良いパフォーマンスとより流暢な機能を得ることができますか?

2
C#でsystem.net.webrequestを使用してjson応答を取得するにはどうすればよいですか?
外部ドメインからjsonデータを取得する必要があります。webrequestを使用して、Webサイトから応答を取得しました。コードは次のとおりです。 var request = WebRequest.Create(url); string text; var response = (HttpWebResponse) request.GetResponse(); using (var sr = new StreamReader(response.GetResponseStream())) { text = sr.ReadToEnd(); } jsonデータを取得できない理由を誰かが知っていますか?
80 c#  .net  json  webrequest 

3
MVC 4または5を使用したMEF-プラガブルアーキテクチャ(2014)
OrchardCMSのようなプラグ可能なアーキテクチャでMVC4 / MVC5アプリケーションを構築しようとしています。だから私はスタートアッププロジェクトであり、認証、ナビゲーションなどを処理するMVCアプリケーションを持っています。次に、asp.netクラスライブラリまたは削除されたmvcプロジェクトとして別々に構築され、コントローラー、ビュー、データリポジトリなどを持つ複数のモジュールがあります。 私は一日中ウェブ上のチュートリアルを見てサンプルなどをダウンロードしてきましたが、ケニーが最良の例を持っていることがわかりました-http://kennytordeur.blogspot.in/2012/08/mef-in-aspnet-mvc-4-and -webapi.html これらのDLLへの参照を追加すると、モジュール(個別のDLL)からコントローラーをインポートできます。しかし、MEFを使用する理由は、実行時にモジュールを追加できることです。DLLとビューをスタートアッププロジェクトの〜/ Modules //ディレクトリにコピーしたいのですが(これはなんとかできました)、MEFはそれらを取得するだけです。MEFにこれらのライブラリをロードさせるのに苦労しています。 この回答で説明されているように、MefContribもありますASP.NET MVC 4.0コントローラーとMEF、これら2つを組み合わせる方法は?これが私が次にしようとしていることです。しかし、MEFがMVCでそのままでは機能しないことに驚いています。 誰かが(MefContribの有無にかかわらず)同様のアーキテクチャを機能させましたか?当初、Orchard CMSを削除してフレームワークとして使用することも考えていましたが、複雑すぎます。また、WebAPI2を利用するためにMVC5でアプリを開発するとよいでしょう。
80 c#  asp.net  .net  asp.net-mvc  mef 



10
asp.netでキャッシュをロックするための最良の方法は何ですか?
長時間実行されるプロセスなどの特定の状況では、ASP.NETキャッシュをロックして、そのリソースに対する別のユーザーによる後続の要求が、キャッシュにアクセスする代わりに長いプロセスを再度実行しないようにすることが重要であることを知っています。 ASP.NETでキャッシュロックを実装するためのC#の最良の方法は何ですか?
80 c#  .net  asp.net  caching 



4
なぜこのコードは「可能なnull参照の戻り値」コンパイラ警告を出すのですか
次のコードを検討してください。 using System; #nullable enable namespace Demo { public sealed class TestClass { public string Test() { bool isNull = _test == null; if (isNull) return ""; else return _test; // !!! } readonly string _test = ""; } } これをビルドすると、でマークされた行で!!!コンパイラ警告が表示されますwarning CS8603: Possible null reference return.。 _test読み取り専用であり、null以外に初期化されているため、これは少し混乱します。 コードを次のように変更すると、警告が消えます。 public string …

2
このC#辞書の初期化はどのように正しいのですか?
私は以下に遭遇しましたが、なぜ構文エラーが発生しなかったのかと思います。 var dict = new Dictionary<string, object> { ["Id"] = Guid.NewGuid(), ["Tribes"] = new List<int> { 4, 5 }, ["MyA"] = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 } ["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } } }; 「MyA」と「OtherAs」の間に「、」がないことに注意してください。 ここで混乱が起こります: …

10
オブジェクト指向プログラミング-変数によってわずかに異なるプロセスでの重複を回避する方法
私の現在の仕事でかなり多く浮かび上がっているのは、一般化されたプロセスが発生する必要があるということですが、そのプロセスの奇妙な部分は特定の変数の値に応じてわずかに異なる方法で発生する必要があります。これを処理する最もエレガントな方法は何でしょうか。 私たちが通常使用している例を使用します。これは、処理する国に応じて少し異なる動作をします。 だから私はクラスを持っています、それを呼びましょうProcessor: public class Processor { public string Process(string country, string text) { text.Capitalise(); text.RemovePunctuation(); text.Replace("é", "e"); var split = text.Split(","); string.Join("|", split); } } ただし、特定の国ではこれらのアクションの一部のみを実行する必要があります。たとえば、6か国のみが資本化ステップを必要とします。国によって分割するキャラクターが異なる場合があります。'e'国によっては、アクセント付きの交換のみが必要な場合があります。 明らかに、次のようなことで解決できます。 public string Process(string country, string text) { if (country == "USA" || country == "GBR") { text.Capitalise(); } if (country == "DEU") …
64 c#  oop 


2
なぜ「システムを使用する」のか 悪い習慣とは考えていませんか?
私はC ++のバックグラウンドを持っており、この質問に対する回答を完全に理解して同意します。悪い習慣と考えていますか? だから、C#の経験があると、正反対のことがわかり using Some.Namespace;ます。文字通りどこでも使用されています。タイプの使用を開始するときはいつでも、そのネームスペースのusingディレクティブを最初に追加します(まだ存在しない場合)。.csで始まらなかった-file を見たことを思い出せませんusing System; using System.Collections.Generic; using X.Y.Z; etc...。実際、Visual Studioウィザードを使用して新しいファイルを追加すると、必要がない場合でも、いくつかのusingディレクティブが自動的に追加されます。したがって、C ++コミュニティでは基本的にリンチされますが、C#でもこれを行うことを推奨しています。少なくともこれは私にはそれが見える方法です。 現在、C#とC ++でディレクティブを使用することはまったく同じではないことを理解しています。また、using namespaceC ++でできる最も厄介なことの1つ、つまりヘッダーファイルに配置することの1つは、ヘッダーファイルとの概念がないため、C#で同等に厄介なものがないことを理解しています#include。 ただし、それらの違いにもかかわらず、C#とC ++でのディレクティブの使用は同じ目的に役立ちます。これはSomeType、ずっと長くするのではなく、常に入力するだけで済みますSome.Namespace.SomeType(C ++ ::ではの代わりに.)。これと同じ目的で、名前の衝突という危険も私には同じように見えます。 最良の場合、これによりコンパイルエラーが発生するため、修正する必要があるのは「のみ」です。最悪の場合でもコンパイルされ、コードは意図したものとは異なる動作をします。だから私の質問は:なぜ(どうやら)C#とC ++であまりにも悪いと考えられているディレクティブを使用しているのですか? 私が持っている答えのいくつかのアイデア(これらはどれも本当に私を満足させません): 名前空間は、C ++よりもC#の方がはるかに長く、ネストされる傾向があります(stdvs. System.Collection.Generic)。したがって、この方法でコードのノイズを除去することには、より多くの欲求と利益があります。しかし、これが真実であっても、この議論は標準の名前空間を調べたときにのみ適用されます。カスタムのものには、C#とC ++の両方で、任意の短い名前を付けることができます。 名前空間は、C ++よりもC#の方がはるかに「細かい」ように見えます。例として、C ++では標準ライブラリ全体std(およびのようないくつかの小さなネストされた名前空間chrono)が含まれますがSystem.IO、C#ではSystem.Threading、System.Textなどがあります。したがって、名前の衝突のリスクは小さくなります。しかし、これはただの直感です。私は実際にどのように多くの名前を使用すると、「インポート」カウントされませんでしたusing namespace stdとusing System。繰り返しになりますが、これが真実であっても、この議論は標準の名前空間を見たときにのみ適用されます。独自のものは、C#とC ++の両方で、必要に応じて細かく設計できます。 もっと議論はありますか?私は実際の難しい事実(もしあれば)に特に興味があり、意見にはあまり興味がありません。

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