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

C#(「seesharp」と発音)は、Microsoftによって開発された、静的に型指定された高レベルのマルチパラダイムプログラミング言語です。C#コードは通常、Microsoftの.NETファミリのツールとランタイムを対象としています。これには、.NET Framework、.NET Core、Xamarinなどが含まれます。このタグは、C#またはC#の正式な仕様で記述されたコードに関する質問に使用します。

13
@ Html.HiddenForがASP.NET MVCのリストで機能しない
プロパティとしてリストを含むモデルを使用しています。このリストにSQL Serverから取得したアイテムを入力しています。リストをビューで非表示にして、POSTアクションに渡します。後で、jQueryを使用してこのリストにさらに項目を追加したい場合があります。これにより、配列が後で拡張するのに適さなくなります。通常は使用します @Html.HiddenFor(model => model.MyList) この機能を実現するためですが、何らかの理由でPOSTのリストは常にnullです。 非常に単純な質問ですが、MVCがこのように動作する理由を誰かが知っていますか?

6
ファイル全体を解凍せずにzipファイルからデータを読み取る方法
とにかく.Net(C#)には、ファイル全体を解凍せずにzipファイルからデータを抽出する方法はありますか? 単に私はおそらくzipファイルの最初からデータ(ファイル)を抽出したいだけです。明らかに、これは、圧縮アルゴリズムがファイルを確定的な順序で圧縮するかどうかに依存します。

11
関数の早期復帰の効率
これは、経験の浅いプログラマーとして頻繁に遭遇する状況であり、特に最適化しようとしている私の野心的でスピード重視のプロジェクトについて疑問に思っています。主要なCのような言語(C、objC、C ++、Java、C#など)と通常のコンパイラーの場合、これら2つの関数は同じくらい効率的に実行されますか?コンパイルされたコードに違いはありますか? void foo1(bool flag) { if (flag) { //Do stuff return; } //Do different stuff } void foo2(bool flag) { if (flag) { //Do stuff } else { //Do different stuff } } 基本的に、breakINGまたはreturnINGを早くするときに、直接的な効率のボーナス/ペナルティはありますか?スタックフレームはどのように関係していますか?最適化された特別なケースはありますか?これに大きな影響を与える可能性のある要因(インライン化や "Do stuff"のサイズなど)はありますか? 私は常に、マイナーな最適化よりも読みやすさを改善することを支持しています(パラメーターの検証でfoo1がよく見られます)。 そして、私は時期尚早の最適化の落とし穴を知っています...うーん、それらはいくつかのつらい思い出です。 編集:私は答えを受け入れましたが、EJPの答えはaの使用returnが実質的に無視できる理由をかなり簡潔に説明しています(アセンブリでreturnは、関数の終わりに「ブランチ」を作成しますが、これは非常に高速です。ブランチはPCレジスタを変更し、両方のためにも、キャッシュとパイプライン、かなり微小である。)特にこの場合のためにに影響を与える可能性があり、それは文字通り違いはありませんif/elseし、return関数の最後に同じブランチを作成します。


30
エラー5:Windowsサービスの開始時にアクセスが拒否されました
C#で作成したWindowsサービスを開始しようとすると、このエラーが発生します。 これまでの私のコード: private ServiceHost host = null; public RightAccessHost() { InitializeComponent(); } protected override void OnStart(string[] args) { host = new ServiceHost(typeof(RightAccessWcf)); host.Open(); } protected override void OnStop() { if (host != null) host.Close(); host = null; } アップデート#1 アカウントNETWORK SERVICEに権限を付与することで上記の問題を解決しましたが、別の問題が発生しました。 アップデート#2 サービスを開始できません。System.InvalidOperationException:サービス 'RightAccessManagementWcf.RightAccessWcf'には、アプリケーション(インフラストラクチャでない)エンドポイントがありません。これは、アプリケーションの構成ファイルが見つからなかったか、構成ファイルでサービス名に一致するサービス要素が見つからなかったか、サービス要素でエンドポイントが定義されていなかったことが原因である可能性があります。System.ServiceModel.ServiceHostBase.InitializeRuntime()at System.ServiceModel.ServiceHostBase.OnOpen()でSystem.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description、ServiceHostBase serviceHost)でSystem.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints(ServiceDescription description)でTimeSpanタイムアウト)System.ServiceModel.Channels.CommunicationObject。

24
ASP.NETでHTML /電子メールテンプレートを設定できますか?
かなりの数のメールを送信するサイトに取り組んでいます。ヘッダーとフッターの両方のテキスト、またはテンプレートを設定して、必要に応じてユーザーがこれらの電子メールを簡単に編集できるようにしたいと考えています。 HTMLをC#文字列リテラル内に埋め込むと、醜く、エスケープについて心配する必要があります。ヘッダーとフッターにフラットファイルを含めることは機能するかもしれませんが、それについて何かが正しくないと感じます。 どういう.ASPXわけか、ページをテンプレートとして使用するのが理想的であり、コードにそのページを提供するように伝え、メールに返されたHTMLを使用するだけです。 これを行う簡単で簡単な方法はありますか?この問題を解決するより良い方法はありますか? 更新: 標準の.aspxページをメールテンプレートとして使用できるようにする回答を追加しました。通常と同じようにすべての変数を置き換えたり、データバインディングを使用したりします。次に、ページの出力をキャプチャしてください。HTMLメールが届きました。 警告付きで更新!!!: 一部のaspxページでMailDefinitionクラスを使用していたのですが、実行中のサーバープロセス中にこのクラスを使用しようとすると失敗しました。MailDefinition.CreateMailMessage()メソッドは、常に何かを実行するわけではありませんが、参照するには有効なコントロールが必要なためです。このため、aspxページを使用する私のアプローチ、またはascxページを使用するMunのアプローチをお勧めします。
97 c#  asp.net  email  templates 

19
プロパティのプロパティがnullかどうかを確認するC#のエレガントな方法
C#で、この例ではPropertyCから値をプルしたいとし、ObjectA、PropertyA、PropertyBはすべてnullにすることができます。 ObjectA.PropertyA.PropertyB.PropertyC 最小限のコードでPropertyCを安全に取得するにはどうすればよいですか? 今私はチェックします: if(ObjectA != null && ObjectA.PropertyA !=null && ObjectA.PropertyA.PropertyB != null) { // safely pull off the value int value = objectA.PropertyA.PropertyB.PropertyC; } このようなもの(疑似コード)を実行するとよいでしょう。 int value = ObjectA.PropertyA.PropertyB ? ObjectA.PropertyA.PropertyB : defaultVal; nullコアレッシング演算子でさらに折りたたまれている可能性もあります。 編集元々、2番目の例はjsのようだと言っていましたが、jsでは機能しないことが正しく指摘されていたため、擬似コードに変更しました。

9
プログラムが使用する定数のグループを格納する最良の方法は何ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する 私のプログラムが使用するさまざまな定数があります... strings、ints、doublesなど...それらを格納する最良の方法は何ですか?Enumデータがすべて同じタイプではないため、が必要だとは思わない。手動で各値を設定したい。すべてを空のクラスに保存するだけですか?それとももっと良い方法がありますか?
97 c#  constants 

14
IList <T>ではなく常にIEnumerable <T>を返す必要がありますか?
アイテムのセットを返すDALまたはその他のコードを書いているとき、常にreturnステートメントを作成する必要があります。 public IEnumerable&lt;FooBar&gt; GetRecentItems() または public IList&lt;FooBar&gt; GetRecentItems() 現在、私のコードではIEnumerableを可能な限り使用しようとしていますが、これがベストプラクティスであるかどうかはわかりません。私が最も一般的なデータ型を返しながら、それが何をするのかを説明していたので、それは正しいように見えましたが、おそらくこれは正しくありません。
97 c#  ienumerable 

6
32ビットアプリケーションから64ビットレジストリを読み取る
AnyCPU用にコンパイルされたc#ユニットテストプロジェクトがあります。ビルドサーバーは64ビットマシンで、64ビットSQL Expressインスタンスがインストールされています。 テストプロジェクトは、次のようなコードを使用して.MDFファイルへのパスを識別します。 private string GetExpressPath() { RegistryKey sqlServerKey = Registry.LocalMachine.OpenSubKey( @"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" ); string sqlExpressKeyName = (string) sqlServerKey.GetValue( "SQLEXPRESS" ); RegistryKey sqlInstanceSetupKey = sqlServerKey.OpenSubKey( sqlExpressKeyName + @"\Setup" ); return sqlInstanceSetupKey.GetValue( "SQLDataRoot" ).ToString(); } このコードは32ビットワークステーションで問題なく機能し、NCoverでコードカバレッジ分析を最近有効にするまで、ビルドサーバーで問題なく機能しました。NCoverは32ビットCOMコンポーネントを使用するため、テストランナー(Gallio)は32ビットプロセスとして実行されます。 レジストリをチェックすると、下に「インスタンス名」キーがありません HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Microsoft SQL Server 32ビットモードで実行されているアプリケーションがWow6432Node外のレジストリにアクセスする方法はありますか?
97 c#  .net  64-bit  registry  32-bit 

3
.NETでのストアドプロシージャ印刷出力のキャプチャ
.NETのT-SQLストアドプロシージャから印刷出力をキャプチャすることは可能ですか? errorMessagingの手段として印刷を使用する多くのレガシープロシージャがあります。例、次のPROCからアウトプリントの「単語」にアクセスすることは可能ですか? -- The PROC CREATE PROC usp_PrintWord AS PRINT 'word' // Some C# Code to would like to pull out 'word' SqlCommand cmd = new SqlCommand("usp_printWord", TheConnection); cmd.CommandType = CommandType.StoredProcedure; // string ProcPrint = ???

9
WCFは、「セット」のないプロパティを制限します。回避策はありますか?
サービスメソッドの結果として渡すクラスがいくつかあり、そのクラスには取得専用のプロパティがあります。 [DataContract] public class ErrorBase { [DataMember] public virtual string Message { get { return ""; } } } サービス側で例外が発生しています: System.Runtime.Serialization.InvalidDataContractException:タイプ「MyNamespace.ErrorBase」のプロパティ「Message」の設定メソッドがありません。 このプロパティはゲッターとしてのみ使用する必要があります。ユーザーに値を割り当てることはできません。使用できる回避策はありますか?または、追加の属性が不足していますか?

4
単純なベンチマークでの奇妙なパフォーマンスの増加
昨日 、2つのポイント構造体(タプル)を追加するメソッドのいくつかの言語(C ++、C#、Java、JavaScript)のベンチマークとなった「.NET Struct Performance」というタイトルのChristoph Nahrの記事を見つけましたdouble。 結局のところ、C ++バージョンは実行に約1000ミリ秒(1e9反復)かかりますが、C#は同じマシン上で〜3000ミリ秒を下回ることはできません(x64ではパフォーマンスがさらに低下します)。 自分でテストするために、C#コード(およびパラメーターが値で渡されるメソッドのみを呼び出すように少し簡略化)を取り、i7-3610QMマシン(シングルコアの場合は3.1Ghzブースト)、8GB RAM、Win8で実行しました。 1、.NET 4.5.2を使用して、RELEASEビルド32ビット(私のOSは64ビットであるためx86 WoW64)。これは簡略版です: public static class CSharpTest { private const int ITERATIONS = 1000000000; [MethodImpl(MethodImplOptions.AggressiveInlining)] private static Point AddByVal(Point a, Point b) { return new Point(a.X + b.Y, a.Y + b.X); } public static void Main() { Point a = …

1
なぜC#コンパイラーはこのネストされたLINQクエリで狂ってしまうのですか?
次のコードをコンパイルしてみてください。コンパイラが3 GBを超えるRAM(私のマシンのすべての空きメモリ)とコンパイルに非常に長い時間がかかることがわかります(実際、10分後にIO例外が発生します)。 using System; using System.Linq; public class Test { public static void Main() { Enumerable.Range(0, 1).Sum(a =&gt; Enumerable.Range(0, 1).Sum(b =&gt; Enumerable.Range(0, 1).Sum(c =&gt; Enumerable.Range(0, 1).Sum(d =&gt; Enumerable.Range(0, 1).Sum(e =&gt; Enumerable.Range(0, 1).Sum(f =&gt; Enumerable.Range(0, 1).Count(g =&gt; true))))))); } } 誰かがこの奇妙な行動を説明できますか? CSバージョン:Microsoft(R)Visual C#コンパイラバージョン4.0.30319.17929 OS名:Microsoft Windows 7 Ultimate OSバージョン:6.1.7601 Service Pack 1 …
97 c#  linq 

7
ラージオブジェクトヒープの断片化
私が取り組んでいるC#/。NETアプリケーションは、遅いメモリリークに悩まされています。私はCDBをSOSと一緒に使用して何が起こっているのかを判断しようとしましたが、データが意味をなさないようです。 アプリケーションは64ビットフレームワークで実行されています。リモートホストへのデータを継続的に計算してシリアル化し、ラージオブジェクトヒープ(LOH)にかなりのビットをヒットしています。ただし、一時的なものであると予想されるほとんどのLOHオブジェクト:計算が完了してリモートホストに送信されたら、メモリを解放する必要があります。しかし、私が見ているのは、メモリの空きブロックでインターリーブされた多数の(ライブ)オブジェクト配列です。たとえば、LOHからランダムセグメントを取得します。 0:000&gt; !DumpHeap 000000005b5b1000 000000006351da10 Address MT Size ... 000000005d4f92e0 0000064280c7c970 16147872 000000005e45f880 00000000001661d0 1901752 Free 000000005e62fd38 00000642788d8ba8 1056 &lt;-- 000000005e630158 00000000001661d0 5988848 Free 000000005ebe6348 00000642788d8ba8 1056 000000005ebe6768 00000000001661d0 6481336 Free 000000005f214d20 00000642788d8ba8 1056 000000005f215140 00000000001661d0 7346016 Free 000000005f9168a0 00000642788d8ba8 1056 000000005f916cc0 00000000001661d0 7611648 Free 00000000600591c0 00000642788d8ba8 1056 00000000600595e0 …

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