System.Array. не содержит определения для & ldquo; ToList & rdquo;

Было ли много ненужных переменных (например, объясненных в этом случае) причиной проблемы производительности в C #?

Нет, они не будут.

Компилятор достаточно интеллектуальный, чтобы удалить все ненужные вещи при компиляции в режиме деблокирования и оптимизировать ваш код:

public string Foo()
{
    return "foo bar";
}

или более точно, чтобы:

.method public hidebysig instance string Foo() cil managed
{
    .maxstack 1
    .locals init (
        [0] string str)
    L_0000: ldstr "foo bar"
    L_0005: stloc.0 
    L_0006: ldloc.0 
    L_0007: ret 
}

, который по сравнению со своим аналогом режима отладки совсем другой:

.method public hidebysig instance string Foo() cil managed
{
    .maxstack 1
    .locals init (
        [0] string _foo,
        [1] string CS$1$0000)
    L_0000: nop 
    L_0001: ldstr "foo bar"
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: stloc.1 
    L_0009: br.s L_000b
    L_000b: ldloc.1 
    L_000c: ret 
}

Это определенно не то, о чем вам следует беспокоиться с точки зрения производительности. О чем вы должны беспокоиться - это читаемость вашего кода, и этот оптимизированный пример кода кажется более читаемым, чем ваша версия.

Таким образом, вы можете доверять компилятору, который постоянно совершенствуется и может оптимизировать такие ситуации.

33
задан fearoffours 4 April 2011 в 12:22
поделиться