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

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

4
C#のフィールドとメソッドでプライベートを使用する必要がありますか?
私はC#に少し慣れており、次のことがわかりました。C#では、クラス内のすべてのフィールドとメソッドはデフォルトでプライベートです。これが意味すること: class MyClass { string myString } と同じです: class MyClass { private string myString } それで、それらは同じなので、フィールドとメソッドでprivateキーワードを使用する必要がありますか?多くのオンラインコードサンプルでは、​​コードでprivateキーワードを使用していますが、それはなぜですか?

1
外れ値を減らすためにゲーム数が少ないときにELOアルゴリズムを変更する方法
私はここで見つけることができる標準のELO実装を開発しましたが、私が遭遇している問題は、私のプレイヤーが「シーズン」で10〜40ゲームしか持てないことです。私の最初のシーズンは既に完了しているので(ゲームのOWNレーティングシステムを開始したばかりです)、ELOレーティングのランクは、または少なくともそれに非常に近いはずです。私の問題は、その基本アルゴリズムを実装した後、かなり離れたいくつかの外れ値があることです。 私は10〜40ゲームしかないので、この状況を改善するために最初に考えたのは、このプロセスの周りにループを実装し、1つのサイクルから最終結果のELOレーティングを取得し、それを次のサイクルの開始点として使用することでした(各個人について)プレーヤー)。次に、前のサイクルから現在のサイクルまでのELO定格の平均または最大偏差がX以下になるまで、これらのサイクルを繰り返します。これは、いくつかの大きな外れ値を解決するのに役立ちました。まだ気に入らない小さな外れ値がまだいくつかあります... 例として、私は7つのディビジョンを持っています。ディビジョン1の場合、ELOに基づいて#1にランク付けされる男は5位にランクされ、ディビジョン2の場合、1位にランクされる男は3位になります。これらの種類の外れ値を除いて、各部門のトップ10程度は実際にはかなり近いです。 アルゴリズムを変更するにはどうすればよいですか?または外れ値を試し、減らすためにどのようなアプローチを取ることができますか? サイドノート#1。ディビジョン1の場合、#1であるはずの男が最終的に#5になりますが、実際には、他のレーティングシステムによってシーズン全体で#1にランクされています。その計算方法がわからないだけです(計算されない可能性があり、それに基づいている可能性があります。xプレーヤーがこれでいいので、彼は1位にランクされています)。 サイドノート#2。アルゴリズムを変更しました。私は、勝利/損失がどれほど支配的であるかによって、勝利/損失を「重み付け」したいと考えています。プレーヤーAがプレーヤーBに20対0で勝った場合、特にそれらのレーティングが非常に近い場合に、加重を大きくしますが、レーティングがさらに離れている場合(aがすでにBよりも大きい場合)、ELOの変更はそもそも彼らが最初に勝つと予想されていたからです。したがって、私がしたことは、元の式が使用するようにk係数/値400を使用する代わりに、に変更しました100 + ((score difference) * 2)。したがって、最大k係数は140になります(20-0が最大の勝利で、2を掛けて100に加算されます)。 ウェイト結果を含め、それらの外れ値の一部を修正するために、他にどのような戦略を実装できますか? 目の前にデータがない場合(すべてが家にある)、シナリオをまとめてみます... ディビジョンI #1 Elo Rating of 2250 #2 Elo Rating of 2200 #3 Elo rating of 2190 #4 Elo rating of 2175 #5 Elo rating of 2170 トーナメントで勝つために#5の男が#1を打ち負かしただけで、彼の "作品群"は#1の男よりも完全であるように見えます(別名彼は対戦し、#1の男よりも強い対戦相手を打ちました)。多分それは、「加重」kファクターがこれを捨てているためです。#5の勝ちが2〜5ポイントしかなかったためです。一方、#1勝はより高いマージン、たとえば5〜10ポイントでした。 たぶん、計算された結果を実際の結果に近づけることができるかどうかを確認するために、「重み付けされた」k係数をいじる必要があるだけかもしれません...
8 c#  math 

