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

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

7
誰でも私にスレッドを理解するのに役立つプロジェクトを書くことを提案できますか?
私は現在、C#の開発者であり、スレッドの理解がかなり不安定です。 これらのリンクは両方とも他の投稿で提案されています: http://www.yoda.arachsys.com/csharp/threads/ http://www.albahari.com/threading/ 基礎に戻って、このテーマに関するコンピューターサイエンスのテキストをいくつか見てください。 私が飛び込んでc#ライブラリを使用すると、構築するための強固な知識の基盤が本当になくなると思います。com sciの学生のように、このテーマをゼロから学び、C#ライブラリを使用する必要があると思います。 スレッドを学習するためのアプローチ、おそらくいくつかのリンクやプロジェクトのアイデアを誰でも提案できますか? 前もって感謝します! 編集、すべての返信に感謝します。一部の人は、本は良いアイデアかもしれないと言っていますが、誰かがそれを提案できますか?私は言語にとらわれない何かを好むでしょう。コンピューターサイエンスの学位でこのクラスがカバーされるクラスを誰もが知っていますか?Googleで無料のオンラインメモと割り当てを探しています。

5
依存性注入とパブリックAPIデザインのバランス
私は、依存性注入を使用したテスト可能な設計と、単純な固定パブリックAPIの提供とのバランスを取る方法を検討してきました。私のジレンマは次のとおりです。人々はvar server = new Server(){ ... }多くの依存関係や依存関係のグラフを作成することについて心配する必要はなく、何かをしたいと思うでしょうServer(,,,,,,)。開発中は、IoC / DIフレームワークを使用してすべてを処理するため、あまり心配する必要はありません(コンテナのライフサイクル管理の側面を使用していないため、さらに複雑になります)。 現在、依存関係が再実装されることはほとんどありません。この場合のコンポーネント化は、拡張などの継ぎ目を作成するのではなく、ほとんど純粋にテスト容易性(および適切な設計!)のためです。99.999%の人は、デフォルト構成を使用したいと思うでしょう。そう。依存関係をハードコーディングできました。それをしたくない、テストを失う!ハードコードされた依存関係と依存関係を取得するデフォルトのコンストラクターを提供できます。それは...乱雑で、混乱を招く可能性がありますが、実行可能です。依存関係を受け取るコンストラクタを内部に作成し、ユニットテストでフレンドアセンブリ(C#を想定)を作成できます。これにより、パブリックAPIは整頓されますが、メンテナンスのために厄介な隠されたトラップが残ります。私の本では、明示的にではなく暗黙的に接続された2つのコンストラクターが一般的に悪い設計になります。 現時点では、私が考えることができる最小の悪についてです。ご意見?知恵?
13 c#  api 

4
.NET認定試験の違いは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私はWPFとASP.NET MVCを使用する.NET開発者であり、何らかの認定試験に合格することを望んでいました。 4つの試験があるようですが、Microsoftの定義を使用しても違いが何であるかを理解できません。 MCPD MCAD MCSD MTA それらはどのように相互に関連していますか?認定試験の自然な進行経路はありますか?どのバージョンの.NETに適していますか?
13 c#  .net 

7
クラスのドキュメントヘッダーに何を含める必要がありますか
エンティティ、ビジネスロジック、およびデータアクセスクラスの有益なクラスドキュメント形式を探しています。 ここから次の2つの形式が見つかりました フォーマット1 ///----------------------------------------------------------------- /// Namespace: <Class Namespace> /// Class: <Class Name> /// Description: <Description> /// Author: <Author> Date: <DateTime> /// Notes: <Notes> /// Revision History: /// Name: Date: Description: ///----------------------------------------------------------------- フォーマット2 // =============================== // AUTHOR : // CREATE DATE : // PURPOSE : // SPECIAL NOTES: // =============================== // …

4
命令型プログラマーに宣言型プログラミングを教えようとするとき、いくつかの良い習慣は何ですか?
私は自分の会社でF#のトレーニングを少し行うことを申し出ましたが、彼らは興味を示しているようでした。彼らは通常、プログラミングにあまり情熱を傾けないVB6およびC#プログラマーです。そうは言っても、機能的なことを考えると正しいコードを書く方が簡単だと思うので、彼らは間違いなく何らかの利益を得るはずです。 誰も私がこれにどのようにアプローチするべきかについていくつかのアドバイスを提供できますか? アイデア 構文に集中するのではなく、代わりにこの言語とそれが促進するイディオムをどのように使用できるかに集中してください。 命令的な方法で書くのは苦痛だが、宣言的な方法で書くとエレガントなコードに変換される例を試してみてください。

2
エラー処理の実装方法[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 私は数年間プロレベルでプログラミングを行ってきましたが、それでもエラー処理を完全に理解していません。私のアプリケーションは正常に動作しますが、エラー処理は専門的なレベルでは実装されておらず、多くの手法の組み合わせです。 エラー処理の背後に構造はありません。プロレベルでどのように実装されているかを学び、理解したいと思います。これは、私が知識を欠いている分野の1つです。 ロジックフローでチェックするために、いつ例外を使用し、成功ステータスを返す必要がありますか?例外を組み合わせてステータスを返すことはできますか? 主にC#でコーディングします。

1
C#辞書の効率
C#辞書は、何かが存在するかどうかなどを見つける簡単な方法です。どのように機能するかについては質問があります。辞書の代わりにArrayListを使用するとしましょう。ContainsKey(または別の言語の同等のメソッド)を使用する代わりに、ArrayListをループして、そこに何かが存在するかどうかを確認します(または、データが並べ替えられているか、類似のものであればバイナリ検索を実行します)。効率の違いは何ですか?ContainsKeyメソッドは、キーをループして検索しているものが存在するかどうかをチェックするのではなく、より効率的な方法を使用していますか? 私が持っているデータの種類に対応する特定のハッシュ関数を作成し、そのデータのセット用に特別に設計されている場合、そのハッシュ関数はデータをループするよりも実際に高速です。しかし、辞書は一般的です。ContainsKeyメソッドは、取得するデータに固有ではなく、一般的な検索メソッドです。 基本的に私が求めているのは。辞書はプログラマーに役立ちます。それらには、多くのことを支援するメソッドが含まれており、文字列を整数(キーと値)などと組み合わせています。しかし、効率については、彼らは何を提供していますか?持つに違い何dictionary対ArrayListのをstructs(string,int)

2
どうすれば自分のコーディングスキルを長続きさせることができますか?
この秋までに、私の2つの小さなWebサイトは、快適で快適に生活するのに十分な最小限/ゼロの入力で、月に合計約1200ドルを生成するはずです。 別のビジネスベンチャーに着手するのではなく、今後数年間、本当に良いことや、それを必要とする他の人々に役立つことをしたいと思っています。私は4年か5年を費やして価値のある目的に専念し、すでに持っているWeb開発とプログラミングのスキルを最大限に活用したいと考えています。 問題は、どこから始めればよいかわからないことです。私は自分自身の素晴らしいアイデアを持っていませんし、多くの大きな慈善団体に非常に懐疑的です。理想的には、誰もが無償で支援に集中している小さなプロジェクトを見つけたいです。 そのような小さな組織はありますか? プロジェクト/ウェブサイト/アプリのアイデアを持っている人はいますか? これは典型的なStackOverflow 2 + 2 =ではないことを知っていますか?タイプの質問とそれを削除したい人もいますが、IT業界の慈善的性質(SO自体を見てください)を考慮すると、これは現在またはキャリアのある時点で多くの開発者に非常に関連する質問です。日本の最近の出来事を考えると、この質問は、他の人が利用できるスキル/時間で他の人を助ける方法を探している多くの人々に特に関連しています。 これに関するあなたの考え/答えを読むのを本当に楽しみにしています、ありがとう
13 c#  java  php  javascript  jquery 

4
ヌル結合演算子を使用したヌルオブジェクトのインスタンス化
次の典型的なシナリオを検討してください。 if(myObject == null) { myObject = new myClass(); } null合体演算子を使用した次の置換についてはどう思われますか? myObject = myObject ?? new myClass(); 2番目のフォームを使用する必要があるかどうかはわかりません。それはいい速記のmyObject = myObjectように思えますが、最初の構造は少しコード臭いのようです。 これは合理的なことですか、それとも私が見逃しているより良い略記ですか?または、「3行です、乗り越えてください!」 編集:前述したように、おそらくこれを典型的なシナリオと呼ぶのは誇張の言葉です。私は通常、まだ参照されている場合とされていない場合がある子参照型プロパティを持つデータベースからエンティティを取得するときに、この状況に遭遇することを発見します。 myClass myObject = myClassService.getById(id); myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
12 c#  operators 

5
抽象クラスを既に持っている場合、インターフェイスを定義するのは理にかなっていますか?
いくつかのデフォルト/共有機能を持つクラスがあります。私abstract classはそれを使用します: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } protected abstract string Map(ClassDefinition classDefinition); } ご覧のとおり、インターフェイスもありますITypeNameMapper。私がすでに抽象クラスを持っているTypeNameMapperか、それでabstract class十分な場合、このインターフェイスを定義するのは理にかなっていますか? TypeDefinition この最小限の例でも抽象的です。

