Aracılığıyla paylaş


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

Visual C# 2010adlandırılmış ve isteğe bağlı bağımsız değişkenler tanıtır.Adlandırılmış bağımsız değişken , belirli bir parametre için bir bağımsız değişken parametre listesinde parametrenin konumu yerine parametrenin adı ile ilişkilendirerek belirtmenize olanak verir.İsteğe bağlı bağımsız değişkenler bazı parametreler için bağımsız değişken kullanmazsanız olanak tanır.Her iki teknikleri, yöntemleri, dizinleyiciler, Kurucular ve temsilciler ile kullanılabilir.

Adlandırılmış ve isteğe bağlı bağımsız değişkenlerini kullanın, bağımsız değişkenler parametre listesinde olmayan bağımsız değişken listesinde göründükleri sırayla değerlendirilir.

Adlandırılmış ve isteğe bağlı parametreler birlikte kullanıldığında, yalnızca birkaç parametreleri isteğe bağlı parametreler listesinden değişkenleri tedarik olanak verir.Bu özellik Microsoft Office Otomasyon API'ları gibi com arabirimleri çağrıların büyük ölçüde kolaylaştırır.

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

Adlandırılmış bağımsız değişkenler tarafından bilinmesi veya parametre listeleri çağrılan yöntemlerin parametrelerini sırasını bakmak için gerekli boş.Her bağımsız değişken için parametresi, parametre adı belirtilebilir.Örneğin, gövde yığın dizini (BMI) Ağırlık ve Yükseklik bağımsız değişkenler işlev tarafından tanımlanan sırada konumuna göre göndererek standart yolla çağrılabilir hesaplayan işlevi.

CalculateBMI(123, 64);

Parametre sırasını hatırlıyor musunuz, ancak adlarını biliyorsanız, herhangi bir sırada bağımsız değişkenler göndermek, ilk ya da yükseklik ilk ağırlık.

CalculateBMI(weight: 123, height: 64);

CalculateBMI(height: 64, weight: 123);

Adlandırılmış bağımsız değişkenleri de ne her bağımsız değişkeni gösterir tanımlayarak kodunuzun okunabilirliğini artırır.

Adlandırılmış bağımsız değişken Konumsal bağımsız değişkenler, aşağıda gösterildiği gibi izleyebilirsiniz.

CalculateBMI(123, height: 64);

Ancak, Konumsal bir bağımsız değişken bir adlandırılmış bağımsız değişkeni gelemez.Aşağıdaki ifadeyi bir derleyici hatasına neden olur.

//CalculateBMI(weight: 123, 64);

Örnek

Aşağıdaki kod, bu bölümdeki örnekler uygular.

class NamedExample
{
    static void Main(string[] args)
    {
        // The method can be called in the normal way, by using positional arguments.
        Console.WriteLine(CalculateBMI(123, 64));

        // Named arguments can be supplied for the parameters in either order.
        Console.WriteLine(CalculateBMI(weight: 123, height: 64));
        Console.WriteLine(CalculateBMI(height: 64, weight: 123));

        // Positional arguments cannot follow named arguments.
        // The following statement causes a compiler error.
        //Console.WriteLine(CalculateBMI(weight: 123, 64));

        // Named arguments can follow positional arguments.
        Console.WriteLine(CalculateBMI(123, height: 64));
    }

    static int CalculateBMI(int weight, int height)
    {
        return (weight * 703) / (height * height);
    }
}

İsteğe bağlı bağımsız değişkenler

Tanım yöntemi, yapıcı, dizinleyici veya temsilci parametrelerinin gerekli veya isteğe bağlı olduklarını belirtebilirsiniz.Herhangi bir arama tüm gerekli parametreler için bağımsız değişken vermeniz gerekir, ancak isteğe bağlı parametre bağımsız değişkeni belirtmeyebilirsiniz.