7
インターフェイスの実装を強制して特定の方法で動作させる方法
次のインターフェースがあるとします public interface IUserRepository { User GetByID(int userID); } ユーザーが見つからない場合、このインターフェイスの実装者に例外をスローさせるにはどうすればよいですか? コードだけで行うことは不可能だと思うので、意図した動作を実装するように実装者にどのように強制しますか?コード、ドキュメントなどを通じてですか? この例では、具体的な実装により、 UserNotFoundException public class SomeClass { private readonly IUserRepository _userRepository; public SomeClass(IUserRepository userRepository) { _userRepository = userRepository; } public void DisplayUser() { try { var user = _userRepository.GetByID(5); MessageBox.Show("Hello " + user.Name); } catch (UserNotFoundException) { MessageBox.Show("User not found"); …

5
JavaまたはC#の(post / pre)インクリメント演算子の理由
最近、整数に対してポスト/プリインクリメント演算子を頻繁に使用するコードの出力を予測することについて、疑問に遭遇しました。私はCプログラマーの経験があるので、まるで我が家のように感じましたが、JavaがC(またはC ++)から盲目的にコピーしたものであり、これはJavaの役に立たない機能であるとの声がありました。 そうは言っても、Java(またはC#)でその理由(特にpost / preフォームの違いを念頭に置いて)を見つけることはできません。これは、配列を操作してJavaで文字列として使用するようなものではないためです。 。また、私が最後にバイトコードを調べたのはずっと前なので、INC操作があるかどうかはわかりませんが、これがなぜなのかはわかりません for(int i = 0; i < n; i += 1) より効果が少ない可能性があります for(int i = 0; i < n; i++) これが本当に役立つ言語の特定の部分はありますか、またはこれはCプログラマーを街に連れてくるための単なる機能ですか?
8 java  c# 

2
次のイテレーターがこのイテレーターより優れている点は何ですか?
私はJava / C#イテレータを直接操作することはあまりありませんが、「次の」方法でイテレータを設計する理由は何だろうといつも思っています。 開始するには、イテレータを移動する必要があります。データがあるかどうかを確認するには、次の要素があるかどうかを確認する必要があります。 私にとってより魅力的なコンセプトはthis-iteratorです。これは最初から「始まる」ので、この状態を確認できるとしましょうisValid。したがって、コレクション全体のループは次のようになります。 while (iter.isValid()) { println(iter.current()); iter.next(); } ここで次の要素があるかどうかを確認するために、そこに行き、状態が有効かどうかを確認します。 YMMVですが、とにかく-このイテレーターよりも次のイテレーター(Java / C#など)の利点はありますか? 注:これは、言語の設計に関する概念的な質問です。
8 c#  java  iterator 

2
適切に設計されたオープンソースWPFアプリケーション[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 6年前休業。 WPFを使用してうまく設計された.NETオープンソースアプリケーションについて誰かが知っているかどうか疑問に思っていますか? すでにGitHubやSourceforgeなどの通常のサイトで検索を試みましたが、結果にはまったく満足していませんでした。 実際、私はMVVMやデータバインディングなどの比較的大きなソフトウェアのコンテキストでの適切な使用法に興味があります(少なくとも、サンプルコードの数行よりも多く、多くの場合、チュートリアルや書籍を見つけることができます)。また、NHibernateとのORMが私の主な関心事です。 現在、私はWPFがあまり広く使用されていないという全体的な印象も持っていますが、それでよろしいですか?どのクローズドソース(商用)ソフトウェア製品があり、それを使用していますか?
8 c#  .net  software  wpf 

4
C#デリゲートは不変ですが、なぜそれが重要なのですか?
これは、この他の質問のフォローアップ質問です。 バックグラウンド MSDNデリゲートチュートリアル(C#)から作業すると、次のようになります。 デリゲートが作成されると、関連付けられているメソッドは変更されないことに注意してください。デリゲートオブジェクトは不変です。 そして、コードサンプルでこれを確認します(コード全体を少し広げます)。 public delegate void ProcessBookDelegate(Book book); bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle)); bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(totaller.AddBookToTotal)); 質問 ここで明らかに、ここでのコードの記述方法により、プロセスごとに新しいデリゲートが作成されます。私は推測あなたのようなものを行うためにしようと不変性が関連しています ProcessBookDelegate thisIsATest = new ProcessBookDelegate(PrintTitle); ProcessBookDelegate thisIsATest = new ProcessBookDelegate(totaller.AddBookToTotal); thisIsATest不変であるときにどれをコンパイルする必要がありますか?では、Microsoftを不変にすることでどのような問題を解決したのでしょうか。C#6がデリゲートを変更可能にした場合、どのような問題が発生しますか? 編集 私は不変性がこれを防ぐと信じています: ProcessBookDelegate thisIsATest = new ProcessBookDelegate(PrintTitle); thisIsATest.ChangeTheDelegateInABadFashion(); someFunction(thisIsATest); //This function works as normal //because the delegate is unchanged //due to immutability しかし、不変性はこれを防止しません: …

4
C#からCへの相互運用にはどのような状況が適切ですか?
C#にunsafeキーワードがある場合、Cライブラリと相互運用することが依然として有益である状況はありますか? 既存のCライブラリを使用して、非常に高速な数値処理、グラフィカルな操作、または行列演算の必要性を理解できました。しかし、たとえばC99でグリーンフィールドDLLを作成し、C#から相互運用するための使用例はありますか? 必要なパフォーマンス特性を得るには、Cにドロップすることが(金属に近いという意味で)唯一の方法である場合があると思います。
8 c#  c  c99 

1
視覚化(3Dグラフィックス)フレームワークの単体テスト
これはこの質問のフォローアップです。科学的アルゴリズムのライブラリがあるときに、ユニットテストを行う方法を尋ねていました。現在、同様の問題がありますが、プロジェクトが異なります。 私は、DirectX、OpenGl、WebGl、Silverlight、WPFの3Dグラフィックエンジンフレームワークの抽象化に取り組んでいます。シナリオは次のとおりです。このプロジェクトは、同じオフィスで作業している私の同僚の小さなチームによって開発されています。私たちは皆、コンピューターサイエンティストであり、ソフトウェアエンジニアリングコミュニティや実践にはあまり関与していません。SubversionからGitに切り替えて、プロジェクトをCodeplexに公開することを説得するのに苦労しました。プロジェクトは大きくなり(C#の約80K行)、現在はShader Model 5.0までのほとんどのDirectXとOpenGlをカバーしているため、リンクされた質問で説明されているような1人のプロジェクトではありません。また、オープンソースコミュニティとのコラボレーションを促進したいと考えています。 これまでのところ、すべてのデバイスとリソースの初期化、シーンの設定、描画を含む小さなアプリケーションを作成してテストしてきました。問題は、それを異なるものにする方法がわからない、つまり、リソースの割り当て、プリミティブテセレーション、シェーダーコンパイルなど、フレームワークの特定の機能をテストする小さなテストケースを設計する方法です。エンジン全体の初期化。これらのケースのいくつかでは、便利なモックを考えることができますが、一般的に、出力がビジュアル(イメージ、またはアニメーションシーン)の場合、レンダリングアルゴリズムの正確さをどのようにテストできますか?現在、私たちが考え出した最も賢いことは、同じシーンをソフトウェアレンダラーであるDirectXとOpenGlにレンダリングし、それらをピクセルごとに比較することです。 では、ここでの「正しい」テストアプローチとは何でしょうか。
8 c#  unit-testing  tdd 

2
ファサードとしてのドメインサービス
C#を使用した.NETドメイン駆動設計:問題-設計-解決策を読んだところ、作成者が各集計ルートのドメインサービスを作成していることに気付きました。 ただし、ドメインサービスは対応するリポジトリのファサードにすぎませんでした。たとえば、これは彼の本のアプリケーションのコードサンプルです。 public static class CompanyService { private static ICompanyRepository repository; private static IUnitOfWork unitOfWork; static CompanyService() { CompanyService.unitOfWork = new UnitOfWork(); CompanyService.repository = RepositoryFactory.GetRepository<ICompanyRepository, Company>(CompanyService.unitOfWork); } public static IList<Company> GetOwners() { return CompanyService.GetAllCompanies(); } public static IList<Company> GetAllCompanies() { return CompanyService.repository.FindAll(); } public static void SaveCompany(Company company) { CompanyService.repository[company.Key] …

1
モバイル用のWCFまたはWebAPIを使用する利点はありますか?
Mono TouchとMono for Androidを使用した最初のモバイル開発を行っています。私が設計しているASP.NET MVC 4サイトと通信してほしい。私は過去にWCFとWebAPIを使用したことがありますが、このコンテキストで他のものを使用するよりも定量化できる利点があるかどうか疑問に思っていますか?

2
述語ビルダー拡張メソッドの作成
現在、複数の列でのフィルタリングを許可している剣道UIグリッドがあります。外側のswitchステートメントを削除する代替アプローチがあるかどうか疑問に思っていますか? 基本的には、拡張メソッドを作成して、フィルターを適用できるようIQueryable<T> にしたいのですが、外側のcaseステートメントを削除して、列名を切り替える必要がないようにします。 private static IQueryable<Contact> FilterContactList(FilterDescriptor filter, IQueryable<Contact> contactList) { switch (filter.Member) { case "Name": switch (filter.Operator) { case FilterOperator.StartsWith: contactList = contactList.Where(w => w.Firstname.StartsWith(filter.Value.ToString()) || w.Lastname.StartsWith(filter.Value.ToString()) || (w.Firstname + " " + w.Lastname).StartsWith(filter.Value.ToString())); break; case FilterOperator.Contains: contactList = contactList.Where(w => w.Firstname.Contains(filter.Value.ToString()) || w.Lastname.Contains(filter.Value.ToString()) || (w.Firstname + " " …

5
抽象DAL-内部クラスでインターフェイスを使用しますか?
データアクセスレイヤー(DAL)と緊密に結合されたビジネスロジックレイヤー(BLL)があります。次のように呼び出します。 using (FooData data = new FooData()) { data.DoSomething(); } internalBLLだけがDALにアクセスできるように、すべてのデータクラスはであり、それらはロジッククラスと同じアセンブリにあることに注意することが重要です。 (ユニットテストを容易にするために)これらを分離するための1つのアイデアは、IFooDataのようなIDataClassインターフェイスを作成することです。インターフェイスを実装するためにデータクラスをパブリックにする必要があるため、最初は問題だと思いました。ただし、メソッドをパブリックにする必要がある場合でも、データクラスを内部に保持できるはずです。 public interface IFooData { void DoSomething(); } internal class FooData : IFooData // Notice the class is internal { public void DoSomething(); // Method is public, but that's ok because class is internal } したがって、メソッドがパブリックであっても、クラス自体は内部であるため、BLLアクセスのみを許可する必要があります。 このアプローチには本質的に問題がありますか?DALを公開して世界に公開することなく、ユニットテストのためにDALを抽象化するより良い方法はありますか?

3
Objective-C / iPhone開発に必要なC / C ++の知識はどのくらいですか?
まず、少し背景。私は.Net開発者(C#)であり、Web開発とデスクトップアプリケーションの両方で5年以上の経験があります。私はしばらくの間、iPhoneの開発を調査したいと思っていましたが、何らかの理由で常に別の側面から見逃されていました。ようやく潜在的なプロジェクトが地平線上にあり、今、このことを学ぶために全力で取り組んでいます。 私の質問はこれです。私は学生時代からC / C ++プログラミングを行っていません。それ以来、管理された土地に住んでいます。iOS開発者として成功するために必要な知識はどれくらいありますか?明らかに、メモリ管理は私が意識しなければならないものです(ただし、iOS 5では、ARCと呼ばれるものがあり、私の生活をより簡単にするはずです)。私はC APIについて話しているだけではありません(たとえば、数値の罪を取得するためにsin()関数を呼び出します)。それがGoogleの目的です。私は、平均的なC#開発者が知らない基本的なC / C ++イディオムについて話しています。
8 c#  c  iphone  ios 


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