class Method{
   public Method();
   Public Method(int i);
}C#是肯定支持的,而且比C++更灵活

解决方案 »

  1.   

    Public Method(int i)怎么设定i的默认值呢?
    难道一定要写两个方法Method();Method(int i);要么就在用时都给参数值吗?
    不能像c++一样写public Method(int i=0)吗?
      

  2.   

    .NET 框架开发者指南   访问默认参数值  [C#]请参见
    查看类型信息 | Type.Missing | Reflection.Missing MethodBase.Invoke InvokeMember 
    语言
    C#某些语言(如 C++ 托管扩展和 Microsoft Visual Basic .NET)支持将默认值赋给参数。例如,以下代码示例是一个合法的 Visual Basic .NET 声明,此声明将默认值赋给两个参数。您可以使用参数属性来分配默认的参数值。通过确切指定哪些参数是默认值或略去尾部的默认参数,可以声明参数的默认值。例如,以下所有代码示例都是对 MyMethod 的有效调用。[C#]
    MyMethod (10, 55.3, 12);
    MyMethod (10, 1.3); // c == 1
    MyMethod (11); // b == 1.2, c == 1要使用反射检索参数的默认值,请获取该参数的 ParameterInfo 对象,然后使用 ParameterInfo.DefaultValue 属性检索默认值。如果不存在默认值,该属性将返回 Value.DBNull。 以下代码示例向控制台显示 MyMethod 的默认值。[C#]
    MethodInfo m = t.GetMethod ("MyMethod");
    ParameterInfo[] ps = m.GetParameters();
    for (int i = 0; i < ps.Length; i++) {
       Console.WriteLine("Default Value == {0}", ps[i].DefaultValue);
    }要调用包含具有默认值的参数的方法,请使用 Type.Missing 作为 InvokeMember 方法的参数值。这样,晚期绑定服务就能够为指定的参数值使用默认值。如果为不带默认值的参数传递 Type.Missing,则将引发 ArgumentException。有一点务必要注意,并非所有编译器的绑定机制都会遵守 Type.Missing 的这些规则。有些联编程序可能不支持此功能,或者可能以不同的方式来处理 Type.Missing。当使用 Type.Missing 时,默认值不必是结尾的参数值。 C# 语言不支持默认参数。
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  哈哈!亏了啵!以下 Visual Basic .NET 代码示例显示如何调用具有默认参数的方法。当使用上述方法时,即使调用方未指定任何值,仍会考虑尾部的默认参数。这是调用具有默认参数的方法时最常用的方式。如果是使用 MethodBase.Invoke 来调用方法,则需要显式指定哪些参数是默认值,指定的方法是为所有没有值的参数传递一个包含 Type.Missing 的对象数组。请参见
    查看类型信息 | Type.Missing | Reflection.Missing MethodBase.Invoke InvokeMember --------------------------------------------------------------------------------将文档反馈发送给 Microsoft&copy; 2002 Microsoft Corporation。保留所有权利。