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

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

6
C#nullable文字列エラー
private string? typeOfContract { get { return (string?)ViewState["typeOfContract"]; } set { ViewState["typeOfContract"] = value; } } コードの後半では、次のように使用します。 typeOfContract = Request.QueryString["type"]; typeOfContract行の宣言で次のエラーが発生します: 型 'string'は、ジェネリック型またはメソッド 'System.Nullable <T>'でパラメーター 'T'として使用するために、null不可の値型である必要があります 何か案は?基本的に、私はアクションを実行する前に"type"存在することを確認したいと思いQueryStringます。
136 c#  nullable 

5
リモートホストのIPアドレスを取得する
ASP.NETには、プロパティ値からIPアドレスを提供できるプロパティをSystem.Web.HttpRequest含むクラスがあります。ServerVariablesREMOTE_ADDR ただし、ASP.NET Web APIからリモートホストのIPアドレスを取得する同様の方法が見つかりませんでした。 リクエストを行っているリモートホストのIPアドレスを取得するにはどうすればよいですか?

14
Enumは0または1で始まる必要がありますか?
次のEnumを定義したとしましょう。 public enum Status : byte { Inactive = 1, Active = 2, } 列挙型を使用するためのベストプラクティスは何ですか?1上記の例のように開始するか、次のように0(明示的な値なしで)開始する必要があります。 public enum Status : byte { Inactive, Active }
136 c#  .net  enums 

5
VS2015ビルドがDynamicでエラーメッセージなしで失敗する
JSONを返すコードの単体テストを書いていました。それが返す型は匿名型であるためdynamic、アサーションを行うためにオブジェクトをa にキャストするだけで、その値を検証することを考えました。 しかし、それを行うとビルドが失敗しますが、エラーメッセージは表示されません。これを非常に単純なコードで新しい単体テストプロジェクトで再現できました。 [TestMethod] public void TestMethod1() { var obj = new { someValue = true }; dynamic asDynamic = obj; Assert.IsTrue(asDynamic.someValue); } 失敗したビルドのスクリーンショットについては、以下を参照してください ただし、アサーションをコメント化すると、ビルドは成功します。 対照的に、LinqPad 5ベータ(Roslynコンパイラを使用)で次のコードを実行しましたが、問題はありませんでした。 var obj = new { someValue = true }; dynamic asDynamic = obj; Console.WriteLine((asDynamic.someValue == true).ToString()); 本当 何が起きてる?エラーは、私は私が使用している場合は言うことができない表示されていないのでdynamic、それがために使用するための過負荷を見つけることができない場合は、誤って、またはIsTrue()ためのdynamic、またはこれがコンパイラのバグかどうか(ただし、これは非常に疑わしいですが) 、コードに問題があるという証拠はありません)。 過負荷の問題については、試してみましたAssert.IsTrue((bool)asDynamic.someValue);が、ビルドはまだ失敗し、エラーメッセージは表示されません。 @RonBeyerのコメントに従って、私は以下のようなより多くのキャストを試みましたが、役に立たなかった: dynamic asDynamic …

7
Visual Studioで作成されたWindowsサービスをインストールする
Visual Studio 2010で新しいWindowsサービスを作成すると、InstallUtilとnet startを使用してサービスを実行するように指示するメッセージが表示されます。 私は次の手順を試しました: 新規プロジェクトファイルを作成->新規->プロジェクト-> Windowsサービス プロジェクト名:TestService プロジェクトをそのままビルドする(Service1コンストラクター、OnStart、OnStop) コマンドプロンプトを開き、「C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe」TestService.exeを実行します。 net start TestServiceを実行します。 ステップ4の出力 トランザクションインストールの実行。 インストールのインストール段階を開始します。 C:\ Users \ myusername \ Documents \ Visual Studio 2010 \ Projects \ TestService \ TestService \ obj \ x86 \ Debug \ TestService.exeアセンブリの進行状況については、ログファイルの内容を参照してください。 ファイルはC:\ …

