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

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

3
オペレーターを短絡させてください|| および&&はnull許容ブール値に存在しますか?RuntimeBinderは時々そう考えます
条件付き論理演算子 ||と&&、短絡論理演算子としても知られるC#言語仕様を読みました。私には、これらがnull許容ブール値、つまりオペランド型Nullable<bool>(これも記述されているbool?)に存在するかどうかが不明であるように思われたので、非動的型付けで試してみました。 bool a = true; bool? b = null; bool? xxxx = b || a; // compile-time error, || can't be applied to these types これで問題は解決したようです(仕様を明確に理解できませんでしたが、Visual C#コンパイラの実装が正しいと仮定すると、今ではわかりました)。 しかし、私dynamicもバインディングを試してみたかったのです。だから私は代わりにこれを試しました: static class Program { static dynamic A { get { Console.WriteLine("'A' evaluated"); return true; } } static dynamic B { get …

8
なぜ演算子はメソッド呼び出しよりもはるかに遅いのですか?(構造体は古いJITでのみ遅くなります)
イントロ: 私はC#で高性能コードを書きます。はい、C ++を使用すると最適化が向上することはわかっていますが、それでもC#を使用することにしました。私はその選択について議論したくありません。むしろ、私のように、.NETFrameworkで高性能のコードを書き込もうとしている人たちから話を聞きたいと思います。 質問: 以下のコードの演算子が同等のメソッド呼び出しよりも遅いのはなぜですか? 以下のコードで2つのdoubleを渡すメソッドが、内部に2つのdoubleを持つ構造体を渡す同等のメソッドよりも速いのはなぜですか?(A:古いJITは構造体の最適化が不十分です) .NET JITコンパイラに単純な構造体を構造体のメンバーと同じくらい効率的に処理させる方法はありますか?(A:新しいJITを入手してください) 私が知っていると思うこと: 元の.NET JITコンパイラは、構造体を含むものをインライン化しませんでした。奇妙な与えられた構造体は、組み込みのように最適化されるべきであるが本当である小さな値型が必要な場合にのみ使用されるべきです。幸い、.NET3.5SP1と.NET2.0SP2では、特に構造体のインライン化の改善など、JITオプティマイザーにいくつかの改善が加えられました。(そうでなければ、彼らが導入した新しいComplex構造体がひどく実行されたので、彼らはそれをしたと思います...したがって、ComplexチームはおそらくJIT Optimizerチームをドキドキしていました。)したがって、.NET 3.5SP1より前のドキュメントはおそらくこの問題にはあまり関係ありません。 私のテストが示すこと: C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorwks.dllファイルのバージョンが3053以上であることを確認することで、新しいJITオプティマイザーがあることを確認しました。 JITオプティマイザに。しかし、それでも、私のタイミングと分解の両方が示すものは次のとおりです。 2つのdoubleを持つ構造体を渡すためのJIT生成コードは、2つのdoubleを直接渡すコードよりもはるかに効率が低くなります。 構造体メソッドのJIT生成コードは、引数として構造体を渡す場合よりもはるかに効率的に「this」を渡します。 明らかにループ内にあるため、乗数を使用しても、2つのdoubleを含む構造体を渡すよりも、2つのdoubleを渡す方が、JITのインライン化が向上します。 タイミング: 実際、逆アセンブルを見ると、ループ内のほとんどの時間はリストからテストデータにアクセスしているだけであることがわかります。ループのオーバーヘッドコードとデータへのアクセスを考慮に入れると、同じ呼び出しを行う4つの方法の違いは劇的に異なります。PlusEqual(Element)の代わりにPlusEqual(double、double)を実行すると、5倍から20倍のスピードアップが得られます。また、演算子+ =の代わりにPlusEqual(double、double)を実行する場合は10倍から40倍になります。ワオ。悲しい。 タイミングのセットは次のとおりです。 Populating List<Element> took 320ms. The PlusEqual() method took 105ms. The 'same' += operator took 131ms. The 'same' -= …

12
IE9 WebBrowser Controlは、SVGを含むIE9のすべての機能をサポートしますか?
最近、IE9ベータ版にアップグレードしました。ここで、.Net(3.5)WinFormアプリケーションでWebBrowserコントロールを使用したいと思います。 だから私の質問は、WebBrowserコントロールがIE9のすべてのプロパティと機能を示すかどうかです。 私の懸念は、SVGグラフィックをレンダリングしたいということです。

30
拡張メソッドのどのような利点を見つけましたか?[閉まっている]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 7年前に閉鎖されました。 C#の「非信者」は、拡張メソッドの目的は何かと私に尋ねていました。特に、元のオブジェクトのソースを所有/制御していない場合は、すでに定義されているオブジェクトに新しいメソッドを追加できることを説明しました。 彼は「なぜあなた自身のクラスにメソッドを追加しないのですか?」と提起しました。私たちは(良い意味で)ぐるぐる回っています。私の一般的な反応は、それがツールベルトの別のツールであり、彼の反応はそれがツールの無駄な無駄であるということです...しかし、私はもっと「啓発された」答えが得られると思いました。 自分のクラスに追加されたメソッドを使用できなかった(または使用すべきではなかった)拡張メソッドを使用したシナリオは何ですか?

