昨日、誰かがor ではなく正規表現で使用[0123456789]した回答にコメントしました。おそらく、文字セットよりも範囲または桁指定子を使用する方が効率的であると私は言いました。[0-9]\d 私はそれを本日テストすることに決め、驚いたことに(少なくともC#の正規表現エンジンでは)\d他の2つのどちらよりも効率が悪く、それほど大きな違いはないようです。これは、実際に数字を含む5077の1000個のランダムな文字からなる10000個のランダムな文字列のテスト出力です。 Regular expression \d took 00:00:00.2141226 result: 5077/10000 Regular expression [0-9] took 00:00:00.1357972 result: 5077/10000 63.42 % of first Regular expression [0123456789] took 00:00:00.1388997 result: 5077/10000 64.87 % of first 次の2つの理由から、これは驚きです。 範囲はセットよりもはるかに効率的に実装されると思っていたでしょう。 \dがよりも悪い理由を理解できません[0-9]。\d単に省略形以上のものがあり[0-9]ますか? ここにテストコードがあります: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Text.RegularExpressions; namespace SO_RegexPerformance …
私はと呼ばれるクラスの持っているOrderような特性を有しているOrderId、OrderDate、Quantity、とTotal。このOrderクラスのリストがあります: List<Order> objListOrder = new List<Order>(); GetOrderList(objListOrder); // fill list of orders 次に、Orderオブジェクトの1つのプロパティに基づいてリストを並べ替えます。たとえば、注文日または注文IDで並べ替える必要があります。 C#でこれを行うにはどうすればよいですか?
Enum.Parseという概念を拡張する関数を構築しています Enum値が見つからない場合にデフォルト値を解析できるようにします 大文字と小文字は区別されません だから私は以下を書きました: public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { if (string.IsNullOrEmpty(value)) return defaultValue; foreach (T item in Enum.GetValues(typeof(T))) { if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item; } return defaultValue; } エラー制約は特別なクラスにはできませんSystem.Enum。 十分に公平ですが、Generic Enumを許可する回避策はありますか、またはParse関数を模倣して型を属性として渡す必要があります。これにより、醜いボックス化の要件がコードに強制されます。 編集以下のすべての提案は感謝されています。 解決しました(大文字と小文字を区別しないようにループを抜けました-XMLの解析時にこれを使用しています) public static class EnumUtils { public static T ParseEnum<T>(string value, T …
帰国の違いは何であるIQueryable<T>対のIEnumerable<T>一方が他方よりも優先されなければならないときは、? IQueryable<Customer> custs = from c in db.Customers where c.City == "<City>" select c; IEnumerable<Customer> custs = from c in db.Customers where c.City == "<City>" select c;
型パラメーターがコンパイル時に不明であるが、実行時に動的に取得される場合にジェネリックメソッドを呼び出す最善の方法は何ですか? 次のサンプルコードについて考えてみましょう。Example()メソッド内で、変数に格納されたものをGenericMethod<T>()使用して呼び出す最も簡潔な方法は何ですか。TypemyType public class Sample { public void Example(string typeName) { Type myType = FindType(typeName); // What goes here to call GenericMethod<T>()? GenericMethod<myType>(); // This doesn't work // What changes to call StaticMethod<T>()? Sample.StaticMethod<myType>(); // This also doesn't work } public void GenericMethod<T>() { // ... } public static void …
ことを主な事柄の私の理解1からasyncとawait書きやすいコードを作成し、読みすることです-しかし、それらを使用している長時間のロジックを実行するためにバックグラウンドスレッドを産卵に等しいですか? 現在、最も基本的な例を試しています。インラインでコメントを追加しました。はっきりさせてくれませんか? // I don't understand why this method must be marked as `async`. private async void button1_Click(object sender, EventArgs e) { Task<int> access = DoSomethingAsync(); // task independent stuff here // this line is reached after the 5 seconds sleep from // DoSomethingAsync() method. Shouldn't it be reached immediately? …