System.ParamArrayAttribute 类

方法描述

指示方法在调用中将允许参数的数目可变。 此类不能被继承。

语法定义(C# System.ParamArrayAttribute 类 的用法)

[AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = true, AllowMultiple = false)]
[ComVisibleAttribute(true)]
public sealed class ParamArrayAttribute : Attribute

构造函数

构造函数名称 构造函数描述
ParamArrayAttribute 使用默认属性初始化 ParamArrayAttribute 类的新实例。

成员/方法

方法名称 方法描述
Equals 基础结构。返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 返回此实例的哈希代码。 (继承自 Attribute。)
GetType 获取当前实例的 Type。 (继承自 Object。)
IsDefaultAttribute 当在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute。)
Match 当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)

提示和注释

ParamArrayAttribute 指示方法参数是参数数组。 参数数组允许指定未知的参数数目。 参数数组必须是形参表中的最后一个参数,并且必须是一维数组。 调用方法时,参数数组允许用下列两种方式之一来指定方法的参数:

作为可隐式转换为参数数组类型的类型的单一表达式。 参数数组的作用相当于一个值参数。

作为零个或多个参数,其中每个参数都是一个类型可隐式转换为参数数组元素类型的表达式。

下一部分中的示例说明了这两种调用约定。

注意

通常,不直接在代码中使用 ParamArrayAttribute, 而是使用单个语言关键字(如 Visual Basic 中的 ParamArray 和 C# 中的 params)作为 ParamArrayAttribute 类的包装。 有些语言(如 C#)可能甚至要求使用语言关键字并禁止使用 ParamArrayAttribute。

在重载解析期间,如果支持参数数组的编译器遇到不存在但具有的参数比包含参数数组的重载少一个的方法重载,则编译器将使用包含参数数组的重载替换该方法。 例如,对 String.Split() 实例方法(该方法在 String 类中不存在)的调用将会解析为对 String.Split(Char[]) 方法的调用。 编译器还将向方法传递所需类型的空数组。 这意味着,方法在处理参数数组中的元素时,必须始终准备好处理长度为零的数组。 该示例提供了说明。

有关使用特性的更多信息,请参见利用特性扩展元数据。

System.ParamArrayAttribute 类例子

如示例中的输出所示,Visual Basic 和 C# 编译器将此调用转换为使用空字符串数组对 Display 方法进行的调用。

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

继承层次结构

System.Object

System.Attribute

System.ParamArrayAttribute

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。