4
無意味なデフォルト値を持つ構造体
私のシステムでは、私は頻繁に空港コード(で動作し"YYZ"、"LAX"、"SFO"、など)、彼らはまったく同じ形式(大文字として表現3文字)に常にあります。システムは通常、APIリクエストごとにこれらの(異なる)コードの25〜50を処理し、合計で1,000を超える割り当てが行われ、アプリケーションの多くのレイヤーを通過して、頻繁に同等性が比較されます。 最初は文字列を渡すだけで、少しはうまくいきましたが、3桁のコードが予期される場所に間違ったコードを渡すことで、多くのプログラミングの間違いにすぐに気付きました。また、大文字と小文字を区別しない比較を行うことになっていた問題に遭遇しましたが、代わりにそうしなかったため、バグが発生しました。 このことから、文字列の受け渡しを停止してAirport、空港コードを取得して検証する単一のコンストラクターを持つクラスを作成することにしました。 public sealed class Airport { public Airport(string code) { if (code == null) { throw new ArgumentNullException(nameof(code)); } if (code.Length != 3 || !char.IsLetter(code[0]) || !char.IsLetter(code[1]) || !char.IsLetter(code[2])) { throw new ArgumentException( "Must be a 3 letter airport code.", nameof(code)); } Code = code.ToUpperInvariant(); } public string …

5
削除するアイテムが指定されていない場合、サービスは例外をスローするかリターンする必要があります
次のように表すことができるコードがあります: public class ItemService { public void DeleteItems(IEnumerable<Item> items) { // Save us from possible NullReferenceException below. if(items == null) return; foreach(var item in items) { // For the purpose of this example, lets say I have to iterate over them. // Go to database and delete them. } } …

5
外部コード内の任意の関数/クラスへの呼び出しを禁止する
システムでの負の結果を防ぐために、外部ライブラリとフレームワークのAPIへのアクセスを制限することが重要になる場合があります。 たとえば、SharePointアプリケーションではspList.Items.GetItemById、ループ内であっても、リストアイテムを取得するために呼び出すのが自然に思えるかもしれません。 また、テスト環境ですべての電子メールを適切にプロキシおよびモックできるように、全員に独自のクラスを使用して電子メールを送信させるために、SmtpClientの使用を禁止する必要がある場合もあります。 独自のコードの特定の特定の場所を除き、外部コードでこれらの制約を達成するための信頼できる合理的な方法はありますか?すべての状況下で、これらのメソッド/クラスへのアクセスを完全に禁止する必要はありません。たとえば、リフレクションまたは何らかの無効化によって、それらを使用しないことを厳しく警告する必要があります。できればプログラマーに積極的にこれらの制約を無効にするための措置をとるように強制します。

4
関数型スタイルでプログラミングする場合、アプリケーションロジックを通して織り込む単一のアプリケーション状態がありますか?
どのように私は、次のすべてを持っているシステムを構築します。 不変オブジェクトで純粋な関数を使用します。 関数が必要とする関数データのみに渡し、それ以上(つまり、大きなアプリケーション状態オブジェクトはなし) 関数への引数が多すぎることは避けてください。 関数に渡されるパラメーターが多すぎるのを避けるために、関数にパラメーターをパックおよびアンパックするためだけに新しいオブジェクトを作成する必要はありません。複数のアイテムを単一のオブジェクトとして関数にパックする場合、一時的に構築されたものではなく、そのオブジェクトをそのデータの所有者にしたい Stateモナドはルール2に違反しているように思えますが、モナドを介して織り込まれているため明らかではありません。 どういうわけかレンズを使用する必要があると感じていますが、非機能言語についてはほとんど書かれていません。 バックグラウンド 演習として、既存のアプリケーションの1つをオブジェクト指向スタイルから機能スタイルに変換しています。私が最初にやろうとしているのは、アプリケーションの内部コアをできるだけ多く作成することです。 私が聞いたことの1つは、純粋に機能的な言語で「状態」を管理する方法であり、これは私がステートモナドによって行われていると信じていることです。 「そのままの世界」を選択し、関数が戻ると、変化した世界の状態を返します。 たとえば、純粋に機能的な方法で「hello world」を実行する方法は、プログラムに画面の状態を渡し、「hello world」が印刷された画面の状態を受け取るようなものです。技術的には、純粋な関数を呼び出しているので、副作用はありません。 それに基づいて、アプリケーションを調べました。1。最初に、すべてのアプリケーション状態を単一のグローバルオブジェクト(GameState)に入れます。2。次に、GameStateを不変にしました。変更することはできません。変更が必要な場合は、新しいものを作成する必要があります。これを行うために、コピーコンストラクターを追加しました。オプションで、変更された1つ以上のフィールドを使用します。3.各アプリケーションに、GameStateをパラメーターとして渡します。関数内で、予定通りの処理を行った後、新しいGameStateを作成して返します。 純粋に機能的なコアと、そのGameStateをアプリケーションのメインワークフローループにフィードする外側のループの仕組み。 私の質問: さて、私の問題は、GameStateには約15種類の不変オブジェクトがあることです。最下位レベルの関数の多くは、スコアの保持など、これらのオブジェクトの一部のみで動作します。それで、スコアを計算する関数があるとしましょう。今日、GameStateはこの関数に渡され、新しいスコアで新しいGameStateを作成してスコアを変更します。 それについて何かが間違っているようです。この関数はGameState全体を必要としません。スコアオブジェクトが必要です。そこで、スコアを渡すように更新し、スコアのみを返します。 それは理にかなっているように思えたので、私は他の機能をさらに使いました。一部の関数では、GameStateから2、3、または4つのパラメーターを渡す必要がありますが、アプリケーションの外側のコア全体でパターンを使用しているため、ますます多くのアプリケーション状態を渡しています。たとえば、ワークフローループの先頭で、メソッドを呼び出し、メソッドを呼び出すメソッドなどを呼び出して、スコアが計算されるまで続けます。つまり、一番下の関数がスコアを計算するという理由だけで、現在のスコアがこれらすべてのレイヤーに渡されます。 だから今私は時々数十のパラメータを持つ関数を持っています。これらのパラメーターをオブジェクトに入れてパラメーターの数を減らすこともできますが、そのクラスは、単に渡すことを避けるために呼び出し時に単純に構築されるオブジェクトではなく、状態アプリケーション状態のマスターの場所にしたいです複数のパラメータで、それらを解凍します。 だから今、私が持っている問題は私の関数があまりにも深くネストされていることだろうかと思っています。これは小さな関数が必要なためです。そのため、関数が大きくなったらリファクタリングし、複数の小さな関数に分割します。しかし、そうすることでより深い階層が生成され、外部関数が直接それらのオブジェクトを操作していない場合でも、内部関数に渡されたものはすべて外部関数に渡される必要があります。 この問題を回避する方法に沿って単にGameStateを渡すように見えました。しかし、関数が必要とする以上の情報を関数に渡すという元の問題に戻りました。

4
「グループ化」列挙型にフラグを使用するのは間違っていますか?
私の理解では、[Flag]enumは通常、個々の値が相互に排他的でない組み合わせ可能なものに使用されるということです。 例えば: [Flags] public enum SomeAttributes { Foo = 1 << 0, Bar = 1 << 1, Baz = 1 << 2, } どこにどんなSomeAttributes値がの組み合わせとすることができるFoo、BarとBaz。 より複雑で実際のシナリオでは、列挙型を使用して以下を記述しDeclarationTypeます。 [Flags] public enum DeclarationType { Project = 1 << 0, Module = 1 << 1, ProceduralModule = 1 << 2 | Module, ClassModule = 1 …
12 c#  .net  readability  enum 

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