14
X509Store証明書の問題。FindByThumbprintを検索
メソッドを使用すると問題が発生します X509Store.Certificates.Find public static X509Certificate2 FromStore(StoreName storeName, StoreLocation storeLocation, X509FindType findType, string findValue) { X509Store store = new X509Store(storeName, storeLocation); store.Open(OpenFlags.ReadOnly); try { //findValue = "7a6fa503ab57b81d6318a51ca265e739a51ce660" var results = store.Certificates.Find(findType, findValue, true); return results[0]; } finally { store.Close(); } } この場合、Findメソッドは0の結果(results.Count == 0)を返しますが、findValueを定数として指定すると、メソッドは証明書を検索します。 public static X509Certificate2 FromStore(StoreName storeName, StoreLocation storeLocation, …

9
C#の文字列から最後の文字を削除します。エレガントな方法?
私はこのような数値文字列を持っています2223,00。に変換したいと思い2223ます。これは、「、」の後に情報がない場合です。「、」の後に小数点以下2桁しかないと仮定します。 やった: str = str.Remove(str.Length - 3, 3); よりエレガントな解決策はありますか?たぶん別の機能を使用していますか?-明示的な数字を入れるのは好きではありません-
84 c#  .net  string 

10
毎日タスクを実行するようにC#Windowsサービスをスケジュールするにはどうすればよいですか?
C#(。NET 1.1)で記述されたサービスがあり、毎晩深夜にクリーンアップアクションを実行したいと考えています。すべてのコードをサービス内に含める必要があるので、これを実現する最も簡単な方法は何ですか?Thread.Sleep()ロールオーバーする時間の使用とチェック?


5
Environment.GetFolderPath(…CommonApplicationData)は、Vistaで引き続き「C:\ DocumentsandSettings \」を返します。
私が理解しているように、あなたはこのEnvironment.GetFolderPathメソッドを使用することになっているので、OSに依存しないコードがあります... WindowsXPはを使用しC:\Documents and Settings\ます。WindowsVistaはとを使用C:\ProgramDataしC:\Usersます。 私はWindowsVistaコンピュータで以下のコードを使用していますが、本来のC:\Documents and Settings\ディレクトリではなくディレクトリを返しC:\ProgramDataます...何かアイデアはありますか? string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); try { File.CreateText( Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\mycompany\\uid"); log.Debug("Created file successfully"); } catch (Exception ex) { log.Error("Unable to create the uid file: ", ex); }
84 c#  .net 


3
JTokenをJObjectに追加するにはどうすればよいですか?
JSON.Netを使用して、あるテキストから既存のJSONファイルにJSONオブジェクトを追加しようとしています。たとえば、次のようなJSONデータがある場合: { "food": { "fruit": { "apple": { "colour": "red", "size": "small" }, "orange": { "colour": "orange", "size": "large" } } } } 私はこのようにこれをやろうとしてきました: var foodJsonObj = JObject.Parse(jsonText); var bananaJson = JObject.Parse(@"{ ""banana"" : { ""colour"": ""yellow"", ""size"": ""medium""}}"); var bananaToken = bananaJson as JToken; foodJsonObj["food"]["fruit"]["orange"].AddAfterSelf(bananaToken); しかし、これはエラーを引き起こします: "Newtonsoft.Json.Linq.JProperty cannot have …
84 c#  json.net 

6
C#でIntをジェネリック列挙型にキャストする
C#のCast int to enumに似ていますが、私の列挙型はGenericTypeパラメーターです。これを処理するための最良の方法は何ですか? 例: private T ConvertEnum<T>(int i) where T : struct, IConvertible { return (T)i; } コンパイラエラーを生成します Cannot convert type 'int' to 'T' 完全なコードは次のとおりです。ここで、valueにはintまたはnullを含めることができます。 private int? TryParseInt(string value) { var i = 0; if (!int.TryParse(value, out i)) { return null; } return i; } private T? TryParseEnum<T>(string value) …
84 c#  generics  casting  enums 

7
System.IO.IOException:System.IO.Path.GetTempFileName()を使用する場合の「ファイルが存在します」-解像度?
私の顧客の1人は、私の製品を使おうとすると例外が発生しました。発生した例外のコールスタックを取得しました。その先頭は次のとおりです。 at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.__Error.WinIOError() at System.IO.Path.GetTempFileName() at System.Windows.Input.Cursor.LoadFromStream(Stream cursorStream) at System.Windows.Input.Cursor..ctor(Stream cursorStream) これをグーグルで検索すると、%TEMP%フォルダーに65535を超える一時ファイルがある場合にこの例外がスローされ、解決策は古い一時ファイルを単純にクリアすることであると述べているブログ投稿がたくさん見つかりました。お客様にそうするように依頼することはできますが、これは一時的な解決策にすぎない可能性があります。GetTempFileNameを頻繁に呼び出す他のソフトウェアを定期的に実行していると、問題が繰り返し発生します。 %TEMP%フォルダーをプログラムでクリアすることはできません。これは、他の何かに損傷を与える可能性があるためです。また、GetTempFileNameを呼び出す(代わりに独自の一時フォルダーを使用する)のは、私ではなくWPFコードであるため避けられません。 これに対する恒久的な解決策はありますか? 更新:%TEMP%フォルダーがログファイルでオーバーフローする問題は、自分のコードが原因ではなく、お客様のマシン上の他のサードパーティアプリケーションが原因である必要があることを確認しました。の実装についても調べましたがCursor.LoadFromStream、間違いはありません。一時ファイルを生成しますが、finallyブロック内で削除します。
84 c#  .net 


8
List <string>をDataGridViewコントロールにバインドする方法は?
シンプルList&lt;string&gt;なものがあり、DataGridView列に表示したいのですが。 リストにさらに複雑なオブジェクトが含まれる場合は、単にリストをそのDataSourceプロパティの値として確立します。 しかし、これを行うとき: myDataGridView.DataSource = myStringList; という列Lengthが表示され、文字列の長さが表示されます。 リストの実際の文字列値を列に表示するにはどうすればよいですか?

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