il

    7

    2答えて

    私はprotobuf-netを使って自分のデータをシリアル化/逆シリアル化します。 私はいくつかの単純なクラスを持っているので、実際の問題はありません。 は、私の知る限りでは、いるProtobuf-netはシリアライズ/デシリアライズコードを作成するために、ILの生成を使用しています。私のモデルには読み込み専用のフィールドがありますが、ILでどのようにこのようなフィールドに書き込むことができるので

    5

    1答えて

    リフレクションを使用して実行時にメソッドのコピーを作成しようとしています。 私は以下のコードを持っています。 public static R CopyMethod<T, R>(Func<T, R> f, T t) { AppDomain currentDom = Thread.GetDomain(); AssemblyName asm = new AssemblyName()

    5

    1答えて

    は、次のILコードを考えてみましょう: .method public static void Main() { ldstr "Starts Here" call void [mscorlib] System.Console::WriteLine(string) .try { ldstr "Try Me!" call voi

    5

    2答えて

    Fodyを使用して、共通の例外フォーマットを持つメソッドからスローされたすべての例外をラップしようとしています。 だから私はこのようになります必要なインタフェースの宣言とクラスの実装追加しました: using System; using System.Diagnostics; using System.Reflection; using System.Threading.Tasks; [

    5

    1答えて

    .sの指示をどこから出すことができるのか本当に気にする必要がありますか?それともサイズにのみ影響しますが、実際のパフォーマンスは同じになりますか? 生成されたdllはAOTプラットフォームでも使用されます。結果として得られるAOT-edのdllは、.sとILなしで同じであるでしょうか? 私は

    5

    1答えて

    .method public static void Test<class T>(object A_0) cil managed { // Code size 13 (0xd) .maxstack 1 .locals init (!!T V_0) IL_0000: ldarg.0 IL_0001: isinst !!T IL_000

    6

    1答えて

    ILSpyでこのようなコンパイル後 Regex regex = new Regex("blah", RegexOptions.Singleline & RegexOptions.IgnoreCase); に見えるこのコード: Regex regex = new Regex("blah", RegexOptions.None); なぜそれが起こるん、それは.NET 3.5には一致しない正規表

    5

    1答えて

    私は最適化する必要があるが、同時にデバッグしやすいコードがあります。 私は私が使用するすべての値に文字列を割り当てるでしょう。 文字列が大きなパフォーマンスヒットを引き起こすか、JIT/AOTコンパイル時にstring.Internから取得した定数参照に変換されているため、単一の簡単な命令になりますか? 例: ILではldstr "gazilion lines"だろう。 それはJIT/AOTコンパ

    5

    1答えて

    スタック交換チームによって最も多くのオープンソースプロジェクトを見た後。私は、数回は、IL関数のコードをC#関数にインライン展開して書くことに気付きました。 あなたがdapper fileで見ることができる完璧な例。 私の推測では、コンパイラは、最も効率的であると感じられるのコードを生成しない、時にはあなただけのコンパイラのためにそれを行う必要があるということです。 通常の古いC#よりもILエミッ

    5

    1答えて

    は、私が書くことができます: public string FullName => $"{_firstName} {_lastName}"; と私は書くことができます:は static void Print(string message) => Console.WriteLine(message); 最初の例では、式は何かを返します。第二に、それはしません。 ここでは、追加の構文を必要とせずに「行動