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

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

5
データベースに何かが存在するかどうかを確認し、高速で失敗するか、データベース例外を待つ必要がありますか
2つのクラスがある: public class Parent { public int Id { get; set; } public int ChildId { get; set; } } public class Child { ... } 割り当てるときChildIdにParent、それが例外をスローするDB用DBまたは待機中に存在する場合、私が最初に確認する必要がありますか? 例(Entity Framework Coreを使用): 注:これらの種類のチェックは、Microsoftの公式ドキュメントでもインターネット全体で行われます:https : //docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using- mvc / handling-concurrency-with-the-entity-framework-in-an-asp-mvc-application#modify-the-department-controllerしかし、追加の例外処理がありますSaveChanges また、このチェックの主な目的は、APIのユーザーにわかりやすいメッセージと既知のHTTPステータスを返すことであり、データベースの例外を完全に無視することではないことに注意してください。そして、例外がスローされる唯一の場所は、内部にあるSaveChangesかSaveChangesAsyncを呼び出すときに例外がありません...コールFindAsyncまたはAny。そのため、子が存在するが以前に削除されていた場合SaveChangesAsync、同時実行例外がスローされます。 これは、foreign key violation「ID {parent.ChildId}の子が見つかりませんでした」と表示するために、例外の書式設定がはるかに困難になるという事実のために行いました。 public async Task<ActionResult<Parent>> CreateParent(Parent parent) { // is this …

7
C#とJavaが言語の半分であるというこの声明はどういう意味ですか?[閉まっている]
記事:Why POCOには、次の文があります。 Maciej Sobczak氏は、「誰かが私に言語の半分を教えてくれて、それが自分自身の保護のためだと言っているのが好きではない」と言います。 私にもかかわらず、彼は何を意味するのか理解していないC#は、Microsoftが所有しているとのJava、Oracleによって所有され、それは彼らが言語の半分を保持するという意味ではありません、それをしませんか?私はその文を証明する証拠を見つけられませんでした、そして私はこれについて本当に興味があります。そして、「私自身の保護のため」の部分についてさらに興味があります。
32 java  c#  microsoft  oracle 

4
F#にインタラクティブモードがあり、C#がないのはなぜですか?
F#は、対話型REPLですぐに使用できます。C#には何もありません。実際、完全なプロジェクトをセットアップせずに遊ぶのは少し難しいです(ただし、LINQpadは機能しますが、PowerShell経由でも実行できます)。 F#で対話型コンソールを使用できるようにするが、C#で実装するのが困難になる言語について根本的に異なるものはありますか? 何年も後に人々はまだこの質問に来ているので、私は今多くの選択肢があることに注意すべきです。PowerShell(最新のすべてのWindowsマシンにプリインストールされている)を使用して、.Netフレームワークで遊ぶことができます。または、LINQpadを使用して、任意のc#コードのプロトタイプを作成できます。それとも、使用することができますScriptCsをかあなたのようなオンラインjsfiddle型環境を使用することができますComplify.netまたはJsilを。たくさんのオプション。
32 c#  .net  tools  f# 