Her isteğe bağlı bir parametre tanımına bir parçası olarak bir varsayılan değeri vardır.Bu parametre için hiçbir bağımsız değişken gönderilirse, varsayılan değer kullanılır.Varsayılan değer aşağıdaki türde ifadeler biri olmalıdır:

  • Sabit ifade;

  • bir deyim new ValType(), ValType gibi bir değer türü olduğundan bir enum veya bir Yapı;

  • bir deyim default(ValType), ValType bir deðer türüdür.

İsteğe bağlı parametrelerin parametre listesinin sonunda sonra gerekli parametreleri tanımlanır.Arayan bir bağımsız değişken için art arda isteğe bağlı parametrelerden herhangi birini sağlıyorsa, önceki tüm isteğe bağlı parametre bağımsız değişkenlerini sağlamanız gerekir.Boşluklar virgülle ayrılmış bağımsız değişken listesinde desteklenmez.Örneğin, aşağıdaki kodda yöntemi örneği ExampleMethod gereken bir ve iki isteğe bağlı parametre ile tanımlanır.

public void ExampleMethod(int required, string optionalstr = "default string",
    int optionalint = 10)

Aşağıdaki arama ExampleMethod ikinci için ancak üçüncü parametre için bir bağımsız değişken sağlamadığı bir derleyici hatasına neden olur.

//anExample.ExampleMethod(3, ,4);

Üçüncü parametre adını biliyorsanız, görevi yerine getirmek için adlandırılmış bağımsız değişkeni kullanabilirsiniz.

anExample.ExampleMethod(3, optionalint: 4);

IntelliSense köşeli isteğe bağlı parametreleri belirtmek için aşağıdaki şekilde gösterildiği gibi kullanır.

ExampleMethod isteğe bağlı parametreler

ExampleMethod yöntemi için IntelliSense Hızlı bilgileri.

[!NOT]

İsteğe bağlı parametreler kullanarak da bildirebilirsiniz.net OptionalAttribute sınıfı.OptionalAttributeparametreleri varsayılan bir değer gerektirmez.

Örnek

Aşağıdaki örnekte, kurucusu ExampleClass isteğe bağlı bir parametre vardır.Yöntemi örneği ExampleMethod gerekli bir parametre olan requiredve iki isteğe bağlı parametre, optionalstr ve optionalint.Kod, Main , yapıcı ve yöntemi çağrılabilir farklı yollarını gösterir.

namespace OptionalNamespace
{
    class OptionalExample
    {
        static void Main(string[] args)
        {
            // Instance anExample does not send an argument for the constructor's
            // optional parameter.
            ExampleClass anExample = new ExampleClass();
            anExample.ExampleMethod(1, "One", 1);
            anExample.ExampleMethod(2, "Two");
            anExample.ExampleMethod(3);

            // Instance anotherExample sends an argument for the constructor's
            // optional parameter.
            ExampleClass anotherExample = new ExampleClass("Provided name");
            anotherExample.ExampleMethod(1, "One", 1);
            anotherExample.ExampleMethod(2, "Two");
            anotherExample.ExampleMethod(3);

            // The following statements produce compiler errors.

            // An argument must be supplied for the first parameter, and it
            // must be an integer.
            //anExample.ExampleMethod("One", 1);
            //anExample.ExampleMethod();

            // You cannot leave a gap in the provided arguments. 
            //anExample.ExampleMethod(3, ,4);
            //anExample.ExampleMethod(3, 4);

            // You can use a named parameter to make the previous 
            // statement work.
            anExample.ExampleMethod(3, optionalint: 4);
        }
    }

    class ExampleClass
    {
        private string _name;

        // Because the parameter for the constructor, name, has a default
        // value assigned to it, it is optional.
        public ExampleClass(string name = "Default name")
        {
            _name = name;
        }

        // The first parameter, required, has no default value assigned
        // to it. Therefore, it is not optional. Both optionalstr and 
        // optionalint have default values assigned to them. They are optional.
        public void ExampleMethod(int required, string optionalstr = "default string",
            int optionalint = 10)
        {
            Console.WriteLine("{0}: {1}, {2}, and {3}.", _name, required, optionalstr,
                optionalint);
        }
    }

