ParamArrayAttribute ParamArrayAttribute ParamArrayAttribute ParamArrayAttribute Class

정의

해당 메서드의 호출 시 여러 가지 인수를 사용할 수 있음을 나타냅니다.Indicates that a method will allow a variable number of arguments in its invocation. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

public ref class ParamArrayAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ParamArrayAttribute : Attribute
type ParamArrayAttribute = class
    inherit Attribute
Public NotInheritable Class ParamArrayAttribute
Inherits Attribute
상속
ParamArrayAttributeParamArrayAttributeParamArrayAttributeParamArrayAttribute
특성

예제

다음 예제에서는 정의 Temperature 포함 하는 클래스를 Display 메서드를 하나 이상의 형식이 지정 된 온도 값을 표시 하기 위해.The following example defines a Temperature class that includes a Display method, which is intended to display one or more formatted temperature values. 메서드는 단일 매개 변수가 formats, 매개 변수 배열에 정의 됩니다.The method has a single parameter, formats, which is defined as a parameter array.

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 { }
         }
      }
   }
}
Public Class Temperature 
   Private temp As Decimal
   
   Public Sub New(temperature As Decimal)
      Me.temp = temperature
   End Sub
   
   Public Overrides Function ToString() As String
      Return ToString("C")
   End Function
   
   Public Overloads Function ToString(format As String) As String
      If String.IsNullOrEmpty(format) Then format = "G"
      
      Select Case format
         Case "G", "C"
            Return temp.ToString("N") + "  °C"
         Case "F"
            Return (9 * temp / 5 + 32).ToString("N") + "  °F"
         Case "K" 
            Return (temp + 273.15d).ToString("N") + "  °K" 
         Case Else
            Throw New FormatException(String.Format("The '{0}' format specifier is not supported", _
                                                    format))
      End Select                                                         
   End Function         
   
   Public Sub Display(<[ParamArray]()> formats() As String)
      If formats.Length = 0 Then
         Console.WriteLine(Me.ToString("G"))
      Else   
         For Each format As String In formats
            Try
               Console.WriteLine(Me.ToString(format))
            ' If there is an exception, do nothing.
            Catch
            End Try   
         Next
      End If
   End Sub
End Class

다음 예제에서는 세 가지 다른 호출을 보여 줍니다.는 Temperature.Display 메서드.The following example illustrates three different calls to the Temperature.Display method. 첫 번째에서 메서드는 서식 문자열의 배열을 전달 됩니다.In the first, the method is passed an array of format strings. 두 번째 메서드 4 개의 개별 형식 문자열 인수로 전달 됩니다.In the second, the method is passed four individual format strings as arguments. 세 번째 메서드는 인수 없이 호출 됩니다.In the third, the method is called with no arguments. Visual Basic 및 C# 컴파일러 호출으로이 변환 출력의 예제에서 볼 수 있듯이는 Display 빈 문자열 배열 사용 하 여 메서드.As the output from the example illustrates, the Visual Basic and C# compilers translate this into a call to the Display method with an empty string array.

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
Public Module Example
   Public Sub Main()
      Dim temp1 As New Temperature(100)
      Dim formats() As String = { "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()
   End Sub
End Module
' 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

설명

ParamArrayAttribute 메서드 매개 변수는 매개 변수 배열 임을 나타냅니다.The ParamArrayAttribute indicates that a method parameter is a parameter array. 매개 변수 배열에 알 수 없는 개수의 인수를 지정 하도록 허용 합니다.A parameter array allows the specification of an unknown number of arguments. 매개 변수 배열은 정식 매개 변수 목록의 마지막 매개 변수 여야 합니다. 및 1 차원 배열 이어야 합니다.A parameter array must be the last parameter in a formal parameter list, and it must be a single-dimension array. 메서드가 호출 되 면 매개 변수 배열에는 두 가지 방법 중 하나로 지정 하는 메서드 인수를 허용 합니다.When the method is called, a parameter array permits arguments to a method to be specified in either of two ways:

  • 매개 변수 배열 형식으로 암시적으로 변환할 수 있는 형식의 단일 식입니다.As a single expression of a type that is implicitly convertible to the parameter array type. 값 매개 변수로 매개 변수 배열 함수입니다.The parameter array functions as a value parameter.

  • 0 개 이상의 인수를 각 인수는 매개 변수 배열 요소의 형식으로 암시적으로 변환할 수 있는 형식의 식입니다.As zero or more arguments, where each argument is an expression of a type that is implicitly convertible to the type of the parameter array element.

다음 섹션의 예제에서는 호출 규칙을 모두 보여 줍니다.The example in the next section illustrates both calling conventions.

참고

일반적으로 ParamArrayAttribute 코드에서 직접 사용 되지 않습니다.Typically, the ParamArrayAttribute is not used directly in code. 대신 개별 언어 키워드와 같은 ParamArray Visual Basic에서 및 params 에 대 한 래퍼로 사용은 C#에서 ParamArrayAttribute 클래스입니다.Instead, individual language keywords, such as ParamArray in Visual Basic and params in C#, are used as wrappers for the ParamArrayAttribute class. C#과 같은 일부 언어에서는 수 있습니다도 언어 키워드를 사용 해야 하 고 사용할 수 없도록 ParamArrayAttribute합니다.Some languages, such as C#, may even require the use of the language keyword and prohibit the use of ParamArrayAttribute.

오버 로드 확인 하는 동안 매개 변수 배열을 지 원하는 컴파일러는 없지만 매개 변수 배열을 포함 하는 오버 로드 보다 더 적은 매개 변수가 하나이 메서드 오버 로드 하는 경우가 귀하를 대신 메서드를 포함 하는 오버 로드를 사용 하 여는 매개 변수 배열입니다.During overload resolution, when compilers that support parameter arrays encounter a method overload that does not exist but has one fewer parameter than an overload that includes a parameter array, they will replace the method with the overload that includes the parameter array. 에 대 한 호출 예를 들어,를 String.Split() 인스턴스 메서드 (에서 존재 하지 않는 합니다 String 클래스)에 대 한 호출으로 확인 됩니다는 String.Split(Char[]) 메서드.For example, a call to the String.Split() instance method (which does not exist in the String class) is resolved as a call to the String.Split(Char[]) method. 컴파일러는 메서드에 필요한 형식의 빈 배열을 전달할 수도 됩니다.The compiler will also pass an empty array of the required type to the method. 즉, 메서드가 배열 길이가 0 인 매개 변수 배열의 요소를 처리할 때 처리 하도록 항상 준비 되어야 합니다.This means that the method must always be prepared to handle an array whose length is zero when it processes the elements in the parameter array. 예제에서는 그림을 제공합니다.The example provides an illustration.

특성을 사용 하는 방법에 대 한 자세한 내용은 참조 하세요. 특성합니다.For more information about using attributes, see Attributes.

생성자

ParamArrayAttribute() ParamArrayAttribute() ParamArrayAttribute() ParamArrayAttribute()

기본 속성을 사용하여 ParamArrayAttribute 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ParamArrayAttribute class with default properties.

메서드

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

@FSHO2@이 인스턴스가 지정한 개체와 같은지를 나타내는 값을 반환합니다.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

명시적 인터페이스 구현

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

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

속성

TypeId TypeId TypeId TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

적용 대상

추가 정보