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

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

15
一般的なリストをCSV文字列に変換する
整数値のリスト(リスト)があり、コンマ区切り値の文字列を生成したいと思います。これは、リスト内のすべての項目が1つのコンマ区切りリストに出力されたものです。 私の考え... 1.リストをメソッドに渡します。2. stringbuilderを使用してリストを反復し、カンマを追加します。3.最後の文字をテストし、カンマの場合は削除します。 あなたの考えは何ですか?これは最善の方法ですか? 整数(現在の計画)だけでなく、文字列、long、double、boolなどを将来処理したい場合、コードはどのように変更されますか?私はそれがどんなタイプのリストも受け入れるようにするでしょう。
139 c#  generics  .net-3.5 

6
System.ValueTupleとSystem.Tupleの違いは何ですか?
いくつかのC#7ライブラリを逆コンパイルし、ValueTupleジェネリックが使用されているのを見ました。代わりに何でValueTuples、なぜそうしないのTupleですか? https://docs.microsoft.com/en-gb/dotnet/api/system.tuple https://docs.microsoft.com/en-gb/dotnet/api/system.valuetuple
139 c#  .net  tuples  c#-7.0 



7
非同期メソッドが完了するのを待つ方法は?
USB HIDクラスデバイスにデータを転送するWinFormsアプリケーションを書いています。私のアプリケーションは、こちらにある優れたGeneric HIDライブラリv6.0を使用しています。簡単に言えば、デバイスにデータを書き込む必要がある場合、次のコードが呼び出されます。 private async void RequestToSendOutputReport(List<byte[]> byteArrays) { foreach (byte[] b in byteArrays) { while (condition) { // we'll typically execute this code many times until the condition is no longer met Task t = SendOutputReportViaInterruptTransfer(); await t; } // read some data from device; we need to wait …

6
C#のパラメーターを使用してストアドプロシージャを呼び出す
プログラムで削除、挿入、更新を行うことができ、データベースから作成されたストアドプロシージャを呼び出して挿入を試みます。 これは私がうまく機能するボタンインサートです。 private void btnAdd_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(dc.Con); SqlCommand cmd = new SqlCommand("Command String", con); da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES (@FirstName, @LastName)", con); da.InsertCommand.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text; da.InsertCommand.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text; con.Open(); da.InsertCommand.ExecuteNonQuery(); con.Close(); dt.Clear(); da.Fill(dt); } これは、sp_Add_contact連絡先を追加するための名前のプロシージャを呼び出すボタンの開始です。の2つのパラメータsp_Add_contact(@FirstName,@LastName)。グーグルで良い例を検索しましたが、興味深いものは何も見つかりませんでした。 private void button1_Click(object sender, …

16
特定の状況で必須の検証属性を無効にする
特定のコントローラーアクションで必須検証属性を無効にできるかどうか疑問に思っていました。編集フォームの1つで、ユーザーが以前に指定したフィールドに値を入力する必要がないので、これは不思議に思っています。ただし、その後、値を入力するときに、値のハッシュなどの特別なロジックを使用してモデルを更新するロジックを実装します。 この問題を回避する方法に関する提案はありますか? 編集: そして、はい、クライアントの検証はここで問題になります。値を入力しないとフォームを送信することができないからです。

4
ThreadStatic属性はどのように機能しますか?
[ThreadStatic]属性はどのように機能しますか?コンパイラーがILを放出してTLSに値を入れたり取得したりすると想定しましたが、逆アセンブリを見ると、そのレベルではそうではないようです。 フォローアップとして、それを非静的メンバーに配置するとどうなりますか?私たちは開発者にその間違いを犯させ、コンパイラは警告を提供しません。 更新 2番目の質問がここで回答:静的C#で変更されたThreadStatic
138 c#  static  threadstatic 

7
どのようにしてIDisposableがすべてのクラスに広がるのを防ぎますか?
これらの単純なクラスから始めます... 次のような単純なクラスのセットがあるとします。 class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool tied = false; } AにBusはがありDriver、にDriverは2つShoeのがあり、それぞれにShoeがありShoelaceます。すべて非常にばかげています。 IDisposableオブジェクトをShoelaceに追加する 後で、上のいくつかの操作をShoelaceマルチスレッド化できると判断したのでEventWaitHandle、スレッドが通信するためのを追加します。したがってShoelace、次のようになります。 class Shoelace { private AutoResetEvent waitHandle …


13
オブジェクトをバイトに変換します[]
プロトタイプTCP接続を作成していますが、送信するデータの均質化に問題があります。 現時点では文字列のみを送信していますが、将来的には任意のオブジェクトを送信できるようにしたいと考えています。 すべてがバイト配列にキャストできると思ったので、コードは現時点では非常に単純です。 void SendData(object headerObject, object bodyObject) { byte[] header = (byte[])headerObject; //strings at runtime, byte[] body = (byte[])bodyObject; //invalid cast exception // Unable to cast object of type 'System.String' to type 'System.Byte[]'. ... } もちろんこれは、 if( state.headerObject is System.String ){...} 問題は、そのようにすると、実行時にbyte []に​​キャストできないすべてのタイプのオブジェクトをチェックする必要があることです。 実行時にbyte []に​​キャストできないすべてのオブジェクトを知っているわけではないので、これは実際にはオプションではありません。 C#.NET 4.0でオブジェクトをバイト配列に変換するにはどうすればよいですか?
138 c#  .net  object  byte 

5
非同期ラムダを使用した並列foreach
コレクションを並行して処理したいのですが、実装に問題があるので、助けが必要です。 並列ループのラムダ内で、C#でasyncとマークされたメソッドを呼び出す場合に問題が発生します。例えば: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, async item => { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; 作成されたすべてのスレッドは事実上単なるバックグラウンドスレッドであり、Parallel.ForEach呼び出しは完了を待機しないため、問題はカウントが0で発生します。asyncキーワードを削除すると、メソッドは次のようになります。 var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, item => { // some pre stuff var responseTask = await GetData(item); …

9
基本認証を使用したHttpWebRequest
この動作用にIISをセットアップするときによく使用される「基本的な認証リクエスト」を模倣した認証リクエストを実行しようとしています。 URLは次のとおり です:https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST =2(警告:https!) このサーバーは、アプリケーションサーバーとしてUNIXおよびJavaの下で実行されています。 これは、このサーバーに接続するために使用するコードです。 CookieContainer myContainer = new CookieContainer(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://telematicoprova.agenziadogane.it/TelematicoServiziDiUtilitaWeb/ServiziDiUtilitaAutServlet?UC=22&SC=1&ST=2"); request.Credentials = new NetworkCredential(xxx,xxx); request.CookieContainer = myContainer; request.PreAuthenticate = true; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); (私はこれをこのサイトの別の投稿からコピーしました)。しかし、私はサーバーからこの回答を受け取ります: 基になる接続が閉じられました:送信で予期しないエラーが発生しました。 私はC#に関する私の知識が私に提供する必要があるすべての可能なタスクを試したと思いますが、何も...

15
単体テストを同じプロジェクトまたは別のプロジェクトに配置しますか?
単体テストを同じプロジェクトに便宜上入れますか、それとも別のアセンブリに入れますか? 私たちのようにそれらを別のアセンブリに配置すると、ソリューション内に多数の追加プロジェクトが作成されます。コーディング中の単体テストには最適ですが、これらの余分なアセンブリをすべて使用せずにアプリケーションをリリースするにはどうすればよいですか?
137 c#  unit-testing 

16
文字列をnull許容型(int、doubleなど)に変換します
一部のデータ変換を実行しようとしています。残念ながら、データの多くは文字列であり、intやdoubleなどでなければなりません。 だから私が持っているものは次のようなものです: double? amount = Convert.ToDouble(strAmount); このアプローチの問題は、strAmountが空の場合、空の場合はnullにしたいので、データベースに追加すると、列がnullになります。だから私はこれを書いてしまいました: double? amount = null; if(strAmount.Trim().Length>0) { amount = Convert.ToDouble(strAmount); } これで問題なく動作しますが、コードが1行ではなく5行になりました。これにより、特に変換する列が大量にある場合は、読み取りが少し難しくなります。 文字列クラスとジェネリックの拡張を使用して型を渡すと思いましたが、これはdouble、int、またはlongの可能性があるためです。だから私はこれを試しました: public static class GenericExtension { public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct { if (s.Trim().Length > 0) { return (Nullable<T>)s; } return null; } } しかし、エラーが発生します:タイプ「string」を「T」に変換できませんか? これを回避する方法はありますか?ジェネリックスを使用してメソッドを作成することにはあまり慣れていません。

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