    // The output from this example is the following:
    // Default name: 1, One, and 1.
    // Default name: 2, Two, and 10.
    // Default name: 3, default string, and 10.
    // Provided name: 1, One, and 1.
    // Provided name: 2, Two, and 10.
    // Provided name: 3, default string, and 10.
    // Default name: 3, default string, and 4.

}

com arabirimleri

Dinamik nesneleri ve diğer geliştirmeler desteği ile birlikte adlandırılmış ve isteğe bağlı bağımsız Office Otomasyon API'ları gibi com API'lerindeki birlikte önemli ölçüde artırır.

Örneğin, Otomatik Biçim yöntem Microsoft Office Excel'de Aralık arabiriminin tümü isteğe bağlı olan yedi parametreleri vardır.Bu parametreler aşağıdaki şekilde gösterilmiştir.

Biçim parametreleri

Otomatik Biçim yöntemi için IntelliSense Hızlı bilgileri.

C# 3.0 ve önceki sürümlerinde, bir bağımsız değişken aşağıdaki örnekte gösterildiği gibi her parametre için gereklidir.

// In C# 3.0 and earlier versions, you need to supply an argument for
// every parameter. The following call specifies a value for the first
// parameter, and sends a placeholder value for the other six. The
// default values are used for those parameters.
var excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Workbooks.Add();
excelApp.Visible = true;

var myFormat = 
    Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatAccounting1;

excelApp.get_Range("A1", "B4").AutoFormat(myFormat, Type.Missing, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Bununla birlikte, büyük ölçüde çağrısına basitleştirebilirsiniz AutoFormat C# 4.0 kullanılmaya başlanan adlandırılmış ve isteğe bağlı bağımsız kullanarak.Adlı ve isteğe bağlı bağımsız değişkeni parametre varsayılan değeri değiştirmek istemiyorsanız, isteğe bağlı bir parametre bağımsız değişkeni atlarsanız olanak sağlar.Aşağıdaki çağrısında yedi parametreleri yalnızca biri için bir değer belirtilir.

// The following code shows the same call to AutoFormat in C# 4.0. Only
// the argument for which you want to provide a specific value is listed.
excelApp.Range["A1", "B4"].AutoFormat( Format: myFormat );

Daha fazla bilgi ve örnekler için bkz. Nasıl yapılır: (C# Programlama Kılavuzu) programlama ofisinde adlandırılmış ve isteğe bağlı bağımsız değişkenlerini kullanma ve Nasıl yapılır: Access Office birlikte çalışma nesnelerini Visual C# 2010 özelliklerini kullanarak (C# Programlama Kılavuzu)

Aşırı yükleme çözümü

Adlandırılmış ve isteğe bağlı bağımsız değişkenler kullanımını aşırı yükleme çözümü aşağıdaki yollarla etkiler:

  • Yöntemi, dizinleyici veya kurucu yürütülecek bir adayın her biri kendi parametre isteğe bağlıdır veya karşılık gelen, adıyla veya Arama ifadesi tek bir bağımsız değişken için bir konum ve bağımsız değişken parametre türüne dönüştürülebilen olur.

  • Birden fazla aday bulunamazsa, aşırı çözümleme kurallarını tercih edilen dönüştürmeleri için açıkça belirtilen bağımsız değişkenler için uygulanır.İsteğe Bağlı Parametreler atlanmışsa bağımsız değişkenleri dikkate alınmaz.

  • İki aday eşit derecede iyi olarak nitelendirilmiştir, bağımsız çağrısında atlanmış isteğe bağlı parametreleri olmayan bir adayın tercih gider.Daha az parametre olan adaylar tekrar yükleme çözümlemesi'nde genel bir tercih sonucu budur.

C# dil belirtiminin

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Görevler

Nasıl yapılır: (C# Programlama Kılavuzu) programlama ofisinde adlandırılmış ve isteğe bağlı bağımsız değişkenlerini kullanma

Başvuru

Kurucular (C# Programlama Kılavuzu) kullanma

Dizinleyiciler (C# Programlama Kılavuzu) kullanma

Diğer Kaynaklar

Tür dinamik (C# Programlama Kılavuzu) kullanma