10
インタビューの中で「C#で嫌いな5つのことを教えてください」という質問に答えるのが難しいのはなぜですか [閉まっている]
ではポッドキャスト73、ジョエル・スポルスキとジェフ・アトウッドは、他の科目の中で、「誰もが自分の好きなプログラミング言語について憎むべきで5つのことを」について説明します。 現在のツールチェーンに満足している場合は、切り替える必要はありません。ただし、お気に入りのプログラミング言語について嫌いな5つのことをリストできない場合は、まだ判断するのに十分な知識がないと思います。代替案を認識し、使用しているものに健全な批判的な目を向けることは良いことです。 興味があるので、インタビューした候補者にこの質問をしました。C#¹について嫌いなことを少なくとも1つも引用できませんでした。 どうして?この質問で何がそんなに難しいのですか?インタビューのストレスの多いコンテキストのために、この質問がインタビュー対象者によって答えられないのはなぜですか? この質問について、面接を悪くする何かがありますか? 明らかに、C#が完璧であることを意味するものではありません。私は自分がC#について嫌いな5つのことのリストを持っています: ジェネリックに可変数の型がない(params引数の場合と同様)。 Action<T>、 Action<T1, T2>、 Action<T1, T2, T3>、 ⁞ 真剣に! Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> F#のような測定単位のサポートの欠如。 読み取り専用プロパティの欠如。private readonly読み取り専用プロパティが必要なたびにバッキングフィールドを書き込むのは退屈です。 デフォルト値を持つプロパティの欠如。そして、はい、パラメーターなしのコンストラクターでそれらを初期化し、他のすべてのコンストラクターから呼び出すことができることを知っています。しかし、私はしたくありません。 多重継承。はい、それは混乱を引き起こし、ほとんどの場合それを必要としません。いくつかの(非常にまれな)場合でも有用であり、混乱は同じ名前のメソッドを含むいくつかのインターフェイスを継承するクラスにも当てはまります(C#で解決されました)。 このリストは完全にはほど遠いものであり、強調すべき点ははるかに多く、特に私のものよりもはるかに優れています。 ¹少数の人々は、.NET Frameworkの一部のアセンブリまたはフレームワークに一部のライブラリがないことを批判したり、CLRを批判したりしました。質問は言語自体に関するものであり、.NET Frameworkのコアにある否定的なもの(たとえばTryParse、文字列をいくつかの型に解析したい場合は、すべての型について繰り返す必要があります)、JSONまたはWCFについての答えは完全にトピック外です。
32 c#  interview 

10
GUIDを主キーとして使用する
通常、データベースの主キーとして自動インクリメントIDを使用します。GUIDを使用する利点を学ぼうとしています。私はこの記事を読みました:https : //betterexplained.com/articles/the-quick-guide-to-guids/ これらのGUIDは、アプリケーションレベルでオブジェクトを識別するために使用されることを理解しています。データベースレベルでプライマリキーとしても保存されますか。たとえば、次のクラスがあったとします: public class Person { public GUID ID; public string Name; .. //Person Methods follow } メモリ内に新しい人物を作成し、その人物をデータベースに挿入したいとします。これをやってもいいですか: Person p1 = new Person(); p1.ID=GUID.NewGUID(); PersonRepository.Insert(p1); GUIDを主キーとする数百万の行を含むデータベースがあったとします。これは常に一意ですか?GUIDを正しく理解していますか? 以前にこの記事を読んだ:http : //enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/。GUIDと整数の間の幸せな媒体を主キーとして推奨するように見えるので、少し混乱します。 編集11/06/18 Guidsはintよりも自分の要件に適していると信じるようになりました。私は最近CQRSをより多く使用しており、GUIDはよりうまく適合しています。 一部の開発者は、GUIDをドメインモデルの文字列としてモデル化することに注意してください。例:https : //github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs-この場合:IdentityGuidは文字列としてモデル化されたGUIDです。ここに記載されていること以外にこれを行う理由はありますか?カスタム値オブジェクトまたはGUIDを分散システムのエンティティ識別子として使用しますか?。GUIDを文字列としてモデル化するのは「通常」ですか、それともモデルとデータベースでGUIDとしてモデル化する必要がありますか?

2
適切なデザインパターンの選択
デザインパターンを活用することの重要性は常に認識しています。他の開発者がどのように最も適切な開発者を選ぶかについて興味があります。決定に役立つ一連の特性(フローチャートなど)を使用していますか? 例えば: オブジェクトは関連しているが、具象クラスを指定したくない場合は、Abstractを検討してください インスタンス化が派生クラスに委ねられている場合は、Factoryを検討してください 集合オブジェクトの要素に順番にアクセスする必要がある場合は、Iteratorを試してください または何か似たような?

