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

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

2
C#にnew()制約があるのに、他の同様の制約がないのはなぜですか?
C#ジェネリックでは、と言うことで、型パラメーターの制約を宣言Tしてデフォルトコンストラクターを持たせることができますwhere T : new()。ただし、このような他の種類の制約は有効ではありません- new(string)たとえば、など 言語設計および/または実装の観点から、この理由は何ですか? コンストラクタの動作方法や、これを禁止する(または少なくとも難しくする)型システムの実装方法に何かありますか?もしそうなら、それは何ですか?default(T)実際にコンパイルさnew T()れた場所を読んだことを思い出しT : structます。これと関係があるのでしょうか? それとも、言語が複雑になりすぎないようにするために、単に設計上の決定を下しただけですか?

6
単純型の新しい制限を定義できるプログラミング言語
多くの言語が好きC++、C#とJavaあなたのような単純な型を表すオブジェクトを作成できるようにするintegerかをfloat。クラスインターフェイスを使用すると、演算子をオーバーライドし、値が100のビジネスルールを超えているかどうかをチェックするなどのロジックを実行できます。 一部の言語では、これらのルールをアノテーションまたは変数/プロパティの属性として定義することが可能かどうか疑問に思っています。 たとえば、C#次のように記述できます。 [Range(0,100)] public int Price { get; set; } または多分C++あなたは書くことができます: int(0,100) x = 0; このようなことが行われたことは一度もありませんが、保存前にデータ検証に依存するようになったことを考えます。この機能が言語に追加されていないのは奇妙です。 これが可能な言語の例を挙げていただけますか?

4
プロパティのXMLドキュメントには「取得または設定..」が必要ですか?
C#でのXMLコメントのベストプラクティスの推奨事項を探しています。プロパティを作成すると、予想されるXMLドキュメントは次の形式になっているようです。 /// <summary> /// Gets or sets the ID the uniquely identifies this <see cref="User" /> instance. /// </summary> public int ID { get; set; } しかし、プロパティのシグネチャはすでにクラスの外部クライアントが使用できる操作を示しているため(この場合は両方getとset)、コメントはおしゃべりすぎて、おそらく次のようになります。 /// <summary> /// ID that uniquely identifies this <see cref="User" /> instance. /// </summary> public int ID { get; set; } Microsoftは最初の形式を使用しているので、暗黙の慣習のようです。しかし、私が述べた理由のために、2番目の方が優れていると思います。 この質問は建設的ではないとマークされるのが得意であると理解していますが、コメントしなければならないプロパティの量は膨大であるため、この質問にはここにある権利があると思います。 …

6
MetroアプリにXAML / C#またはHTML5 / JavaSciptを使用する利点と欠点は?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 Metro AppsにXAML / C#またはHTML5 / JavaScriptを使用することに大きな利点または欠点があるかどうかを疑問に思っていました。
19 c#  javascript  html5  xaml  metro 

9
プライベートプロパティを作成する必要がありますか?
private string mWhatever; private string Whatever { get { return this.mWhatever; } set { this.mWhatever = value; } } 私は、個人であろうとなかろうと、すべてのメンバーのプロパティを作成する人々を見てきました...これは意味を成しますか?それを含むクラス内のメンバーへのアクセスを制御したい場合、1%のケースでそれが理にかなっていることがわかりました。すべてのメンバーのプロパティを使用しないと、矛盾が発生し、メンバーにはアクセス権があるかどうか(クラスのスコープ内で両方にアクセスできるため)。
19 c# 

2
共有状態がパフォーマンスを低下させるのはなぜですか?
私は、並行プログラミングの非共有原則の下で働いてきました。基本的に、すべてのワーカースレッドには、同じ状態の不変の読み取り専用コピーがあり、それらは(参照によっても)共有されることはありません。一般的に言えば、これは非常にうまく機能しています。 現在、誰かがすべてのスレッドが同時にアクセスしているロックなしシングルトンキャッシュ(静的辞書など)を導入しています。辞書は起動後に変更されることはないため、ロックはありません。スレッドセーフの問題はありませんでしたが、現在はパフォーマンスが低下しています。 問題は...ロックがないため、このシングルトンの導入がパフォーマンスに影響を与えるのはなぜですか?これを説明できるカバーの下で正確に何が起こっていますか? 確認するために、この新しいシングルトンにアクセスすることが唯一の変更であり、キャッシュへの呼び出しをコメントアウトするだけで確実に再作成できます。

6
プロパティには副作用がありますか
C#のプロパティには、状態の変化を通知することに加えて副作用がありますか? いくつかの異なる方法で使用されるプロパティを見てきました。初めてアクセスされたときに値を読み込むプロパティから、別のページへのリダイレクトを引き起こすなどの大きな副作用を持つプロパティにアクセスします。
19 c# 

11
推奨される.NET / C#コーディング標準?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 .NET / C#プロジェクトにとって、どのコーディング標準が重要だと思いますか?これは、そのような中括弧と間隔とペダントリーを扱うことから何でもありえます。または、.NET Frameworkのどの名前空間を避けるべきか、構成ファイルのベストプラクティスなど、より基本的な質問になる可能性があります。 単純に別の投稿である投稿を作成しないようにしてください。たとえば、中括弧に焦点を当てた投稿が1つあればよいでしょう。一方のスタイルと他方のスタイルをサポートするために2つは必要ありません。アイデアは、ペットの基準に投票することではなく、基準を作成する際に考慮すべきことを具体化することです。

