İngilizce dilinde oku

Aracılığıyla paylaş


ParamArrayAttribute Sınıf

Tanım

Bir yöntemin çağrısında değişken sayıda bağımsız değişkene izin verileceğini gösterir. Bu sınıf devralınamaz.

C#
[System.AttributeUsage(System.AttributeTargets.Parameter, AllowMultiple=false, Inherited=true)]
public sealed class ParamArrayAttribute : Attribute
C#
[System.AttributeUsage(System.AttributeTargets.Parameter, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ParamArrayAttribute : Attribute
Devralma
ParamArrayAttribute
Öznitelikler

Örnekler

Aşağıdaki örnek, bir Temperature veya daha fazla biçimlendirilmiş sıcaklık değeri görüntülemeyi amaçlayan bir Display yöntemi içeren bir sınıfı tanımlar. yöntemi, formatsparametre dizisi olarak tanımlanan tek bir parametresine sahiptir.

C#
using System;

public class Temperature
{
   private decimal temp;

   public Temperature(decimal temperature)
   {
      this.temp = temperature;
   }

   public override string ToString()
   {
      return ToString("C");
   }

   public string ToString(string format)
   {
      if (String.IsNullOrEmpty(format))
         format = "G";

      switch (format.ToUpper())
      {
         case "G":
         case "C":
            return temp.ToString("N") + "  °C";
         case "F":
            return (9 * temp / 5 + 32).ToString("N") + "  °F";
         case "K":
            return (temp + 273.15m).ToString("N") + "  °K";
         default:
            throw new FormatException(String.Format("The '{0}' format specifier is not supported",
                                                    format));
      }
   }

   public void Display(params string []formats)
   {
      if (formats.Length == 0)
      {
         Console.WriteLine(this.ToString("G"));
      }
      else
      {
         foreach (string format in formats)
         {
            try {
               Console.WriteLine(this.ToString(format));
            }
            // If there is an exception, do nothing.
            catch { }
         }
      }
   }
}

Aşağıdaki örnekte yöntemine yapılan üç farklı çağrı gösterilmektedir Temperature.Display . İlkinde yöntemine bir biçim dizeleri dizisi geçirilir. İkincisinde yöntemine bağımsız değişken olarak dört ayrı biçim dizesi geçirilir. Üçüncüsinde, yöntem bağımsız değişken olmadan çağrılır. Örnekteki çıktıda gösterildiği gibi, Visual Basic ve C# derleyicileri bunu boş dize dizisiyle yöntemine Display bir çağrıya çevirir.

C#
public class Class1
{
   public static void Main()
   {
      Temperature temp1 = new Temperature(100);
      string[] formats = { "C", "G", "F", "K" };

      // Call Display method with a string array.
      Console.WriteLine("Calling Display with a string array:");
      temp1.Display(formats);
      Console.WriteLine();

      // Call Display method with individual string arguments.
      Console.WriteLine("Calling Display with individual arguments:");
      temp1.Display("C", "F", "K", "G");
      Console.WriteLine();

      // Call parameterless Display method.
      Console.WriteLine("Calling Display with an implicit parameter array:");
      temp1.Display();
   }
}
// The example displays the following output:
//       Calling Display with a string array:
//       100.00  °C
//       100.00  °C
//       212.00  °F
//       373.15  °K
//
//       Calling Display with individual arguments:
//       100.00  °C
//       212.00  °F
//       373.15  °K
//       100.00  °C
//
//       Calling Display with an implicit parameter array:
//       100.00  °C

Açıklamalar

, ParamArrayAttribute yöntem parametresinin bir parametre dizisi olduğunu gösterir. Parametre dizisi bilinmeyen sayıda bağımsız değişkenin belirtimini sağlar. Parametre dizisi resmi parametre listesindeki son parametre olmalı ve tek boyutlu bir dizi olmalıdır. Yöntem çağrıldığında, parametre dizisi bir yöntemin bağımsız değişkenlerinin iki yoldan biriyle belirtilmesine izin verir:

  • Parametre dizisi türüne örtük olarak dönüştürülebilen bir türün tek bir ifadesi olarak. parametre dizisi bir değer parametresi olarak işlev görür.

  • Sıfır veya daha fazla bağımsız değişken olarak, burada her bağımsız değişken, parametre dizisi öğesinin türüne örtük olarak dönüştürülebilir bir tür ifadesidir.

Sonraki bölümdeki örnekte her iki çağırma kuralı da gösterilmektedir.

Not

Genellikle, ParamArrayAttribute doğrudan kodda kullanılmaz. Bunun yerine, Visual Basic ve params C# gibi ParamArray tek tek dil anahtar sözcükleri sınıfı için ParamArrayAttribute sarmalayıcı olarak kullanılır. C# gibi bazı diller, dil anahtar sözcüğünü kullanmayı bile gerektirebilir ve kullanımını ParamArrayAttributeyasaklar.

Aşırı yükleme çözümlemesi sırasında, parametre dizilerini destekleyen derleyiciler var olmayan ancak parametre dizisi içeren bir aşırı yüklemeden daha az parametreye sahip bir yöntem aşırı yüklemesiyle karşılaştığında, yöntemini parametre dizisini içeren aşırı yükleme ile değiştirirler. Örneğin, örnek yöntemine String.Split() yönelik bir çağrı (sınıfında mevcut String değildir) yöntemine String.Split(Char[]) bir çağrı olarak çözümlenir. Derleyici ayrıca yöntemine gerekli türde boş bir dizi geçirir. Bu, yöntemin parametre dizisindeki öğeleri işlerken uzunluğu sıfır olan bir diziyi işlemek için her zaman hazırlıklı olması gerektiği anlamına gelir. Örnek, bir gösterim sağlar.

Öznitelikleri kullanma hakkında daha fazla bilgi için bkz . Öznitelikler.

Oluşturucular

ParamArrayAttribute()

Sınıfın ParamArrayAttribute yeni bir örneğini varsayılan özelliklerle başlatır.

Özellikler

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.