c# - 为什么这不创建默认构造函数?

标签 c# constructor

我想知道为什么这会抛出异常(在执行时):

IAgentIndicator iai = (IAgentIndicator)Activator.CreateInstance(agentIndicatorType);

当我有一个带有默认参数的构造函数时(但当我不创建构造函数时 public foo() :

public class foo : IAgentIndicator
{
    public foo(int a = 0, int b = 0)
    {
    }
}

无参构造函数不是编译时生成的吗?

最佳答案

这里有两个问题:

  1. 只有当您没有自己定义任何构造函数时,才会自动为您生成无参数构造函数。显然这里不是这种情况,因为您已经手动声明了一个构造函数

  2. 可选参数只不过是调用点的编译时语法糖。参数化构造函数不算作无参数构造函数,即使其所有参数都是可选的

关于c# - 为什么这不创建默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250148/

相关文章:

c# - 通过反射加载程序集的风险

c# - Windows 10 蓝牙激活

c# - 反向引用是否需要在它们引用的组之后?

c++ - 创建对象 : with or without `new`

继承类上的 C# 无参数构造函数

c++ - 复制构造函数语法并显示构造函数的值

c# - 使用 HTML Agility Pack 关联相邻元素值

c# - 从 T 和字符串的隐式转换

c++ - 从文件读取错误(读取 0 或 ""值)

C++ 静态工厂构造函数