7
「using」ブロックで、SqlConnectionは戻り時または例外時に閉じていますか?
最初の質問: 私が持っていると言います using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); string storedProc = "GetData"; SqlCommand command = new SqlCommand(storedProc, connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID)); return (byte[])command.ExecuteScalar(); } 接続は閉じられますか?技術的には私たちが最後に取得することはありませんので、}我々としてreturnその前に。 第二の質問: 今回は私が持っています: try { using (SqlConnection connection = new SqlConnection(connectionString)) { int employeeID = findEmployeeID(); connection.Open(); SqlCommand command = new …
136 c#  using  sqlconnection 

9
C#のGetHashCodeガイドライン
Essential C#3.0と.NET 3.5の本で次のことを読みました。 オブジェクトのデータが変更された場合でも、特定のオブジェクトの存続期間中のGetHashCode()の戻り値は一定(同じ値)である必要があります。多くの場合、これを実施するには、メソッドの戻り値をキャッシュする必要があります。 これは有効なガイドラインですか? .NETでいくつかの組み込み型を試してみましたが、これらはこのように動作しませんでした。
136 c#  .net  hashcode 

6
Visual Studio 2015でC#6サポートを無効にするにはどうすればよいですか?
バックグラウンド C#6を有効にしてVS 2015で開発しているプロジェクトがあり、C#6を使用せずにVS 2013を使用する開発者がプロ​​ジェクトを開く必要がある場合があります。 この特定のソリューション内でC#6を使用するつもりはありません(私が望むだけ)。 問題 Visual StudioとReSharperは、C#6がサポートされていない以前のバージョンのVisual Studioでソリューションを動作不能にする有用なC#6言語構成を提案しています。 私がしましたReSharperのC#6のサポートを無効にしますが、私はC#は、ソリューション全体を越えています/無効の上限に見えることはできません。 質問 ソリューション内またはVisual Studio 2015内でC#をC#5機能に制限するにはどうすればよいですか?

2
このオブジェクトの有効期限を延長するクロージャーはC#コンパイラのバグですか?
私がいくつかの極端に遭遇したとき、私はオブジェクトのライフタイムを(合法的に)延長する可能性についての質問に答えていましたC#コンパイラーの奇妙なコード生成(問題の場合は4.0。 私が見つけることができる最も短い再現は次のとおりです: staticを呼び出しているときにローカルをキャプチャするラムダを作成する 包含型のメソッド。 生成されたデリゲート参照を、それを含むオブジェクトのインスタンスフィールドに割り当てます。 結果:コンパイラーは、理由がない場合にラムダを作成したオブジェクトを参照するクロージャーオブジェクトを作成します。デリゲートの「内部」ターゲットは静的メソッドであり、ラムダ作成オブジェクトのインスタンスメンバーは不要です。デリゲートが実行されたときに触れられる(されない)。事実上、コンパイラーは、プログラマーがthis理由なしに取り込んだように機能します。 class Foo { private Action _field; public void InstanceMethod() { var capturedVariable = Math.Pow(42, 1); _field = () => StaticMethod(capturedVariable); } private static void StaticMethod(double arg) { } } リリースビルドから生成されたコード(「より単純な」C#に逆コンパイル)は、次のようになります。 public void InstanceMethod() { <>c__DisplayClass1 CS$<>8__locals2 = new <>c__DisplayClass1(); CS$<>8__locals2.<>4__this = this; // What's …

9
HTMLのエスケープテキスト
C#でHTMLのテキストをエスケープするにはどうすればよいですか?私はやってみたいです sample="<span>blah<span>" そして持っている <span>blah<span> html :(。ASP。ではなくC#を使用するタグ部分がある場合にのみ、何の問題もなくプレーンテキストとして表示されます。
136 c#  html  escaping 

14
DbContextとSetInitializerを使用してdatetime2の範囲外変換エラーを修正する方法
Entity Framework 4.1で導入されたDbContextおよびCode First APIを使用しています。 データモデルは、などの基本データ型を使用していますstringとDateTime。場合によって使用している唯一のデータ注釈はですが[Required]、それはどのDateTimeプロパティにもありません。例: public virtual DateTime Start { get; set; } DbContextサブクラスはまた、のようなシンプルかつルックスです。 public class EventsContext : DbContext { public DbSet<Event> Events { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Event>().ToTable("Events"); } } 初期化子は、今年か来年のいずれかで賢明な値にモデルの日付を設定します。 ただし、イニシャライザを実行すると、次の場所でこのエラーが発生しcontext.SaveChanges()ます。 datetime2データ型をdatetimeデータ型に変換すると、値が範囲外になりました。ステートメントは終了されました。 すべてがとても簡単なため、なぜこれが起こっているのか理解できません。編集するedmxファイルがないため、修正方法もわかりません。 何か案は?

6
構成ファイルを使用する代わりに、コードでlog4netを構成できますか?
log4netがapp.configログの設定にファイルを使用する理由を理解しています。コードを再コンパイルすることなく、情報のログ方法を簡単に変更できます。しかし、私の場合app.config、実行可能ファイルにファイルをパックしたくありません。また、ロギング設定を変更したくありません。 app.config?を使用するのではなく、コードでログを設定する方法はありますか? これが私の簡単な設定ファイルです: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\EventLog.txt" /> <appendToFile value="false" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="5" /> <maximumFileSize value="1GB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender"> </appender> …
136 c#  .net  logging  log4net 


9
フォルダーが存在しない場合、ファイルとフォルダーを作成するにはどうすればよいですか?
次のファイルを作成(または上書き)したいと想像してください。 C:\Temp\Bar\Foo\Test.txt File.Create(..)メソッドを使用すると、これを行うことができます。 ただし、次のいずれかのフォルダがない場合(上記のサンプルパスから) 温度 バー フー その後、DirectoryNotFoundExceptionがスローされます。 したがって、パスを指定した場合、そのパスのファイルを作成するために必要なすべてのフォルダを再帰的に作成するにはどうすればよいでしょうか。 TempまたはBarフォルダーは存在するがFooは存在しない場合...それも作成されます。 簡単にするために、セキュリティの問題がないと仮定しましょう-すべての権限は問題ありません。
136 c#  .net  file-access 


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