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

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


18
XmlSerializer-タイプを反映するエラーがありました
C#.NET 2.0を使用して、[Serializable]属性を持つ複合データクラスがあります。私はXMLSerializerクラスを作成し、それをコンストラクタに渡します: XmlSerializer serializer = new XmlSerializer(typeof(DataClass)); 私は例外を言っています: エラー反映タイプがありました。 データクラス内には、別の複合オブジェクトがあります。これには[Serializable]属性も必要ですか、または最上位のオブジェクトにそれを置くことにより、内部のすべてのオブジェクトに再帰的に適用されますか?
332 c#  .net  xml  serialization  .net-2.0 

30
ブレークポイントは現在ヒットしません。Silverlightアプリケーションでこのドキュメントのシンボルが読み込まれていません
OK、私が持っているもの: Visual Studio 2010 RC、W7 x64は、Silverlightアプリケーションの新しいプロジェクトタイプを開始しました。ASP.NET WebアプリケーションプロジェクトでSilverlightアプリケーションをホストします。Silverlightバージョン3.0。LinqToSQLクラス、WCFサービス、Winform Testerアプリケーション(ソリューションのプロジェクト)、およびいくつかのクラス(ソリューションのプロジェクトとして)を追加しました。 昨日、突然、「ブレークポイントは現在ヒットしません。このドキュメントにはシンボルが読み込まれていません。IDEに表示されるメッセージですが、これはWebアプリケーションにのみ影響します。SilverlightとWinformアプリをデバッグできます。 メッセージを取り除くために私が試した/やったこと: Visual Studio設定をリセットする すべての\ Temporary ASP.NET Filesフォルダ内のすべてのファイルを削除しました(32ビット/ 64ビットごと、およびFramework 2.0および4.0ごとに1つあります) Visual Studio統合Webサーバーを使用してデバッグを試みました-通常はIISを使用していますが、ソリューションのプロジェクト出力では、すべてのプロジェクトフォルダー内のすべてのobjフォルダーとbinフォルダーを削除しました 新しいソリューションを作成し、すべてのプロジェクトをこの新しいソリューションに追加しました ソリューションsuoファイルを削除しました VSインストールの問題かどうかをテストする新しいASP.NET Webアプリケーションを作成しました=>この新しいプロジェクト/ソリューションをデバッグできます マシンを数回再起動しました vs.netインストールを修復しました IISResetを行いました IISからWebアプリを削除 IISで新しいWebアプリを作成するために、Webアプリのプロジェクトプロパティの下にある[仮想ディレクトリの作成]ボタンを使用しました すべてのプロジェクトのフレームワークバージョンを3.5から4.0に変更 2台目のマシンでソリューションを開いた=>同じ動作 バグ/同様の問題のためにMicrosoft Connectをクロールした 7時間を費やします。 つまり、これは私の人生で2回目です。前回はTemporary ASP.NET Files Folderを削除して解決しましたが、今回はあなたの助けが必要です。
331 c#  asp.net  wcf  debugging  iis 

30
これよりも「タイプをオンにする」より良い代替策はありますか?
switchタイプにはC#を使用できないと見なして(is関係が複数の異なるものcaseが適用される可能性があるため、特別なケースとして追加されていません)、これ以外のタイプの切り替えをシミュレートするより良い方法はありますか? void Foo(object o) { if (o is A) { ((A)o).Hop(); } else if (o is B) { ((B)o).Skip(); } else { throw new ArgumentException("Unexpected type: " + o.GetType()); } }

12
C#のイベントとイベントハンドラーについて
イベントの目的、特にユーザーインターフェースを作成する状況について理解しています。これはイベントを作成するためのプロトタイプだと思います: public void EventName(object sender, EventArgs e); イベントハンドラーは何をしますか、なぜそれらが必要なのですか、それをどのように作成しますか?

10
「as」およびnull許容型によるパフォーマンスの驚き
null許容型を扱うC#in Depthの第4章を改訂し、 "as"演算子の使用に関するセクションを追加して、次のように記述できるようにします。 object o = ...; int? x = o as int?; if (x.HasValue) { ... // Use x.Value in here } 私はこれが本当に素晴らしいと思い、 "is"に続けてキャストを使用することで、C#1と同等のパフォーマンスを向上させることができると思いました。 。 ただし、そうではないようです。以下にサンプルテストアプリを含めました。これは基本的にオブジェクト配列内のすべての整数を合計しますが、配列には多くのnull参照と文字列参照、およびボックス化された整数が含まれています。ベンチマークは、C#1で使用する必要があるコード、「as」演算子を使用するコード、およびLINQソリューションのキックを測定します。驚いたことに、この場合、C#1コードは20倍高速です。また、LINQコード(イテレータが関与していることを考えると、遅くなることが予想されていました)でも「as」コードよりも優れています。 isinstnull許容型の.NET実装は本当に遅いのですか?unbox.any問題の原因は追加ですか?これには別の説明がありますか?現時点では、パフォーマンスに敏感な状況でこれを使用することに対する警告を含める必要があるように思われます... 結果: キャスト:10000000:121 As:10000000:2211 LINQ:10000000:2143 コード: using System; using System.Diagnostics; using System.Linq; class Test { const int Size = 30000000; static void Main() …

