下面:
defaultCon
将自身绑定到Dog()
构造函数
legCon
将自身绑定到Dog(int legs)
构造函数
为什么要指定
即使默认构造函数中没有参数,行X中的 new Type[0]
也是如此
第Y行中的
(new[] { typeof(int) })
!参数/参数字段内的大括号。行Z中的类似问题。
我在StackOverflow上搜索 - this答案接近但没有回答我的问题。这是我的代码:
namespace Coding
{
internal class Dog
{
public int NumberOfLegs { get; set; }
public Dog()
{
NumberOfLegs = 4;
}
public Dog(int legs)
{
NumberOfLegs = legs;
}
}
public class Class1
{
static void Main(string[] args)
{
/*line X*/ var defaultCon = typeof(Dog).GetConstructor(new Type[0]); // Get Default Constructor without any params
/*line Y*/ var legCon = typeof(Dog).GetConstructor(new[] { typeof(int) });//get constructor with param int
var defaultDog = defaultCon.Invoke(null) as Dog;//invoke defaultCon for a Dog Object
/*Line Z*/ var legDog = legCon.Invoke(new object[] { 5 });//invoke legCon for a Dog object(Sets number of legs as 5) as Dog
Console.Read();
}
}
}
答案 0 :(得分:2)
为什么我们指定" new Type [0]"在行X中,即使默认构造函数
中没有参数
要说没有参数 - 所以参数 types 的数组是空的。
为什么我们指定"(new [] {typeof(int)})"在Y行!参数/参数字段中的大括号。
使用单个元素创建数组或参数类型 - 与int
对应的类型。
第Z行中的类似问题。
同样的答案,除了这次你创建一个参数数组而不是参数类型。
答案 1 :(得分:0)
simplest overload of Type.GetConstructor
仍然采用一系列类型来指示您尝试获取的构造函数的参数。
值Type[0]
是空数组,表示没有参数。