5
C#とJavaが参照の等価性を「==」のデフォルトとして使用するのはなぜですか?
私はしばらくの間、JavaとC#(および他の言語)がデフォルトでの等価性を参照する理由を熟考してきました==。 私が行うプログラミング(確かにプログラミングの問題のごく一部にすぎません)では、オブジェクトを比較するとき、参照の等価性ではなく、論理的な等価性がほとんど常に必要です。私は、これらの言語の両方が、==論理的な平等性を持ち.ReferenceEquals()、参照の平等性を使用するのではなく、このルートを採用した理由を考えようとしました。 明らかに、参照の等価性を使用することは実装が非常に簡単で、非常に一貫した動作を提供しますが、今日見られるほとんどのプログラミング手法にうまく適合するとは思えません。 論理比較を実装しようとすることの問題について無知に思われたくはありません。また、すべてのクラスで実装する必要があります。また、これらの言語はかなり前に設計されたものであることに気づきましたが、一般的な疑問が残っています。 これにデフォルトを設定することの大きな利点はありますか、それとも単にデフォルトの動作が論理的等価であるべきであり、クラスに論理的等価性が存在しない場合に参照の等価性にデフォルト設定することは妥当と思われますか?

5
JavaScriptのモジュール性、サーバーベースのMVCおよびビジネスリアリティ
これは非常に広範な質問であることを理解していますが、この問題のさまざまな側面を個別に扱っており、すべての概念と技術をまとめるのに苦労しています。 答えには次のテクノロジーを含めるように指定したいと思います。 C# MVC 3 w / Razor Javascript w / jQuery それ以上のもの(Backbone.js、Entity Frameworkなど)は、次の質問への回答に役立つ場合、提案として歓迎します。 上記のテクノロジーを使用して、スケーラビリティとリッチで高速でクリーンなUIを作成する能力を維持しながら、コードとロジックを整理するための最適な戦略は何ですか? 理想的には、ビジネス/企業環境で展開されているソリューションに焦点を当てるべきです。その際、上記の技術リストは変更されないため、「現在使用しているyyyの代わりにxxxを使用する必要があります」というソリューションを提供しないでください。 バックグラウンド 私は毎日jQueryを使用しており、ASP.NETのMVCを採用しており、C#で長い間作業しています。そのため、これらのテクノロジーに関する中級から上級の知識を前提としたソリューションを提示できます。 質問をより小さな部分に整理して、より簡単に回答できるようにします。 1.プロジェクトの構造 ASP.NET MVC(Visual Studio 2010)で作業していることを考えると、このタイプのアプリケーションのメインレイアウトをある程度受け入れられるディレクトリ構造ソリューションが必要です。ブランチのようなものだと思いますが、各フォルダーに含まれる内容と、アプリの他の領域との連携についてもう少し詳しく説明します。 2.データアクセス APIタイプの構造で、できる限りデータアクセスをモジュール化したいと思います。あなたはPOCOオブジェクト(多くの仮定することができUser、UserGroup、Customer、OrderHeader、OrderDetails、など)だけでなく、データ集約型SQLと慎重なUIのレンダリングを必要とするいくつかの複雑なレポートがあるでしょう。 EF + LINQは前者にとっては素晴らしいですが、後者にとってはそれほどではありません。私は、両方のシナリオに適合すると思われるものを、過度に複雑または過度に単純にすることなく見つけられません。 3.クライアント側のコード編成とUIレンダリング ほとんどの開発者が最初にjQueryを採用したように、どこに行く必要があるとしてもコードをまとめ上げるというtrapに陥りましたが、すぐにそれが積み重なってくなりました。以来、飛躍的に進歩していますが、コードを繰り返し実行せずにコードをモジュール化し、UIのさまざまな部分を操作するのに苦労しています。 例として、私が書くかもしれない典型的なコードは次のようになります。気になることはコメントしました(それ以降、遅延AJAX呼び出しの使用に変更し、実際のデータ要求をDOM操作から分離していることに注意してください): $('#doSomethingDangerous').click(function () { // maybe confirm something first if (confirm('Are you sure you want to do this?')) { …

