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

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

7
ゾンビは.NETに存在しますか?
.NETでのロックについてチームメイトと話し合っていました。彼は非常に優秀で、低レベルのプログラミングと高レベルのプログラミングの両方に豊富なバックグラウンドを持っていますが、低レベルのプログラミングでの彼の経験は私のものをはるかに超えています。とにかく、彼は、「ゾンビスレッド」がシステムをクラッシュさせる確かに小さな可能性を回避するために、可能な限り高負荷になることが予想される重要なシステムでは.NETロックを回避すべきであると主張しました。私は日常的にロックを使用していて、「ゾンビスレッド」が何であるかを知らなかったので、私は尋ねました。彼の説明から私が得た印象は、ゾンビスレッドは終了したが、どういうわけかいくつかのリソースをまだ保持しているスレッドであるということです。ゾンビスレッドがシステムを破壊する方法について彼が示した例は、スレッドが何らかのオブジェクトをロックした後に何らかの手順を開始した場合でした。そして、ロックが解放される前に、ある時点で終了します。この状況は、システムをクラッシュさせる可能性があります。最終的には、そのメソッドを実行しようとすると、ロックされたオブジェクトを使用しているスレッドが停止しているため、スレッドがすべて返されないオブジェクトへのアクセスを待機するためです。 要点は理解できたと思いますが、ベースがずれている場合はお知らせください。そのコンセプトは私には理にかなっています。これが.NETで発生する可能性のある実際のシナリオであることを完全には確信していませんでした。これまで「ゾンビ」について聞いたことがありませんが、低レベルで深く作業したプログラマーは、コンピューティングの基礎(スレッド化など)をより深く理解する傾向があることを認識しています。しかし、私は確実にロックの価値を見ていますし、多くの世界クラスのプログラマーがロックを活用しているのを見てきました。また、私はこれを自分で評価する能力が限られています。これは、このlock(obj)ステートメントが本当に次の構文糖衣であることを知っているためです。 bool lockWasTaken = false; var temp = obj; try { Monitor.Enter(temp, ref lockWasTaken); { body } } finally { if (lockWasTaken) Monitor.Exit(temp); } そしてのでMonitor.EnterとMonitor.Exitマークされていますextern。.NETがこの種の影響を与える可能性のあるシステムコンポーネントへの暴露からスレッドを保護する何らかの処理を行うことは考えられるようですが、これは純粋に推測であり、おそらく「ゾンビスレッド」について聞いたことがないという事実に基づいているだけです。前。だから、私はこれについてここでいくつかのフィードバックを得ることができることを望んでいます: ここで説明したものよりも「ゾンビスレッド」の明確な定義はありますか? ゾンビスレッドは.NETで発生しますか?(なぜ/なぜそうではないのですか?) 該当する場合、.NETでゾンビスレッドの作成を強制するにはどうすればよいですか? 該当する場合、.NETでゾンビスレッドのシナリオを危険にさらすことなくロックを活用するにはどうすればよいですか? 更新 私は2年以上前にこの質問をしました。今日これが起こりました:

