我想知道为什么这会抛出异常(在执行时):
IAgentIndicator iai = (IAgentIndicator)Activator.CreateInstance(agentIndicatorType);
当我有一个带有默认参数的构造函数时(但当我不创建构造函数时 public foo()
:
public class foo : IAgentIndicator
{
public foo(int a = 0, int b = 0)
{
}
}
无参构造函数不是编译时生成的吗?
最佳答案
这里有两个问题:
只有当您没有自己定义任何构造函数时,才会自动为您生成无参数构造函数。显然这里不是这种情况,因为您已经手动声明了一个构造函数。
可选参数只不过是调用点的编译时语法糖。参数化构造函数不算作无参数构造函数,即使其所有参数都是可选的。
关于c# - 为什么这不创建默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250148/