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

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

4
linqは表面に表示されるよりも効率的ですか?
このようなものを書くと: var things = mythings .Where(x => x.IsSomeValue) .Where(y => y.IsSomeOtherValue) これは次と同じですか: var results1 = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue) results1.Add(t); var results2 = new List<Thing>(); foreach(var t in results1) if(t.IsSomeOtherValue) results2.Add(t); または、以下のように機能するいくつかの魔法があります: var results = new List<Thing>(); foreach(var t in mythings) if(t.IsSomeValue && t.IsSomeOtherValue) results.Add(t); それともまったく異なるものですか?
13 c#  linq 

1
Resharperが「is」より「as」を好むのはなぜですか?
次のようなコードを書くと、objはローカル変数です。 if (obj is IMyInterface) { var result = (IMyInterface)obj; // .... } Resharperは、次のようなコードに変更することを提案しています。 var result = obj as IMyInterface; if (result != null) { // ... } 前者は、誤ってnull参照の例外が発生する可能性がないため、前者の方が好きです。他の形式を好む理由は何ですか? Resharperがこれを推奨する理由は何ですか?
13 c#  resharper 

2
C ++は、共通の共通の祖先を持つ複数の継承をどのように処理しますか?
私はC ++の男ではありませんが、これについて考えることを余儀なくされています。C ++では多重継承が可能ですが、C#ではできないのはなぜですか?(ダイヤモンドの問題を知っていますが、それは私がここで尋ねていることではありません)。C ++は、複数の基本クラスから継承された同一のメソッドシグネチャのあいまいさをどのように解決しますか?そして、なぜ同じデザインがC#に組み込まれていないのですか?

2
インラインコードコメントの最適なアプローチは何ですか?
20年前のレガシーコードベースにリファクタリングを行っており、同僚とコードのコメント形式(plsql、java)について議論しています。 コメントにはデフォルトの形式はありませんが、ほとんどの場合、人々はコメントで次のようなことをします。 // date (year, year-month, yyyy-mm-dd, dd/mm/yyyy), (author id, author name, author nickname) and comment 私が望む将来および過去のコメントの提案された形式は次のとおりです。 // {yyyy-mm-dd}, unique_author_company_id, comment 私の同僚は、コメントだけが必要であり、過去および将来のすべてのコメントをこの形式に再フォーマットする必要があると言います。 // comment 私の議論: メンテナンス上の理由から、いつ、誰が変更を行ったかを知ることが重要です(この情報はSCMにあります)。 コードは生きており、そのために歴史があります。 変更日付がないと、SCMツールを開いて長いオブジェクト履歴を検索しないと、変更がいつ導入されたかを知ることができないためです。 著者は非常に重要であるため、著者の変更は著者の変更よりも信頼できる 敏ility性の理由、SCMツールを開いてナビゲートする必要はありません 人々は、最近作成または変更されたものよりも、誰かが15年前にしたことを変更することを恐れます。 等 私の同僚の議論: 歴史はSCMにあります 開発者は、コード内のコードの履歴を直接認識してはなりません。 パッケージの長さは15,000行になり、構造化されていないコメントはこれらのパッケージを理解しにくくします 最善のアプローチは何だと思いますか?または、この問題を解決するためのより良いアプローチがありますか?

4
インターフェイスが他のインターフェイスを拡張する必要があります(そうすることでメソッドを継承します)
これは一般的な質問ですが、私が現在経験している問題にも固有のものです。現在、ソリューションに指定されているインターフェイスがあります public interface IContextProvider { IDataContext { get; set; } IAreaContext { get; set; } } このインターフェイスはプログラム全体でよく使用されるため、必要なオブジェクトに簡単にアクセスできます。しかし、プログラムの一部のかなり低いレベルでは、IAreaContextを使用し、それからいくつかの操作を実行する別のクラスにアクセスする必要があります。そこで、この作成を行うための別のファクトリインターフェイスを作成しました。 public interface IEventContextFactory { IEventContext CreateEventContext(int eventId); } IContextProviderを実装し、NinJectを使用して注入されるクラスがあります。私が抱えている問題は、このIEventContextFactoryを使用する必要がある領域がIContextProviderにのみアクセスでき、それ自体がこの新しいインターフェイスを必要とする別のクラスを使用することです。IEventContextFactoryのこの実装を低レベルでインスタンス化する必要はなく、むしろIEventContextFactoryインターフェース全体で動作します。ただし、コンストラクタを介して別のパラメータを挿入する必要はありません。それを必要とするクラスに渡すだけです。つまり、 // example of problem public class MyClass { public MyClass(IContextProvider context, IEventContextFactory event) { _context = context; _event = event; } public void DoSomething() …
13 c#  design  interfaces 

6
コレクションのリクエストにアイテムが含まれない場合の予期される動作
次のものが与えられたとしましょう... List<Thing> theThings = fubar.Things.All(); 返すものが何もない場合、fubar.Things.All()が何を返すと期待しますか? 編集:意見をありがとう。少し待って、アップの多いエントリーを受け入れます。 私はこれまでの回答、特に空のコレクションを示唆するものに同意します。ベンダーは、上記の例に類似したいくつかの呼び出しでAPIを提供しました。昨年、APIを通じて460万ドルの収益を上げたベンダー、BTW。彼らは私が根本的に反対することをします-例外を投げます。
13 java  c# 

4
文字列オブジェクトに割り当てるときに「」の上にstring.Emptyを使用する理由
コードに対してStyleCopを実行していますが、SA1122の推奨事項の1つは、空の文字列を値に割り当てるときに ""ではなくstring.Emptyを使用することです。 私の質問は、これがベストプラクティスと見なされる理由です。または、これはベストプラクティスと見なされますか?私は2つのステートメントの間にコンパイラの違いがないと仮定しているので、それは読みやすいものだと思うことができますか? 質問と回答 ジョン・スキートの質問への回答
13 c# 

3
オーディオを単体テストするにはどうすればよいですか?
私は小さなプロジェクトを継承しており、追加するすべての新しいコードの単体テストを作成して、プロジェクトを拡張し、同時に安定させたいと考えています。最初のクラス、TypedAudioCreatorはオーディオファイルを作成し、これは最初にテストし、2番目のコードを書くのが非常に簡単であることが判明しました。 しかし、書くときが来たときTypedAudioPlayer、どうやってテストできるかわかりませんでした。サウンドの再生の基本に焦点を当てた非常に小さなクラスです。 public class TypedAudioFilePlayer { public event StartedPlayingHandler StartedPlaying; public event StoppedPlayingHandler StoppedPlaying; public readonly int TimeBetweenPlays; private Queue<TypedAudioFile> _playlist = new Queue<TypedAudioFile>(); public TypedAudioFilePlayer(int timeBetweenPlays) { TimeBetweenPlays = timeBetweenPlays; } public void AddFile(TypedAudioFile file) { _playlist.Enqueue(file); } public void StartPlaying() { ThreadPool.QueueUserWorkItem(ignoredState => { while (_playlist.Count > 0) …
13 c#  tdd 

8
ほとんど変更されない「合理的に大量の」データを保存する実用的な方法は?
事前に計算されたルックアップテーブルなどについて考えます。アプリケーションで値をハードコーディングする代わりにデータベースを使用する方が適切なのはどの時点ですか?値は変更されず、メンテナンス開発者からうまく分離されます。100個の値、1k、10k、100k?約4万の値を保存したいです。現時点では、これはマシン生成のswitchステートメントです(VS2010は不満です)。 編集: 誰かが好奇心があるなら、私はこれにどのようにアプローチしたのですか?私のデータは2つの100k要素のfloat配列に保存可能でしたので、それは私がやったことです。データを生成するのに約20秒かかりましたので、一度それを行い、BinaryFormatterを使用して埋め込みリソースにシリアル化しました。データの解凍には、アプリケーションの起動時に約5ミリ秒かかり、私が置き換えていたデータベース実装(これらのハードコードされた値は以前に保存されていた)をほぼ45,000倍上回ります。

7
C#の経験はC ++にうまく変換できますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 学校でのプログラミングクラスはC ++でしたが、最後の数年間はC#の仕事をしていました。C ++で1年または2年の経験が必要なポジションがある場合、C#での経験は考慮に値しますか?私はそのような立場にどれほど効果的でしょうか?必要な経験を積むには、エントリーレベルのC ++プログラマーとして始める必要がありますか?
13 c#  c++  experience 

3
XMLドキュメントのコメントには何を含める必要がありますか?
特にクラスメンバーのXMLコメントに関しては、コードをより適切に文書化することを目指していますが、多くの場合、それは愚かなことです。 イベントハンドラーの場合、命名規則とパラメーターは標準的で明確です。 /// <summary> /// Handler for myCollection's CollectionChanged Event. /// </summary> /// <param name="sender">Event Sender</param> /// <param name="e">Event Arguments</param> private void myCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { // actual code here... } また、要約が冗長になるように、明確に名前が付けられた単純なプロパティ(IMO)も頻繁にあります。 /// <summary> /// Indicates if an item is selected. /// </summary> public bool ItemIsSelected { get { …
13 c#  coding-style 

2
NHibernateでリポジトリパターンが必要なのはなぜですか?
私はあなたの最初のNHibernateベースの公式アプリケーションを読んでいます。 チュートリアルはわかりやすくてわかりやすいですが、Repositoryパターンを使用する理由を知りたいと思います。 様々でAdd、Update、RemoveのメソッドProductRepositoryの実装は、コードはほとんど同じである-彼らはすべてのトランザクションを使用している、との違いは、「肉」、すなわちコールであるsession.Saveint型Add、メソッドsession.Deleteにremove方法。(ページはHTMLのアンカーを欠いていますが、のような関連するコードのページを検索することができpublic void Remove、public void Add) そのコードは「間違っていると感じる」だけです。 作者がリポジトリパターンを使用しているのはなぜですか-NHibernateを使用するためのデモンストレーションのためだけなのか、それとも必要なのか、またはその他の理由がありますか? 追伸 私のバックグラウンドはActiveRecordを使用したRuby on Railsからのものですので、NHibernateがどのように機能するか、またはどのように使用されるかを理解しようとしています。
13 c#  .net  nhibernate 

4
モデルに「FullName」や「FormattedPhoneNumber」などのゲッターを配置するのは「パターン臭」ですか?
私はASP.NET MVCアプリに取り組んでおり、便利で便利なゲッターをモデル/エンティティクラスに入れる習慣を身につけています。 例えば: public class Member { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string PhoneNumber { get; set; } public string FullName { get { return FirstName + " " + LastName; } } …

3
.NETデータ層を構築するためのMicrosoftの現在のベストプラクティスは?そして現実?
私が作業している開発チームはすぐに.NET 4.0に移行しますが、使用するデータアクセスクラスライブラリは、引き続きADO.NETの「クラシック」、つまりSqlDataReader、DataTableなどを使用します。一方、Microsoftのように思われ、おそらく世界の他の地域ではEntity FrameworkとWCF Data Servicesが前進しています。MSDNで、マイクロソフトがベストプラクティスと見なしているデータアクセステクノロジーを示すものは何も見つかりませんでした。 マイクロソフトには好みがありますか?現在、ほとんどの人はどのデータアクセスを使用していますか?ADO.NETクラシックにとどまり、Entity Frameworkに移行しない正当な理由はありますか?

8
命名規則のガイドラインは注意する価値がありますか?
.Net規則を使用して変数に名前を付けます。 変数とフィールド用のcamelCase(クラスのプライベートフィールドには_camelCaseを使用する傾向があります) メソッド、プロパティ、クラスのPascalCase 私が逸脱する唯一の場所は、実際にJava SCREAMING_CAPSスタイルを好む定数と列挙です。 私の会社のコードベースには、VB6とVBScriptの疑似ハンガリー表記スタイルが散りばめられています。 文字列の場合はsまたはstr Intsの場合はiまたはint dは10進数(または場合によっては2倍) oまたはあらゆる種類のオブジェクトのobj そのコードスタイルが他の人のコードで使用されているのを見たときはいつでも(レガシーフィールドだけでなく、グリーンフィールドコードでも)私はうんざりし、自分でそのスタイルを使用することを拒否します。過去に.Net命名規則を標準化してきましたが、無視されました。ハンガリー語表記で書いている人はそうし続けています。私が好きではない人は自分のスタイルを使い続けています。標準化を行うと(私はそれを押し続けますが、誰も気にしないようです)、それはハンガリーの表記法であり、推奨される方法ではなく、そのようなコードを書くことを余儀なくされることを少し恐れています。 これに関して、モグラ塚から山を作っていますか?コードに説明的な名前ではなく冗長な識別子が散らばっているかどうか気にせず、独自の方法を使い続けて標準になるようにプッシュする必要がありますか?

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