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

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

30
プライベートメソッドを公開して単体テストを行うと…いい考えですか?
司会者注: ここにはすでに39の回答が投稿されています(一部は削除されています)。回答 を投稿する前に、ディスカッションに意味のあるものを追加できるかどうかを検討してください。あなたはたぶん他の誰かがすでに言ったことを繰り返すだけです。 ユニットテストを記述するためだけに、クラスのプライベートメソッドをパブリックにする必要がある場合があります。 通常これは、メソッドにクラス内の他のメソッド間で共有されるロジックが含まれていて、独自にロジックをテストするほうが簡単なためです。または、スレッドの問題を心配せずに同期スレッドで使用されるロジックをテストしたいという別の理由も考えられます。 。 私は本当にそれが好きではないので、他の人が自分でこれをやっているのを見つけますか?個人的には、ボーナスは、クラスの外では実際にサービスを提供しないメソッドを公開することの問題を上回ると思います... 更新 皆様のご回答ありがとうございます、人々の興味をそそられたようです。これはクラスが使用される唯一の方法であり、私はこれに同意するため、一般的なコンセンサスはパブリックAPIを介してテストを行うべきであると考えています。私が上記でこれを実行する2つのケースはまれなケースであり、それを実行することのメリットはそれだけの価値があると思いました。 しかし、誰もがそれが実際に起こるべきではないという指摘を見ることができます。そして、それについてもう少し考えると、テストに対応するためにコードを変更することは悪い考えだと思います。結局、テストはある意味でサポートツールであり、システムを「サポートツールをサポートする」ように変更するのは露骨です。悪い習慣。
301 c#  java  unit-testing 

6
NullableタイプでConvert.ChangeType()が失敗する
文字列をオブジェクトのプロパティ値に変換したいのですが、その名前は文字列として持っています。私はこれをそうしようとしています: string modelProperty = "Some Property Name"; string value = "SomeValue"; var property = entity.GetType().GetProperty(modelProperty); if (property != null) { property.SetValue(entity, Convert.ChangeType(value, property.PropertyType), null); } 問題は、これが失敗し、プロパティの型がnull許容型の場合に無効なキャスト例外をスローすることです。これは、変換できない値の場合ではありません-これを手動で実行すると機能します(例DateTime? d = Convert.ToDateTime(value);)同様の質問がいくつかありますが、機能しません。
301 c#  .net  reflection 

26
ローカルIPアドレスを取得する
インターネットには、IPアドレスを取得する方法を示す場所がいくつかあります。そしてそれらの多くはこの例のように見えます: String strHostName = string.Empty; // Getting Ip address of local machine... // First get the host name of local machine. strHostName = Dns.GetHostName(); Console.WriteLine("Local Machine's Host Name: " + strHostName); // Then using host name, get the IP address list.. IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); IPAddress[] addr = ipEntry.AddressList; for …
301 c#  networking 

11
UTC / GMT時間を現地時間に変換する
Webサービスクライアント用のC#アプリケーションを開発しています。これはWindows XP PCで動作します。 Webサービスによって返されるフィールドの1つは、DateTimeフィールドです。サーバーはGMT形式でフィールドを返します。つまり、末尾に「Z」が付いています。 ただし、.NETはなんらかの暗黙の変換を行うようであり、時間は常に12時間でした。 次のコードサンプルは、12時間の差がなくなったという点でこれをある程度解決していますが、ニュージーランドの夏時間を考慮していません。 CultureInfo ci = new CultureInfo("en-NZ"); string date = "Web service date".ToString("R", ci); DateTime convertedDate = DateTime.Parse(date); あたりとしてこの日付サイト: UTC / GMTオフセット 標準時間帯:UTC / GMT +12時間 夏時間:+1時間 現在の時間帯オフセット:UTC / GMT +13時間 延長時間をどのように調整しますか?これはプログラムで実行できますか、それともPCの設定のようなものですか?
301 c#  .net  datetime  utc 

21
文字列をnull許容のintに解析する方法
文字列をC#でnull許容のintに解析したいのですが。すなわち。文字列のint値、または解析できない場合はnullを取得したい。 これがうまくいくことを期待していた int? val = stringVal as int?; しかし、それは機能しないので、今私がやっていることは、この拡張メソッドを書いたことです public static int? ParseNullableInt(this string value) { if (value == null || value.Trim() == string.Empty) { return null; } else { try { return int.Parse(value); } catch { return null; } } } これを行うより良い方法はありますか? 編集: TryParseの提案をありがとう、私はそれについて知っていましたが、同じようにうまくいきました。null可能なintに直接解析する組み込みのフレームワークメソッドがあるかどうかを知ることに、もっと興味がありますか?
300 c#  .net  string  .net-3.5  nullable 

