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

C#は、Microsoftが.NETプラットフォームと並行して作成した、マルチパラダイムで管理されたガベージコレクションのオブジェクト指向プログラミング言語です。

2
where条件とcontinueガード句を使用したforeachループのフィルタリング
私はこれを使用するプログラマを見てきました: foreach (var item in items) { if (item.Field != null) continue; if (item.State != ItemStates.Deleted) continue; // code } 私が通常使用する代わりに: foreach (var item in items.Where(i => i.Field != null && i.State != ItemStates.Deleted)) { // code } 私は両方の組み合わせを見てきました。「継続」、特により複雑な条件での読みやすさが本当に好きです。パフォーマンスに違いはありますか?データベースクエリを使用すると、あると想定しています。通常のリストはどうですか?

3
非同期/待機デッドロックを診断するにはどうすればよいですか?
私はasync / awaitを多用する新しいコードベースで作業しています。私のチームのほとんどの人は、async / awaitにかなり慣れていません。私たちは一般的にMicrosoftによって指定されたベストプラクティスを保持する傾向がありますが、一般的には非同期呼び出しを通過するためにコンテキストが必要で、そうでないライブラリを使用していConfigureAwait(false)ます。 それらすべてを組み合わせて、毎週記事で説明されている非同期デッドロックに遭遇します。模擬テストされたデータソース(通常はを介してTask.FromResult)はデッドロックをトリガーするのに十分ではないため、ユニットテスト中には表示されません。そのため、実行時または統合テスト中に、一部のサービスコールは昼食に出て戻りません。それはサーバーを殺し、一般的に混乱をもたらします。 問題は、間違いがどこで発生したかを追跡すること(通常は完全に非同期ではないこと)には、通常、手作業のコード検査が含まれ、時間がかかり、自動化できないことです。 デッドロックの原因を診断するより良い方法は何ですか?
24 c#  debugging  async 

5
明示的なキャスト演算子の使用は合理的ですか、それとも悪いハックですか?
私には大きなオブジェクトがあります: class BigObject{ public int Id {get;set;} public string FieldA {get;set;} // ... public string FieldZ {get;set;} } そして、特殊なDTOのよ​​うなオブジェクト: class SmallObject{ public int Id {get;set;} public EnumType Type {get;set;} public string FieldC {get;set;} public string FieldN {get;set;} } 個人的には、BigObjectをSmallObjectに明示的にキャストするという概念を見つけます-それは一方向のデータ損失操作であることを知っている-非常に直感的で読みやすいです: var small = (SmallObject) bigOne; passSmallObjectToSomeone(small); 明示的な演算子を使用して実装されます: public static explicit operator …

5
'uint'および 'short'データ型が標準のint(32)よりも適切な場合はどれですか?
能力と価値観の違いを理解できますが、それが適切かどうかに関係なく、常に使用しているように見えInt32ます。uint多くの場合、負にならない値(データベースレコードのIDを表すなど)を記述するため、より適切な場合でも、署名なしバージョン()を使用することはありません。また、short/Int16値の必要な容量に関係なく、誰も使用していないようです。 客観的に、それが使用することをお勧めします場合があることuintやshort/Int16、彼らであり、そうであれば、?
24 c# 

6
javaがビルド言語として使用されないのはなぜですか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 Javaが汎用言語であり、プログラムの構築がJava言語を使用して記述できるものである場合、なぜこれがビルドファイルを記述する最良の方法ではないのか、代わりにAnt、Maven、Gradleなどのツールを使用しますか?それはもっと簡単なことではなく、また別のプログラミング言語を学ぶ必要性を排除しませんか?(ところで-この質問は、C#などの他の言語にも適用できます)
24 java  c#  builds  build-system 

5
アプリケーション設定を読み込む最良の方法
Javaアプリケーションの設定を保持する簡単な方法は、特定の値(この値は数字、文字列、日付など)に関連付けられた各設定の識別子を含む「.properties」拡張子を持つテキストファイルで表されます。 。C#は同様のアプローチを使用しますが、テキストファイルには「App.config」という名前を付ける必要があります。どちらの場合も、ソースコードでは、設定を読み取るために特定のクラスを初期化する必要があります。このクラスには、指定された設定識別子に関連付けられた値を(文字列として)返すメソッドがあります。 // Java example Properties config = new Properties(); config.load(...); String valueStr = config.getProperty("listening-port"); // ... // C# example NameValueCollection setting = ConfigurationManager.AppSettings; string valueStr = setting["listening-port"]; // ... どちらの場合も、構成ファイルから読み込まれた文字列を解析し、変換された値を関連する型付きオブジェクトに割り当てる必要があります(この段階で解析エラーが発生する可能性があります)。解析ステップの後、設定値が特定の有効領域に属していることを確認する必要があります。たとえば、キュ​​ーの最大サイズは正の値である必要があり、いくつかの値は関連している場合があります(例:min <max )、 等々。 アプリケーションが起動するとすぐに設定をロードする必要があると仮定します。つまり、アプリケーションによって実行される最初の操作は設定をロードすることです。設定の無効な値は、自動的にデフォルト値に置き換えられる必要があります:これが関連する設定のグループに発生した場合、それらの設定はすべてデフォルト値で設定されます。 これらの操作を実行する最も簡単な方法は、最初にすべての設定を解析し、次に読み込まれた値をチェックし、最後にデフォルト値を設定するメソッドを作成することです。ただし、このアプローチを使用する場合、メンテナンスは困難です。アプリケーションの開発中に設定の数が増えると、コードの更新がますます難しくなります。 この問題を解決するために、次のようにTemplate Methodパターンを使用することを考えていました。 public abstract class Setting { protected abstract bool TryParseValues(); protected abstract bool …

8
「モジュール性」を達成するために部分クラスを使用することは一般的ですか?
私は最近、別のチームが部分的なクラスとして135個のファイルに分割された約800個のメソッドを含む「ゴッドクラス」を作成するというコードベースの状況に遭遇しました。 私はこれについて他のチームに尋ねました。私の腸の反応は軌道からそれを消すことでしたが、彼らはそれが良い設計であり、一般的な慣行であり、新しい開発者は残りの知識がほとんどなくても機能をボルトで固定できるため、「モジュール性」と「実装の容易さ」を促進すると主張しますシステムの。 これは実際に一般的な慣行ですか、それとも何らかの方法で良いアイデアですか?私はこの獣を倒す(または少なくともそれがさらに成長するのを防ぐ)ためにすぐに対策を講じたいと思っていますが、私は自分が間違っていると信じています。
24 c#  .net 

9
複雑さを追加して重複コードを削除する
私はすべてが一般的な基本クラスから継承するいくつかのクラスを持っています。基本クラスには、typeのいくつかのオブジェクトのコレクションが含まれますT。 各子クラスは、オブジェクトのコレクションから補間値を計算できる必要がありますが、子クラスは異なるタイプを使用するため、計算はクラスごとにわずかに異なります。 これまで、コードをクラスからクラスにコピー/ペーストし、それぞれに小さな変更を加えました。しかし、今は重複したコードを削除し、基本クラスの1つの汎用補間メソッドに置き換えようとしています。しかし、それは非常に困難であることが証明されており、私が考えているすべての解決策は非常に複雑に思えます。 DRYの原則はこのような状況にはあまり当てはまらないと思い始めていますが、それは冒aspのように聞こえます。コードの重複を削除しようとすると、どれだけ複雑になりますか? 編集: 私が思いつく最良の解決策は次のようなものです: 基本クラス: protected T GetInterpolated(int frame) { var index = SortedFrames.BinarySearch(frame); if (index >= 0) return Data[index]; index = ~index; if (index == 0) return Data[index]; if (index >= Data.Count) return Data[Data.Count - 1]; return GetInterpolatedItem(frame, Data[index - 1], Data[index]); } protected abstract T GetInterpolatedItem(int …

9
C#開発者向けのC ++
私はC#をかなりよく知っているので(残念ながら独学で)、Windowsアプリケーション用にC ++プログラミングを行う必要があります。私は、C#を学習しているC ++開発者向けに多くの情報を見つけることができましたが、C#を既に知っているときには、C ++を学習することについて多くを見つけることができませんでした。誰かが基本の良い概要に出くわしましたか? MSDNには比較がありますが、それほど詳細ではありません。 私はいくつかのソースをつなぎ合わせることができますが、何かがそこにあると考えました-私はそれを見つけることができません。ご協力いただきありがとうございます。
24 c#  c++ 

2
表現力のあるメンバーを使用するのはいつが適切ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 C#6では、式の結果を返すメソッドとプロパティのコードを簡略化できる、式を使用したメンバーが導入されています。 public override string ToString() { return string.Format("{0} {1}", _field1, _field2); } になる: public override string ToString() => string.Format("{0} {1}", _field1, _field2); 現在、2つの完全に同等で有効な構文があるため、どちらを使用するかを決定するために、ある程度の経験則を使用する必要があります。新しい選択肢はいつ適切ですか?
24 c# 

4
async + await == sync?
非同期Web要求の作成について説明しているこの投稿を見つけました。 さて、単純さはさておき、現実の世界であなたがすることは非同期リクエストを作成して次の行でそれを待つことだけです、そもそも同期呼び出しをするのと同じではないでしょうか?

3
C#では、なぜtryブロック内で宣言された変数のスコープが制限されていますか?
エラー処理を追加したい: var firstVariable = 1; var secondVariable = firstVariable; 以下はコンパイルされません: try { var firstVariable = 1; } catch {} try { var secondVariable = firstVariable; } catch {} 他のコードブロックが行うように、try catchブロックが変数のスコープに影響を及ぼす必要があるのはなぜですか?一貫性を別にして、リファクタリングなしでコードをエラー処理でラップできるのは理にかなっていますか?

1
.Netの配列にはLengthがあるのに、他のコレクションタイプにはCountがあるのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 たとえば、C#では、配列にLengthプロパティがあります。ただし、リストなどの他のコレクションタイプにはCountプロパティがあります。これら2つが異なる理由はありますか?もしそうなら、私は知りたいです。

6
クラスが独自のパブリックメソッドを使用しても大丈夫ですか?
バックグラウンド 現在、デバイスが送信および受信するオブジェクトを持っている状況があります。このメッセージには、次のようないくつかの構成要素があります。 public void ReverseData() public void ScheduleTransmission() ScheduleTransmissionこの方法は、必要呼び出すためにReverseData、それが呼ばれるたびにメソッドを。ただし、アプリケーションでオブジェクトがインスタンス化されている場所からReverseData外部で呼び出す必要がある場合があります(名前空間の外側に完全に追加する必要があります)。 「受信」に関してはReverseData、object_receivedイベントハンドラーで外部から呼び出されて、データを元に戻します。 質問 オブジェクトが独自のパブリックメソッドを呼び出すことは一般に許容されますか?

6
TDDでは、最初にTestまたはInterfaceを記述する必要がありますか?
私はテストが開発を促進する必要があることを知っている限り、c#を使用してTDDを学んでいます。つまり、最初にテストに合格するために最低限のコードを書いてからリファクタリングを行ってから失敗するテストを書きます。 しかし、「実装ではなく、インターフェイスするプログラム」とも言われているため、最初にインターフェイスを記述します。ここから混乱が始まります。最初にInterfaceを書いている場合、2つのことに違反しています。 インターフェイス用に記述されたコードはtestによって駆動されません。 単純なクラスでそれを書くことができるのは、明らかに最低限のものではありません。 インターフェースのテストを書くことから始めなければなりませんか?実装なしで何をテストするのですか? この質問がそれについて愚かに残念に思えるが、私は全く混乱しています。文字通りに物事を取っているかもしれません。
23 c#  unit-testing  tdd 

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