c# - 抽象类的 protected 与公共(public)构造函数?有区别吗?

标签 c# constructor public protected

这个问题是出于好奇。有区别吗:

public abstract class MyClass
{
    public MyClass()
    {
    }
}

public abstract class MyClass
{
    protected MyClass()
    {
    }
}

谢谢。

最佳答案

它们在所有实际用途中都是相同的。

但由于您要求差异,我能想到的一个差异是,如果您使用反射搜索类的构造函数,那么匹配的 BindingFlags 将不同。

BindingFlags flags = BindingFlags.Public | BindingFlags.Instance;
var constructor = typeof(MyClass).GetConstructor(flags, null, new Type[0], null);

这会在一种情况下找到构造函数,但不会在另一种情况下找到构造函数。

关于c# - 抽象类的 protected 与公共(public)构造函数?有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532233/

相关文章:

c++ - 抽象类和唯一指针

c++ - C++ 中带指针参数的函数

c++ - 使类对 C++ 中的其他类公开

ios - 如何在 iOS 上以编程方式将 Facebook 帖子可见性更改为 "public"

c# - 未在项目的层次结构中找到新元素

c# - 运行时的 Xamarin HttpClient 堆栈检测

java - 使用 int 然后递增它比同时做两者慢吗?

c# - 如何在Windows Azure中删除blob

javascript - 调用基类构造函数而无需手动提供参数

ruby-on-rails - 保护公共(public)内容/Rails 应用程序中的内容