3
再帰を使用せずにツリーを横断するにはどうすればよいですか?
メモリノードツリーが非常に大きいため、ツリーを走査する必要があります。各子ノードの戻り値を親ノードに渡します。これは、すべてのノードのデータがルートノードまでバブルするまで実行する必要があります。 トラバーサルはこのように機能します。 private Data Execute(Node pNode) { Data[] values = new Data[pNode.Children.Count]; for(int i=0; i < pNode.Children.Count; i++) { values[i] = Execute(pNode.Children[i]); // recursive } return pNode.Process(values); } public void Start(Node pRoot) { Data result = Execute(pRoot); } これは正常に機能しますが、コールスタックがノードツリーのサイズを制限するのではないかと心配しています。 への再帰呼び出しExecuteが行われないように、どのようにコードを書き直すことができますか?
19 c#  optimization  trees 

4
なぜasyncキーワードが必要なのですか?
.Net 4.5でasync / awaitをいじり始めました。私が最初に興味を持っているのは、なぜasyncキーワードが必要なのですか?私が読んだ説明は、マーカーであるため、コンパイラはメソッドが何かを待っていることを知っているというものでした。しかし、コンパイラはキーワードなしでこれを理解できるはずです。それでは、他に何をしますか?
19 c#  .net 

4
C#でポインタを実際に使用していますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 ポインターを使用することが良いまたは必要なオプションであるC#でコーディングしているときの状況は何ですか?安全でないポインターについて話している。
19 c#  pointers 

1
単体テスト:Linqによるアサーションの遅延
このような遅延アサーションを追加しても大丈夫ですか var actualKittens = actualKittens.Select(kitten => { Assert.IsСute(kitten); return kitten }); どうして?そのため、たとえば実体化されたコレクションを期待するステートメントでも、一度だけ反復できます。 CollectionAssert.AreEquivalent(expectedKittens, actualKittens.ToList()); また、Selectだけでなく、イテレータが定義され、多くのチェックとロジック(たとえば、いくつかのカウントとフィルタリング)を持つメソッドでもあります。 疑いの種は、テストが失敗した場合にそのようなコードを読み取り、デバッグする複雑さです。


2
GUIを設計および実装するための何らかの体系的な戦略はありますか?
Visual Studioを使用して、C#でGUIアプリケーションを作成しています。ツールボックスは気の利いたコンポーネントパレットとして機能し、ボタンやその他の要素(わかりやすくするために「コントロール」を意味する場合はボタンと呼びます)をフォームに簡単にドラッグアンドドロップできます。ただし、2つの問題が発生します。 そもそもボタンを作成するのは大変です。静的ではないフォームがある場合(つまり、ユーザーの操作に応じて実行時にボタンまたはその他のコントロールが作成される)、パレットをまったく使用できません。代わりに、使用しているメソッドでコンストラクターを呼び出して各ボタンを手動で作成し、ボタンの高さ、幅、位置、ラベル、イベントハンドラーなどを指定して手動で初期化する必要があります。フォームがどのように見えるかを確認することなく、これらのすべての化粧パラメータを推測する必要があるため、これは非常に退屈です。また、各ボタンに対して多くの行の反復コードを生成します。 ボタンに何かをさせるのも大変です。フル機能のアプリケーションでイベントを処理することは大きな苦痛です。私がこれを行う方法を知っている唯一の方法は、ボタンを選択し、そのプロパティのイベントタブに移動し、イベントをクリックしてOnClickイベントFormのコードを生成し、イベントの本文を入力することです。ロジックとプレゼンテーションを分離したいので、イベントハンドラーはすべて、適切なビジネスロジック関数の単一行呼び出しになります。しかし、これを多くのボタンに使用すると(たとえば、MS Wordなどのアプリケーションに存在するボタンの数を想像してください)、数Form十の定型イベントハンドラーメソッドでmyのコードを汚染し、これを維持するのは困難です。 これらのため、Hello Worldよりも複雑なGUIプログラムは、実際に作成するのは非常に非現実的です。明確にするために、最小限のUIを使用して作成するプログラムの複雑さを扱うことには何の問題もありません。ビジネスロジックコードをきちんと構築するために、かなりの能力を備えたOOPを使用できると感じています。しかし、GUIを開発するとき、私は立ち往生しています。とても退屈だと思うので、私は車輪を再発明しているように感じます。また、読んでいないGUIを適切に行う方法を説明する本がどこかにあります。 何か不足していますか?または、すべてのC#開発者は、繰り返しイベントハンドラーとボタン作成コードの無限のリストを受け入れるだけですか? (うまくいけば役立つ)ヒントとして、良い答えが語れると期待しています: OOP手法(ファクトリーパターンなど)を使用して、繰り返しボタンの作成を簡素化する 多くのイベントハンドラを単一のメソッドに結合し、Senderどのボタンがそれを呼び出したかを判断し、それに応じて動作する単一のメソッド XAMLおよびWindowsフォームの代わりにWPFを使用 もちろん、これらのいずれにも言及する必要はありません。どんな種類の答えを探しているのかということに関しては、最善の推測です。
18 c#  gui  visual-studio 

1
MicrosoftがWindowsストアアプリケーションでRESWのRESXモデルを削除したのはなぜですか?
Microsoftが.NETのRESXファイルからリソース管理システムを変更することにしたのはなぜですか? RESXには便利なコード生成機能があり、開発者にリソース名の自動補完を提供し、非常に読みやすいIMHOコードを出力しました。 私の知る限り、新しいRESW形式は同じ裸のXMLファイルですが、コード生成がなく、開発者はより多くのコードを記述し、コンパイル時のエラー検出を奪います。
18 c#  .net  winrt 

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