9
Dependency Injectionコンストラクターの狂気を避ける方法は?
私のコンストラクターは次のようになり始めています: public MyClass(Container con, SomeClass1 obj1, SomeClass2, obj2.... ) パラメータリストは増え続けています。「コンテナ」は依存関係注入コンテナなので、なぜこれを実行できないのですか。 public MyClass(Container con) すべてのクラスで?欠点は何ですか?これを行うと、私は栄光のスタティックを使用しているように感じます。IoCと依存性注入の狂気についてのあなたの考えを共有してください。


11
|の違いは何ですか そして|| または演算子?
私は常に||C#とPHPの両方で、OR式で(2つのパイプ)を使用しました。たまに1本のパイプが使用されているのを見かけます|。これら2つの使用法の違いは何ですか?どちらか一方を使用する際に注意点はありますか、それとも互換性がありますか?
300 c#  php  operators 

23
文字列をタイトルケースに変換する
大文字と小文字が混在した単語を含む文字列があります。 例えば: string myData = "a Simple string"; 各単語の最初の文字(スペースで区切られている)を大文字に変換する必要があります。だから私は結果が欲しい:string myData ="A Simple String"; これを行う簡単な方法はありますか?文字列を分割して変換したくない(それが私の最後の手段になります)。また、文字列が英語であることが保証されています。
300 c#  string 

4
HttpClient BaseAddressが機能しないのはなぜですか?
がBaseAddress部分的なURIパスを定義する次のコードを考えます。 using (var handler = new HttpClientHandler()) using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri("http://something.com/api"); var response = await client.GetAsync("/resource/7"); } これはへのGETリクエストを実行することを期待していますhttp://something.com/api/resource/7。しかし、そうではありません。 いくつか検索した後、私はこの質問と回答を見つけました:HttpClient with BaseAddress。の/最後に置くことをお勧めしBaseAddressます。 using (var handler = new HttpClientHandler()) using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri("http://something.com/api/"); var response = await client.GetAsync("/resource/7"); …

2
Entity Framework 4.1 Code Firstのクラスプロパティを無視する
私の理解では、この[NotMapped]属性は現在CTPにあるEF 5まで利用できないため、本番環境では使用できません。 EF 4.1のプロパティを無視するようにマークするにはどうすればよいですか? 更新:私は何か他の奇妙なことに気づきました。私は[NotMapped]属性を機能させましたが、何らかの理由で、EF 4.1はでpublic bool Disposed { get; private set; }マークされていても、データベースにDisposedという名前の列を作成します[NotMapped]。クラスIDisposeableはもちろん実装しますが、それがどのように重要であるかはわかりません。何かご意見は?


9
C#の変数名での@文字の使用/意味は何ですか?
C#では変数名を「@」文字で始めることができることを発見しました。私のC#プロジェクトでは、Javaで記述されたWebサービス(プロジェクトへのWeb参照を追加)を使用していました。WSDLで定義されているインターフェースオブジェクトの1つに、「params」という名前のメンバー変数がありました。明らかにこれはC#の予約語であるため、 "params"という名前のメンバー変数を持つクラスを作成することはできません。生成されたプロキシオブジェクトには、次のようなプロパティが含まれています。 public ArrayList @params { get { return this.paramsField; } set { this.paramsField = value; } } VS 2008のc#ドキュメントを検索しましたが、何も見つかりませんでした。また、Googleを検索しても、有用な答えは得られませんでした。それでは、変数/プロパティ名の「@」文字の正確な意味または使用法は何ですか?

1
Kinectのv2.0モーションをBVHファイルに保存
Kinect 2のモーションキャプチャデータをBVHファイルとして保存したいと思います。ここで見つけることができるKinect 1のためにそうするコードを見つけました。コードを調べたところ、理解できないことがいくつか見つかりました。たとえば、前述のコードskelでは、コード内のいくつかの場所にあるSkeleton オブジェクトが実際に何であるかを理解しようとしました。そうでない場合、目的を達成するために利用できる既知のアプリケーションはありますか? 編集:私はスケルトンのスケルをボディのスケルに変更しようとしましたが、これはkinect SDK 2.0の対応するオブジェクトだと思います。しかし、体の位置を取得しようとするとエラーが発生します。 tempMotionVektor[0] = -Math.Round( skel.Position.X * 100,2); tempMotionVektor[1] = Math.Round( skel.Position.Y * 100,2) + 120; tempMotionVektor[2] = 300 - Math.Round( skel.Position.Z * 100,2); Body skelの関数Positionを呼び出すときにエラーが発生しました。SDK 2.0でスケルトンのX、Y、Zを取得するにはどうすればよいですか?上記の3行を次のように変更しようとしました。 tempMotionVektor[0] = -Math.Round(skel.Joints[0].Position.X * 100, 2); tempMotionVektor[1] = Math.Round(skel.Joints[0].Position.Y * 100, 2) + 120; tempMotionVektor[2] = 300 - …


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