11
ASP.NET Web APIでエラーを返すためのベストプラクティス
エラーをクライアントに返す方法が心配です。 HttpResponseExceptionをスローしてすぐにエラーを返すかときにを public void Post(Customer customer) { if (string.IsNullOrEmpty(customer.Name)) { throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest) } if (customer.Accounts.Count == 0) { throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest) } } または、すべてのエラーを蓄積してからクライアントに送り返します。 public void Post(Customer customer) { List<string> errors = new List<string>(); if (string.IsNullOrEmpty(customer.Name)) { errors.Add("Customer …
384 c#  rest  asp.net-web-api 

10
ASP.NET Identity-HttpContextにはGetOwinContextの拡張メソッドがありません
ここからASP.NET Identityサンプルをダウンロードして正常に実行しました:https : //github.com/rustd/AspnetIdentitySample 私は自分のプロジェクトにASP.NET Identityフレームワークを実装している最中で、問題に遭遇しました。 GetOwinContext() 私の拡張メソッドとして存在しません HttpContext アイデンティティフレームワークをクラスライブラリに実装しています。Identity Frameworkのすべての最新(プレリリースバージョン)をインストールしましたが、これ以外のすべてが正常に機能しています。 コントローラに同じコードを同じダイレクトとして実装してみましたが、同じ問題が見つかりました。 どこかで参照が欠けているのは明らかですが、何なのかわかりません。 私を殺しているコードブロックは: private IAuthenticationManager AuthenticationManager { get { return HttpContext.GetOwinContext().Authentication; } } 私は以下への参照を追加しました-私のクラスライブラリとコントローラーの両方でこれらを試してみましたが、どれも私にとってはうまくいきません... using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; using Microsoft.Owin; using System.Web; ...これが私を壁に駆り立てています...何かアイデアはありますか? 更新 サンプルでIdentity&OWINのバージョンを確認し、ソリューションに同じバージョンがあることを確認しました。 さらに、サンプルでオブジェクトブラウザーを検索するとGetOwinContext、メソッドを見つけることができますが、ソリューションで検索すると、どこにも見つかりません...いくつかのライブラリが古くなっている必要がありますが、見つけて!

4
C#でリストの最初のN要素を取得する方法?
Linqを使用してプロジェクトのバススケジュールをクエリし、いつでも次の5つのバス到着時刻を取得できるようにしたいと考えています。クエリを最初の5つの結果に制限するにはどうすればよいですか? より一般的には、C#でリストの一部を取得するにはどうすればよいですか?(Pythonではmylist[:5]、最初の5つの要素を取得するために使用します。)
384 c# 

5
なぜJsonRequestBehaviorが必要なのですか?
なぜJson Request Behavior必要なのですか? HttpGetリクエストを自分のアクションに制限したい場合は、[HttpPost]属性でアクションを装飾できます 例: [HttpPost] public JsonResult Foo() { return Json("Secrets"); } // Instead of: public JsonResult Foo() { return Json("Secrets", JsonRequestBehavior.AllowGet); } なぜ[HttpPost]十分ではないのですか? なぜフレームワークは、私たちが持ってJsonRequestBehavior.AllowGetいるすべてのforで「バグ」を引き起こしJsonResultます。getリクエストを拒否する場合は、HttpPost属性を追加します。


17
in vs ref vs outを使用する場合
先日、誰かがのout代わりにパラメータキーワードを使用する必要があると尋ねられましたref。私は(と思う)の違いを理解している間refおよびout(されたキーワードの前に尋ねた)と最良の説明があることのようですref== inとout、私はいつも使用する必要がありますいくつかの(仮想またはコード)の例何outとしませんref。 以来ref、より一般的で、なぜあなたは今までに使用しますかout?それは単に構文上の砂糖ですか?
383 c# 

30
Directory.Delete(path、true)ではディレクトリを削除できません
私は.NET 3.5を使用しており、次を使用してディレクトリを再帰的に削除しようとしています。 Directory.Delete(myPath, true); 私の理解では、ファイルが使用中の場合やアクセス権の問題がある場合にスローされますが、それ以外の場合は、ディレクトリとそのすべてのコンテンツが削除されます。 しかし、私は時々これを手に入れます: System.IO.IOException: The directory is not empty. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive) at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive) ... メソッドが時々スローすることには驚きませんが、再帰がtrueのときにこの特定のメッセージが表示されるのには驚きます。(知っているはディレクトリが空ではないています。) AccessViolationExceptionの代わりにこれが表示される理由はありますか?
383 c#  .net  exception  io 

20
パスがファイルかディレクトリかを確認するより良い方法は?
TreeViewディレクトリとファイルを処理しています。ユーザーは、ファイルまたはディレクトリのいずれかを選択して、それに対して何かを行うことができます。これには、ユーザーの選択に基づいてさまざまなアクションを実行するメソッドが必要です。 現時点では、パスがファイルかディレクトリかを判断するために次のようなことをしています。 bool bIsFile = false; bool bIsDirectory = false; try { string[] subfolders = Directory.GetDirectories(strFilePath); bIsDirectory = true; bIsFile = false; } catch(System.IO.IOException) { bIsFolder = false; bIsFile = true; } これを行うにはもっと良い方法があると感じざるを得ません!これを処理する標準の.NETメソッドを見つけたいと思っていましたが、それができませんでした。そのような方法は存在しますか?存在しない場合、パスがファイルかディレクトリかを判断する最も簡単な方法は何ですか?
382 c#  .net  file  path  directory 


7
MVC4のStyles.Render
では.NET MVC4どうするかプロジェクト@Styles.Render作品を? @Styles.Render("~/Content/css")つまり、どのファイルで呼び出されていますか? フォルダ内に「css」というファイルまたはフォルダがありませんContent。

13
C#でのFinalize / Disposeメソッドの使用
C#2008 私はしばらくこれに取り組んできましたが、コード内のfinalizeメソッドとdisposeメソッドの使用についてはまだ混乱しています。私の質問は以下の通りです: アンマネージリソースを破棄するときは、ファイナライザーのみが必要であることを知っています。ただし、アンマネージリソースを呼び出すマネージリソースがある場合でも、ファイナライザを実装する必要がありますか? ただし、アンマネージリソースを使用しないクラスを開発する場合-直接的または間接的に、IDisposableそのクラスのクライアントが「usingステートメント」を使用できるように実装する必要がありますか? クラスのクライアントがusingステートメントを使用できるようにするためだけにIDisposableを実装することは可能でしょうか? using(myClass objClass = new myClass()) { // Do stuff here } 以下のシンプルなコードを開発して、ファイナライズ/破棄の使用方法を示します。 public class NoGateway : IDisposable { private WebClient wc = null; public NoGateway() { wc = new WebClient(); wc.DownloadStringCompleted += wc_DownloadStringCompleted; } // Start the Async call to find if NoGateway is true …

19
App.configから接続文字列を取得する
var connection = ConnectionFactory.GetConnection( ConfigurationManager.ConnectionStrings["Test"] .ConnectionString, DataBaseProvider); そして、これは私のApp.configです。 <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration> しかし、私のプロジェクトを実行すると、これは私のエラーです: オブジェクト参照がオブジェクトインスタンスに設定されていません。


25
datetime2データ型をdatetimeデータ型に変換すると、範囲外の値になります
5つの列を持つデータテーブルがあり、行にデータが入力され、トランザクションを介してデータベースに保存されます。 保存中にエラーが返されます: datetime2データ型からdatetimeデータ型への変換の結果、範囲外の値が発生しました これは、読んだとおり、私のデータテーブルにはのタイプがDateTime2あり、私のデータベースにはがあることを意味しますDateTime。それは間違いです。 日付列は次のDateTimeように設定されています。 new DataColumn("myDate", Type.GetType("System.DateTime")) 質問 これはコードで解決できますか、それともデータベースレベルで何かを変更する必要がありますか?

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