Этот вопрос из любопытства. Есть ли разница между:
public abstract class MyClass
{
public MyClass()
{
}
}
а также
public abstract class MyClass
{
protected MyClass()
{
}
}
Спасибо.
Этот вопрос из любопытства. Есть ли разница между:
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);
Это найдет конструктор в одном случае, но не в другом.
У вас не должно быть общедоступного конструктора в абстрактном классе. Конструкторы абстрактных типов могут вызываться только производными типами. Поскольку общедоступные конструкторы создают экземпляры типа, а экземпляры абстрактного типа создавать нельзя, абстрактный тип с общедоступным конструктором спроектирован неправильно.
подробности см. здесь http://msdn.microsoft.com/en-us/library/ms182126.aspx
С точки зрения будущего использования этого кода, нет никакой разницы.