Aracılığıyla paylaş


Visual Studio 2012'deki Visual C# Yeni Değişiklikleri

Visual C# içinde değişiklikler aşağıdaki tabloda listelenmiştir Visual Studio 2012 görebilir ya da engelleyebilecek Visual C# içinde Visual Studio 2010'de oluşturulmuş bir uygulamayı engellemek veya bu tür bir uygulama çalışma zamanı davranışını değiştirmek.

Kategori

Öğe

Tanımlama

Lambda ifadeleri

Değişkeni kullanabilirsiniz bir foreach deyim Döngünün gövdesi içinde yer alan bir lambda ifadesinde.

Kullanımı, bir foreach değişkeni bir iç içe geçmiş lambda ifadesinde artık beklenmeyen sonuçlar üretir.Aşağıdaki örnek değişkeni kullanır word lambda ifadesinde.

static void Main()
{
    var methods = new List<Action>();
    foreach (var word in new string[] { "hello", "world" })
    {
        methods.Add(() => Console.Write(word + " "));
    }

    methods[0]();
    methods[1]();
}

// Output in Visual Studio 2012: 
// hello world

// Output in Visual Studio 2010: 
// world world

LINQ deyimleri

Değişkeni kullanabilirsiniz bir foreach deyim Döngünün gövdesi içinde yer alan bir LINQ ifade.

Kullanımı, bir foreach LINQ ifade değişkeni artık beklenmeyen sonuçlar üretir.Aşağıdaki örnek değişkeni kullanır number LINQ sorgusunda.

static void Main()
{
    var lines = new List<IEnumerable<string>>(); 
    int[] numbers = { 1, 2, 3 };
    char[] letters = { 'a', 'b', 'c' };

    foreach (var number in numbers)
    {
        var line = from letter in letters
                   select number.ToString() + letter;

        lines.Add(line);
    }

    foreach (var line in lines)
    {
        foreach (var entry in line)
            Console.Write(entry + " ");
        Console.WriteLine();
    }
}
// Output in Visual Studio 2012: 
// 1a 1b 1c
// 2a 2b 2c
// 3a 3b 3c

// Output in Visual Studio 2010: 
// 3a 3b 3c
// 3a 3b 3c
// 3a 3b 3c

Adlandırılmış bağımsız değişkenler

Yöntem çağrısı Konumsal ve adlandırılmış bağımsız değişkenleri from yan etkileri şimdi soldan sağa ortaya bağımsız değişken listesinde.

Yöntem çağrısında birleştirilir Konumsal ve adlandırılmış bağımsız değişkenleri from yan etkileri soldan sağa üretilmektedir şimdi arama deyiminin bağımsız değişken listesinde.Aşağıdaki örnekte, TestMethod farklı siparişlerin Konumsal ve adlandırılmış bağımsız değişkenleri birleşimi kullanılarak çağrılır.

class Program
{
    static void Main(string[] args)
    {
        TestMethod(WriteLetter("A"), b: WriteLetter("B"), c: WriteLetter("C"));
        TestMethod(WriteLetter("A"), c: WriteLetter("C"), b: WriteLetter("B"));
    }

    static int WriteLetter(string letter)
    {
        Console.Write(letter + " ");
        return 1;
    }

    static void TestMethod(int a, int b, int c)
    { }

    // Output in Visual Studio 2012:
    // A B C A C B

    // Output in Visual Studio 2010:
    // B C A C B A
}

Aşırı yükleme çözünürlüğü

Aşırı yükleme çözünürlüğü kullanan çağrıları için geliştirilmiştir bağımsız değişkenleri adlandırılmış içeren erişim yöntemleri için params parametreleri.

Birden fazla çözünürlük aday bulunduğunda, aşırı yükleme çözünürlüğü türü adlandırılmış bağımsız değişkenler için en yakın eşleşmeyi tercih eder.Yalnızca türü eşleşmeler aşırı adaylar eşit derecede iyi olduğunda kendisi için bağımsız değişkenleri olmayan gerekli veya sağlanan çağrısında parametre olarak kabul edilir.

Aşağıdaki örnekte, string 'den daha iyi bir tür object için p2.Sürümü, bu nedenle, ExampleMethod hangi parametresinde p2 üçüncü olmasına karşın bir dize seçilmesi olarak tanımlanan params parametresi.

class Program
{
    static void Main(string[] args)
    {
        ExampleMethod(p2: "");
    }

    public static void ExampleMethod(string p1 = null, object p2 = null)
    {
        Console.WriteLine("ExampleMethod: p2 is object");
    }
    public static void ExampleMethod(string p2 = null, object p1 = null, params int[] p3)
    {
        Console.WriteLine("ExampleMethod: p2 is string");
    }
}

// Output in Visual Studio 2012:
// ExampleMethod: p2 is string

// Output in Visual Studio 2010:
// ExampleMethod: p2 is object

Aşırı yükleme çözünürlüğü

Aşırı yükleme çözünürlüğü gerekir algoritma yeri seçin arasında aramalar için geliştirildi bir Func<object> parametresi ve bir Func parametre farklı tür parametresine sahiptir (örneğin, string veya int?) için bir Func<dynamic> bağımsız değişkeni.

Aşağıdaki örnekte, çağrı CandidateMethod gönderir, bir Func<dynamic> iki çözünürlük aday bağımsız değişkene sahiptir.Aday birine karşılık gelen parametresi Func<object>, ve diğer ilgili parametresi Func<string>.

Aşırı aday olan bir Func<object> Seçilen parametreyi çünkü object ve dynamic eşdeğer olarak kabul edilir.Bu nedenle, kimlik dönüştürmeyi arasında sadece var dynamic ve object ancak yapýlý türler arasında da Func<dynamic> ve Func<object>.

class Program
{
    public static void CandidateMethod(Func<object> fun)
    {
        Console.WriteLine("Method that has a Func<object> parameter.");
    }

    public static void CandidateMethod(Func<string> fun)
    {
        Console.WriteLine("Method that has a Func<string> parameter.");
    }

    static void Main(string[] args)
    {
        dynamic dyn = 15;
        CandidateMethod(() => { return dyn; });
    }
}
// Output in Visual Studio 2012:
// Method that has a Func<object> parameter.

// Output in Visual Studio 2010 if Microsoft.CSharp is referenced:
// Method that has a Func<string> parameter.

// Output in Visual Studio 2010 if Microsoft.CSharp isn't referenced (for instance, in a Unit Test Project):
// Method that has a Func<object> parameter.

Ayrıca bkz.

Başvuru

Lambda ifadeleri (C# Programlama Kılavuzu)

params (C# Reference)

Dinamik (C# Reference)

Kavramlar

Adlandırılmış ve isteğe bağlı bağımsız değişkeni (C# Programlama Kılavuzu)

Diğer Kaynaklar

Visual C#'a Başlarken

Kesik olmayan dil düzeltme olduğu zaman kesiliyor?