SORU
30 NİSAN 2013, Salı


Neden bu (null || !yapar TryParse) "şartlı sonuç yerel değişken" atanmamış;?

Aşağıdaki kodu oluratanmamış yerel değişken kullanın"" . numberOfGroups :

int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
    numberOfGroups = 10;
}

Ancak, bu kod gayet iyi çalışıyor (, ReSharper = 10 gereksiz diyor gerçi):

int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
    numberOfGroups = 10;
}

Bir şey eksik, ya da derleyici benim sevme || mıyım?

Bu dynamic sorunları (options yukarıda benim kod dinamik bir değişken oldu) neden indirdim. Soru hala kalırneden bunu yapamıyorum?

Bu kodyokderleme:

internal class Program
{
    #region Static Methods

    private static void Main(string[] args)
    {
        dynamic myString = args[0];

        int myInt;
        if(myString == null || !int.TryParse(myString, out myInt))
        {
            myInt = 10;
        }

        Console.WriteLine(myInt);
    }

    #endregion
}

Ancak, bu kodyok:

internal class Program
{
    #region Static Methods

    private static void Main(string[] args)
    {
        var myString = args[0]; // var would be string

        int myInt;
        if(myString == null || !int.TryParse(myString, out myInt))
        {
            myInt = 10;
        }

        Console.WriteLine(myInt);
    }

    #endregion
}

dynamic Bu bir etken olabilir mi bilmiyordum.

CEVAP
30 NİSAN 2013, Salı


Bu derleyici bir hata olduğundan eminim. İyi buluş!

Bir hata değil, Quartermeister gösterdiği gibi; dinamik true garip bir operatör uygulayabilir y asla başlatılması için neden olabilir. Edit:

Burada en az kopya:

class Program
{
    static bool M(out int x) 
    { 
        x = 123; 
        return true; 
    }
    static int N(dynamic d)
    {
        int y;
        if(d || M(out y))
            y = 10;
        return y; 
    }
}

Yasadışı olması için bir neden göremiyorum; eğer bool ile dinamik değiştirirseniz gayet güzel derler.

Aslında C ile buluşacağım# takım yarın; onlara bu konudan söz edeceğim. Hata için özür dilerim!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • aki6336

    aki6336

    14 AĞUSTOS 2008
  • Bad Lip Reading

    Bad Lip Read

    22 Mart 2011
  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011