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

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

5
WinformsからWPFへの移行[終了]
私は長年Windows Forms開発者を経験していましたが、新しいWPFプロジェクトが間もなくやってくるので、WPFに移行する時が来ました。 Winformsの経験豊富な開発者にとって最善の方法は何ですか? 短時間でWPFを学習するためのヒントや推奨事項を教えてください。 簡単なサンプルWPFソリューションと短い(ビデオ)チュートリアルはありますか?どの本をお勧めしますか?www.windowsclient.netは良い出発点ですか?公式のMicrosoftサイトに代わるものはありますか?
26 c#  .net  windows  wpf  winforms 

3
.netにOrderedDictionaryの一般的な実装がないのはなぜですか?
なぜMicrosoftはOrderedDictionaryの一般的な実装を提供しなかったのですか? 私が見たいくつかのカスタム実装があります:http : //www.codeproject.com/KB/recipes/GenericOrderedDictionary.aspx しかし、なぜMicrosoftはそれをベース.netライブラリに含めなかったのですか?確かに、ジェネリックを作成しない理由がありましたが...それは何ですか? このメッセージを投稿する前に、私は見ました:https : //stackoverflow.com/questions/2629027/no-generic-implementation-of-ordereddictionary しかし、それはそれが存在しないことを確認するだけです。ないなぜそれが存在していません。 ありがとう
26 c#  .net 

4
開発チームがVisual Studioの複数のプロジェクトに単一のソリューションを使用すると「相互依存の複雑さが増す」と主張するのはなぜですか?
既存の製品の新しいバージョンの開発を開始している外部チームの管理を支援しています。これまで、このチームは、展開可能なビルドを作成するために連携するVisual Studioの約30のモジュールに対して、単一のソリューションで単一のプロジェクトのモデルを常に使用していました。 これは、ビルドの信頼性と品質に有害な影響を及ぼします。常に最新のソースコードが送信されるとは限らないためです。すべての参照コードを単一のソリューションに統合するためにそれらを押すことを試みていますが、いくつかの抵抗があります-特に、すべてが配置されている場合、モジュール間の相互依存性(Visual Studioの「プロジェクト」を読む)が増加していることについて話し続けています単一のソリューションファイル。別のソリューションのコードは他で使用されていません。 これはナンセンスであり、優れた開発パターンはそのような問題を回避するだろうと私は主張します。 問題のチームは、既存の製品のバグ修正と新機能の開発も行いますが、その経験は控えめに言っても不十分であり、複数のソリューションに分割するというまったく同じ問題に苦しんでいます。ソース管理(TFS)へのアクセスを拒否されました。コードベースを統一するために取っているアプローチは、欠落している更新の数を減らし、時々発生する回帰よりも少なくすることです(はい、修正されたバグが再取得されています) -製品に導入されました)「ソリューションフォルダー全体のZIPを送信して、解凍し、Visual Studioで開き、F5 一般的な構造と品質の観点から、コードはかなり貧弱でサポートが困難です。この経験から、開発サイクルのできるだけ早い段階で作業プロセスを正しくしようと考えています。 私が見逃しているものはありますか?すべてのコードを分離しておく正当な理由はありますか?私のお金のために、それは一般的な知識になるほど説得力のある理由でなければなりませんが、私はすべてを知らないことを喜んで認めています。

5
インスタンスは、より具体的なタイプの他のインスタンスと同等ですか?
私はこの記事を読みました:Javaで平等メソッドを書く方法。 基本的に、継承をサポートするequals()メソッドのソリューションを提供します。 Point2D twoD = new Point2D(10, 20); Point3D threeD = new Point3D(10, 20, 50); twoD.equals(threeD); // true threeD.equals(twoD); // true しかし、それは良いアイデアですか?これらの2つのインスタンスは同じように見えますが、2つの異なるハッシュコードを持つ場合があります。それは少し間違っていませんか? 代わりにオペランドをキャストすることで、これがよりよく達成されると思います。
25 java  c#  scala  comparison 