6
空のIEnumerableを返すにはどうすればよいですか?
次のコードとこの質問の提案を踏まえて、この元のメソッドを変更し、IEnumarableに値があるかどうかを確認し、値がないIEnumerableを返さない場合はそれを返すことにしました。 メソッドは次のとおりです。 public IEnumerable<Friend> FindFriends() { //Many thanks to Rex-M for his help with this one. //https://stackoverflow.com/users/67/rex-m return doc.Descendants("user").Select(user => new Friend { ID = user.Element("id").Value, Name = user.Element("name").Value, URL = user.Element("url").Value, Photo = user.Element("photo").Value }); } すべてがreturnステートメントの中にあるので、どうすればよいのかわかりません。このようなものでしょうか? public IEnumerable<Friend> FindFriends() { //Many thanks to Rex-M for his help with …
329 c#  ienumerable 


6
Task.Resultは.GetAwaiter.GetResult()と同じですか?
最近、多くの非同期メソッドを使用するコードを読んでいましたが、それらを同期的に実行する必要がある場合があります。コードは: Foo foo = GetFooAsync(...).GetAwaiter().GetResult(); これは同じですか Foo foo = GetFooAsync(...).Result;
328 c#  async-await 


7
いつLazy <T>を使用すればよいですか?
私はこの記事を見つけましたLazy:C#4.0での怠惰– Lazy レイジーオブジェクトを使用して最高のパフォーマンスを実現するためのベストプラクティスは何ですか?誰かが実際のアプリケーションでの実用的な使用を私に指摘できますか?つまり、いつ使用すればよいですか。
327 c#  .net  lazy-evaluation 

17
ASP.NET MVCでコントローラーメソッドをオーバーロードできますか?
ASP.NET MVCでコントローラーメソッドをオーバーロードできるかどうか知りたいです。試行するたびに、以下のエラーが発生します。2つのメソッドは異なる引数を受け入れます。これはできませんか? コントローラタイプ 'MyController'に対するアクション 'MyMethod'の現在のリクエストは、次のアクションメソッド間であいまいです

4
Moqにタスクを返すように指示するにはどうすればよいですか?
宣言するインターフェースを持っています Task DoSomethingAsync(); 私のテストではMoqFrameworkを使用しています: [TestMethod()] public async Task MyAsyncTest() { Mock&lt;ISomeInterface&gt; mock = new Mock&lt;ISomeInterface&gt;(); mock.Setup(arg =&gt; arg.DoSomethingAsync()).Callback(() =&gt; { &lt;my code here&gt; }); ... } 次に、テストでを呼び出すコードを実行しますawait DoSomethingAsync()。そして、テストはその行で失敗します。何が悪いのですか?

8
HttpResponseMessageではなくIHttpActionResultを使用する必要があるのはなぜですか?
私はWebApiを使用して開発しており、WebApi2に移動しました。Microsoftは、を返すのではIHttpActionResultなく、使用することをお勧めする新しいインターフェイスを導入しましたHttpResponseMessage。この新しいインターフェイスの利点に戸惑っています。それは主にを作成するための少し簡単な方法を提供するだけのようHttpResponseMessageです。 これは「抽象化のための抽象化」であると私は主張します。何か不足していますか?コード行を保存する以外に、この新しいインターフェイスを使用することで得られる実際の利点は何ですか? 古い方法(WebApi): public HttpResponseMessage Delete(int id) { var status = _Repository.DeleteCustomer(id); if (status) { return new HttpResponseMessage(HttpStatusCode.OK); } else { throw new HttpResponseException(HttpStatusCode.NotFound); } } 新しい方法(WebApi2): public IHttpActionResult Delete(int id) { var status = _Repository.DeleteCustomer(id); if (status) { //return new HttpResponseMessage(HttpStatusCode.OK); return Ok(); } else { //throw new HttpResponseException(HttpStatusCode.NotFound); …

12
演算子==はC#のジェネリック型に適用できませんか?
MSDNの==オペレーターのドキュメントによると、 定義済みの値タイプの場合、等価演算子(==)は、そのオペランドの値が等しい場合はtrueを返し、それ以外の場合はfalseを返します。文字列以外の参照型の場合、2つのオペランドが同じオブジェクトを参照している場合、==はtrueを返します。文字列型の場合、==は文字列の値を比較します。ユーザー定義の値タイプは、==演算子をオーバーロードできます(演算子を参照)。したがって、ユーザー定義の参照型も使用できますが 、既定では==は、定義済みの参照型とユーザー定義の参照型の両方について上記のように動作します。 では、なぜこのコードスニペットはコンパイルに失敗するのでしょうか。 bool Compare&lt;T&gt;(T x, T y) { return x == y; } 演算子 '=='をタイプ 'T'および 'T'のオペランドに適用できないというエラーが表示されます。私が理解している限り、==演算子はすべてのタイプに対して事前定義されているので、なぜだろうか。 編集:ありがとう、みんな。最初はステートメントが参照型のみに関するものであることに気付きませんでした。また、ビットごとの比較はすべての値の型に対して提供されると思っていましたが、これは正しくないことがわかりました。 しかし、参照型を使用している場合、==演算子は定義済みの参照比較を使用するのでしょうか、それとも型が定義されている場合は、演算子のオーバーロードバージョンを使用するのでしょうか。 編集2:試行錯誤の==結果、無制限のジェネリック型を使用する場合、オペレーターは事前定義された参照比較を使用することがわかりました。実際、コンパイラーは、制限された型の引数に対して見つけることができる最良の方法を使用しますが、それ以上は調べません。たとえば、以下のコードはtrue、Test.test&lt;B&gt;(new B(), new B())が呼び出された場合でも、常にを印刷します。 class A { public static bool operator==(A x, A y) { return true; } } class B : A { public static bool operator==(B x, …

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