7
KeyValuePairのような事前に構築された構造に対して2プロパティクラスを使用する必要があるのはいつですか?
a KeyValuePairやa などの事前に構築された汎用構造を使用する代わりに、いつ独自のクラスにデータのキー/値型を配置する必要がありますTupleか? たとえば、私が作成するほとんどのComboBoxには、DisplayNameとValueが含まれています。これは、新しいクラスをいつ追加し、いつKeyValuePairを使用するかを決定しようとしている種類のデータです。 私は現在iCalendar、を使用するものに取り組んでおり、選択したユーザーのデータは最終的key1=value1;key2=value2;に文字列のタイプに結合されます。最初にデータをaに入れることから始めましたKeyValuePair<string,string>が、今ではそれが代わりに独自のクラスであるのか疑問に思っています。 全体として、KeyValuePair2プロパティオブジェクトのような既存の構造/クラスを使用することを決定する際にどのガイドラインが使用されるか、また、どのような状況で他のオブジェクトを使用するかを知ることに興味があります。
31 c#  coding-style 

7
ストアドプロシージャの代わりにORMの使用を提案するにはどうすればよいですか?
私は、すべてのデータアクセスにストアドプロシージャのみを使用している会社で働いています。そのため、新しいプロシージャを実行する必要があるコミットごとにローカルデータベースの同期を維持するのは非常に面倒です。私は過去にいくつかの基本的なORMを使用しましたが、この経験ははるかに優れており、よりクリーンです。今後の開発のために何らかのORMを使用することを検討していることを開発マネージャーとチームの残りに提案したいと思います(チームの残りはストアドプロシージャに精通しており、他のことは一度も使用していません)。現在のアーキテクチャは、.NET 1.1のように記述された.NET 3.5です。ActiveRecordの奇妙な実装を使用し、コードビハインドファイルでループされる型指定のないDataSetを返す「ゴッドクラス」を使用します。クラスは次のように機能します。 class Foo { public bool LoadFoo() { bool blnResult = false; if (this.FooID == 0) { throw new Exception("FooID must be set before calling this method."); } DataSet ds = // ... call to Sproc if (ds.Tables[0].Rows.Count > 0) { foo.FooName = ds.Tables[0].Rows[0]["FooName"].ToString(); // other properties set …

5
プロパティの1つが必要ない場合のインターフェイスの実装
とても簡単です。私はインターフェイスを実装していますが、このクラスには不要なプロパティが1つあり、実際には使用しないでください。私の最初のアイデアは、次のようなことをすることでした。 int IFoo.Bar { get { raise new NotImplementedException(); } } これ自体に問題はないと思いますが、「正しい」とは感じません。他の誰かが以前に同様の状況に遭遇したことはありますか?もしそうなら、どのようにアプローチしましたか?

9
クラスを設計して、個々のプロパティではなくクラス全体をパラメータとして取得する
たとえば、広く共有されているクラスと呼ばれるアプリケーションがあるとしUserます。このクラスは、ユーザー、ID、名前、各モジュールへのアクセスレベル、タイムゾーンなどに関するすべての情報を公開します。 ユーザーデータは明らかにシステム全体で広く参照されていますが、何らかの理由で、このユーザーオブジェクトをそれに依存するクラスに渡すのではなく、個々のプロパティを単に渡すようにシステムが設定されています。 ユーザーIDを必要とするクラスは、userIdパラメーターとしてGUID を必要としますが、ユーザー名も必要な場合があります。そのため、別のパラメーターとして渡されます。場合によっては、これは個々のメソッドに渡されるため、値はクラスレベルでまったく保持されません。 Userクラスから別の情報にアクセスする必要があるたびに、パラメーターを追加して変更する必要があり、新しいオーバーロードの追加が適切でない場合は、メソッドまたはクラスコンストラクターへのすべての参照も変更する必要があります。 ユーザーはほんの一例です。これは、コードで広く実践されています。 これはオープン/クローズの原則に違反していると思うのは正しいですか?既存のクラスを変更するだけでなく、そもそもクラスを設定して、将来的に広範囲の変更が必要になる可能性が非常に高くなりますか? Userオブジェクトを渡したばかりの場合は、作業しているクラスに少し変更を加えることができます。パラメータを追加する必要がある場合は、クラスへの参照に数十の変更を加える必要があります。 この慣行によって他の原則が破られていますか?おそらく依存関係の逆転?抽象化を参照しているわけではありませんが、ユーザーは1種類しかないため、ユーザーインターフェイスを持つ必要はありません。 基本的な防衛プログラミングの原則など、違反している他の非ソリッドの原則はありますか? 私のコンストラクタは次のようになります: MyConstructor(GUID userid, String username) またはこれ: MyConstructor(User theUser) 投稿編集: 「パスIDまたはオブジェクト?」で質問に回答することが提案されています。これは、どちらの方向に進むかの決定が、この質問の中心にあるSOLID原則に従う試みにどのように影響するかという質問には答えません。
30 java  c#  design  solid 

14
リストが利用可能なときに配列を使用する理由はありますか?[閉まっている]
List<T>C#では、配列でできることはすべて実行できるように思われます。また、配列と同じくらいメモリとパフォーマンスが効率的であるようです。 それでは、なぜ配列を使用したいのでしょうか? APIや他の外部制約(メイン関数など)で配列を使用する必要がある場合については明らかに質問していません...自分のコードで新しいデータ構造を作成することについてのみ質問しています。
30 c#  data-types 

8
辞書とリスト
それで私はDictionary<int, int>今日仕事に出くわしました。おそらくList<int>代わりにa を使用したので、これは私には奇妙に思えました。違いはありますか?一方の構造がもう一方の構造よりも優先されるユースケースがありますか?

3
Closures / Lambdas /…に対するC#、Java、Scalaのアプローチのメリットとデメリットは何ですか?
Project Lambda(JSR 335)のメーリングリストに送信されたBrian Goetzの電子メールPeek Past lambdaで表明された実装のアイデアと懸念と、C#とScalaの技術的な実装の違いは何ですか? メールから: 「たぶんラムダは単に内部クラスのインスタンスであるべきで、それは本当にシンプルだろう」という道を探りましたが、最終的には「関数は言語の未来にとってより良い方向である」という立場になりました。 そしてさらに: 世界のオブジェクトであるラムダは、この将来の可能性と矛盾しています。ラムダは関数の世界観ではありません。この柔軟性を維持することは、ラムダにオブジェクト性の外観でさえ負荷をかけないことを支持するポイントの1つです。 結論: Lambdas-are-functionsはドアを開きます。Lambdas-are-objectsはそれらを閉じます。 これらのドアが開いたままになるのを好む。 また、Redditスレッドのユーザーからのコメントは次のとおりです。 私は実際にこれについてNeal Gafterにメールしました。彼の説明についての私の限られた理解では、C#と現在のJavaデザインは、デリゲートは実際にはオブジェクトであり、関数型ではありません。JavaはC#のラムダの短所から学び、それらを避けるべきだと彼は信じているようです(C#がJavaの短所から学び、最初にそれらを避けたように)。 「Lambdas-are-functions」アプローチが「Lambdas-are-objects」よりも多くの機会を将来可能にするのはなぜですか?誰かがどのような違いが存在し、それらがコードの記述方法にどのように影響するかを説明できますか? Scalaの物事が「うまくいく」ことを見て、C#/ Java(8)で採用/提案されているアプローチについて何かが欠けていると考え続けています。
30 c#  java  scala  lambda  closures 

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