4
不変フィールドのセッターを処理するにはどうすればよいですか?
2つのreadonly intフィールドを持つクラスがあります。プロパティとして公開されます: public class Thing { private readonly int _foo, _bar; /// <summary> I AM IMMUTABLE. </summary> public Thing(int foo, int bar) { _foo = foo; _bar = bar; } public int Foo { get { return _foo; } set { } } public int Bar { get { return …

7
必須ではありませんが、オプションのパラメーター名を指定しますか?
次の方法を検討してください。 public List<Guid> ReturnEmployeeIds(bool includeManagement = false) { } そして、次の呼び出し: var ids = ReturnEmployeeIds(true); システムを初めて使用する開発者にとって、何trueが起こったのかを推測するのはかなり難しいでしょう。最初にやるべきことは、メソッド名にカーソルを合わせるか、定義に移動することです(どちらも少しでも大きなタスクではありません)。しかし、読みやすくするために、次のように書くのは理にかなっています。 var ids = ReturnEmployeeIds(includeManagement: true); コンパイラが必要としないときにオプションのパラメータを明示的に指定するかどうかを正式に議論している場所はどこにありますか? 次の記事では、特定のコーディング規則について説明しています。https://msdn.microsoft.com/en-gb/library/ff926074.aspx 上記の記事に似た何かが素晴らしいでしょう。

8
順次コレクションは、インデックス0またはインデックス1で開始する必要がありますか?
複数のチャネルを持つデバイスのオブジェクトモデルを作成しています。クライアントと私の間で使用される名詞があるChannelとChannelSet。(「セット」は順序付けられており、適切なセットがそうではないため、意味的に正確ではありません。しかし、それは別の時代の問題です。) C#を使用しています。以下に使用例を示しChannelSetます。 // load a 5-channel ChannelSet ChannelSet channels = ChannelSetFactory.FromFile("some_5_channel_set.json"); Console.Write(channels.Count); // -> 5 foreach (Channel channel in channels) { Console.Write(channel.Average); Console.Write(", "); } // -> 0.3, 0.3, 0.9, 0.1, 0.2 すべてがダンディです。 ただし、クライアントはプログラマーではないため、ゼロインデックスによって完全に混乱します。最初のチャネルはチャネル1です。しかし、C#との一貫性を保つために、ChannelSetインデックスをゼロから維持したいと思います。 これにより、開発チームとクライアントが相互作用するときに、いくつかの切断が確実に発生します。しかし、さらに悪いことに、これがコードベース内でどのように処理されるかに矛盾があると、潜在的な問題になります。たとえば、次のUI画面では、エンドユーザー(1インデックス作成の観点から考える)がチャネル13を編集しています。 そのSaveボタンは、最終的にいくつかのコードになります。ChannelSetインデックスが1の場合: channels.GetChannel(13).SomeProperty = newValue; // notice: 13 または、インデックスがゼロの場合: channels.GetChannel(12).SomeProperty = newValue; // notice: 12 私はこれをどのように扱うか本当によくわかりません。私は、順序付けられた整数インデックス付きのもの(ChannelSet)を、C#ユニバースの他のすべての配列およびリストインターフェイスと一貫性を保つこと(ゼロインデックス付けChannelSet)をお勧めします。しかし、その後、UIとバックエンドの間のすべてのコードには翻訳(1を引く)が必要になります。そして、誰もが陰湿で一般的なオフバイワンエラーが既にどの程度存在するかを知っています。 …

1
Reactive Extensionsを使用した非同期ネットワークプログラミング
この質問は、Software Engineering Stack Exchangeで回答できるため、Code Review Stack Exchangeから移行されました。 5年前に移行され ました。 何socket年か前に(多かれ少なかれ)「低レベル」非同期プログラミング(イベントベースの非同期パターン(EAP)方式)を行い、最近TcpListener(非同期プログラミングモデル(APM))に「上」に移動した後、async/await(Task-based Asynchronous Pattern (TAP))に移動しようとしています だから私は考えていた。私の問題のドメインによりぴったりと合うかもしれないのでRX、なぜ行ってみてください(Reactive Extensions)。 多くのクライアントがTcpを介してアプリケーションに接続し、双方向(非同期)通信を開始する多くのコードを作成する必要があります。クライアントまたはサーバーはいつでもメッセージを送信する必要があると判断する場合があります。そのため、これは従来のrequest/responseセットアップではなく、リアルタイムで双方向の「回線」であり、両者が自由に送信できます、いつでも好きなときに。(これを説明するためのまともな名前を持っている人がいれば、それを聞いてうれしいです!)。 「プロトコル」はアプリケーションごとに異なります(私の質問にはあまり関係ありません)。ただし、最初の質問があります。 1つの「サーバー」のみが実行されていることを考えると、多くの(通常は数千の)接続(クライアントなど)を追跡する必要があります。州など、どのアプローチを好むでしょうか?EAP / TAP / APM?RXもオプションと見なされますか?そうでない場合、なぜですか? だから、a)それは要求/応答プロトコルではないので、非同期を動作させる必要があるので、スレッド/クライアントを「メッセージ待ち」ブロッキング呼び出しまたは「メッセージ送信」ブロッキング呼び出し(ただし、送信がそのクライアントのみをブロックできます(私はそれと一緒に暮らすことができます)およびb)多くの同時接続を処理する必要があります。ブロッキング呼び出しを使用してこれを(確実に)行う方法はありません。 私のアプリケーションのほとんどはVoiP関連です。SIP cientsからのSIPメッセージでも、FreeSwitch / OpenSIPSなどのアプリケーションからのPBX(関連)メッセージングでも、最も簡単な形式では、多くの「チャット」クライアントを処理しようとする「チャット」サーバーを想像できます。ほとんどのプロトコルはテキストベース(ASCII)です。 したがって、前述の手法のさまざまな順列を実装した後、単純にインスタンス化できるオブジェクトを作成して作業を簡素化し、IPEndpoint聞きたいものを伝え、興味のあることが起こったらいつでも教えてもらいたい(通常はイベントを使用するため、一部のEAPは通常、他の2つの手法と混合されます)。クラスは、プロトコルを「理解」しようとする必要はありません。単に着信/発信文字列を処理する必要があります。したがって、RXに注目して(最終的に)作業を簡素化することを期待して、ゼロから新しい「フィドル」を作成しました。 using System; using System.Collections.Concurrent; using System.Net; using System.Net.Sockets; using System.Reactive.Linq; using System.Text; class Program { static void Main(string[] args) { var f …
25 c#  .net  tcp 

3
C#の宣言型と同じ名前をプロパティ/メンバーに付けるのは悪い習慣ですか?
たとえば、次のようなクラス: class Dog { } //never mind that there's nothing in it... そして、次のようなプロパティ: Dog Dog { get; set; } もっと想像力に富んだ名前が思いつかない場合は、次を使用する必要があると言われました。 Dog DogObject { get; set; } これらの名前をより良くする方法についての考えはありますか?
25 c#  naming  properties 

6
基本的に構造のないプロジェクトを修正する方法は?
私は、5年以上にわたってほとんどソロでソフトウェアプロジェクトに取り組んできました。始めは混乱でした(私が取り組んでいる3番目または4番目の開発者です)が、混乱は少なくなりましたが、まだ非常に混乱しています。それを制御できるようになるまでの進行速度は氷河期であり、私はそれが現在の状態に落胆し始めていると感じています。 プロジェクトの詳細:これは、ほぼ完全にVisual Basic Classic(VB6)で記述された販売プログラムで、MySQLバックエンドとレポートエンジンがC#で記述されています。C#レポートモジュールは、作業するのが楽しいです。過去数年で書かれたばかりで、Crystal Reports 9ですべてのレポートが作成されました(はい、まだ依存しているレポートがいくつかあります)。 ただし、実際のプログラム自体は完全な災害です。LOCの合計は90,000ほどではなく、コメントの行数は10,000になります(ほとんどはドキュメントではなく、コメントアウトされた古いコードです)。158個のフォームファイルと80個のモジュールファイル。プログラムの一部の機能は単純に非推奨になり、(場合によっては)関連するコードをプログラムから削除せずにそのように表記されるため、それらのどれだけが実際に使用されているのかわかりません。実際に生産的に使用されているのはコードの50%だけだと思います。 あいまいなクライアントが依存している何かを壊しているかどうかわからないという理由だけで、多くのコードに触れることを恐れています。コード全体に地雷が散らばっているようなものです。 プロジェクトには実際には構造がありません。私がこれまで改革する忍耐を持っていたいくつかの場所を除いて、それはオブジェクト指向ではありません。フォーム上のデータを取得する必要がある場合は、データベースオブジェクトをインスタンス化し、関数内でクエリを宣言し、それを実行して、データセットで必要な処理を行います。 プロジェクトの作業を開始したとき、使用中のソース管理はありませんでした。私が取り組んでいる他の人々にそれを使用するように奨励しようとしましたが、私は新しい人であり、人々にSubversionを使用させるための私の試みは失敗しました。同社の主任開発者はここ数年でようやく水銀のバグを発見し、すべての開発者が現在すべてのプロジェクトでソース管理を使用していることを確認しました。 プロジェクトの改革にフルタイムで取り組むことができた場合、まともな進歩を遂げることができ、おそらくプロジェクトを完全に改造するのにどれくらいかかるかを見積もることさえできると思いますが、それは積極的に使用されています火を消す、バグを修正する、機能を追加するなどのように常に求められます。 では、どうすればこのプロジェクトを実際に修正し始めることができますか?別の言語でVB6を使用してみませんか?空き時間にプログラムを書き直してみてください。またはこれは完全に絶望的ですか? 更新 この投稿の後、私は熱心にプロジェクトに戻りましたが、そのようなゆっくりした進歩を見た後、数ヶ月以内に絶望に陥りました。それから、このサイクルを来年かそこらでさらに2、3回繰り返しました。 それから別の仕事に移りました。vb6の長年の経験と、他のテクノロジーの周辺経験だけでしたが、検索は難しく、途中で多くの拒否に直面しました(1年間で約12件のインタビュー)。この状況にある他の人への私のアドバイスは、この要素だけを残すことを検討することです。このような行き止まりの位置にとどまることによってあなたのキャリアに与えるダメージを考えてください。

5
MonoTouch vs Objective-C for iPhone / iPod / iPad開発[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 .Netの経験があり、iPhone / iPod / iPad用に開発したい人にとって、Objective-Cを学ぶ価値はありますか?MonoTouchは良い選択肢ですか?MonoTouchを使用する場合とObjective-Cでコーディングする場合のトレードオフにはどのようなものがありますか?
25 c#  .net  iphone  objective-c 

7
これらの本を読む正しい順序は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私はジュニアC#開発者で、自宅で学び、今では最初の仕事を得ました:) これらの本を買いたいです。しかし、これらの本を読む正しい順序は何ですか? 完全なコード:ソフトウェア構築の実践的なハンドブック Clean Code:A Handbook of Agile Software Craftsmanship 実用的なプログラマー
25 c#  learning  books 

1
定数クラスを作成するためのベストプラクティスを提案する
この質問は、Software Engineering Stack Exchangeで回答できるため、Code Review Stack Exchangeから移行されました。 5年前に移行され ました。 定数クラスの宣言については、私のチームメンバーの間で議論があります。定数変数を以下のような別のクラスに移動しています。 public class Constants { public const string StateId = "ST"; public const string CountryId = "CI"; } 私のチームメンバーの何人かは、オーバーライドオプションを回避するためにクラスを封印済みとして宣言することを提案しました。また、定数クラスのインスタンス作成を回避するために静的としてマークすることを提案する人もいます。 ただし、将来の必要に応じて読み取り専用変数を初期化するのに役立つため、静的コンストラクターでSealedとして使用することを好みます。これに関するアドバイスをお願いします。
25 c#  class 

6
なぜメソッドを「待ち」、すぐにその戻り値を調べるのでしょうか?
で、このMSDNの記事、次のコード例は、(わずかに簡潔にするために編集された)が設けられています。 public async Task<ActionResult> Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Department department = await db.Departments.FindAsync(id); if (department == null) { return HttpNotFound(); } return View(department); } このFindAsyncメソッドは、DepartmentIDでオブジェクトを取得し、を返しますTask<Department>。次に、部門がすぐにチェックされ、nullかどうかが確認されます。私が理解しているように、この方法でタスクの値を要求すると、待機中のメソッドから値が返されるまでコード実行がブロックされ、事実上これが同期呼び出しになります。 なぜこれをするのですか?Find(id)とにかくすぐにブロックする場合は、単に同期メソッドを呼び出す方が簡単ではありませんか?
24 c#  .net  asp.net-mvc  async 

5
C#で不変オブジェクト間の循環参照をモデル化する方法は?
次のコード例には、部屋を表す不変オブジェクトのクラスがあります。北、南、東、および西は、他の部屋への出口を表します。 public sealed class Room { public Room(string name, Room northExit, Room southExit, Room eastExit, Room westExit) { this.Name = name; this.North = northExit; this.South = southExit; this.East = eastExit; this.West = westExit; } public string Name { get; } public Room North { get; } public Room South { …

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