我有以下课程:
namespace Bla.Bla
{
public abstract class ClassA
{
public virtual void Setup(string thing)
{
}
public abstract bool IsThingValid();
public abstract void ReadThings();
public virtual void MatchThings() { }
public virtual void SaveThings() { }
public void Run(string thing)
{
Setup(thing);
if (!IsThingValid())
{
}
ReadThings();
MatchThings();
SaveThings();
}
}
}
namespace Bla.Bla
{
public class ClassB : ClassA
{
ClassB() { }
public override void IsThingValid()
{
throw new NotImplementedException();
}
public override void ReadThings()
{
throw new NotImplementedException();
}
}
}
现在,我尝试执行以下操作:
public class ClassC
{
public void Main()
{
var thing = new ClassB();
ClassB.Run("thing");
}
}
它返回以下错误:ClassB由于其保护级别而无法访问。
但是它们都是公开的。
此错误是由ClassB
的构造函数(而不是ClassB
其本身)的保护级别导致的。由于构造函数的名称与类*的名称相同,因此错误可能会被错误地解释。由于您未指定构造函数的保护级别,因此internal
默认情况下假定为保护级别。声明构造函数public
将解决此问题:
public ClassB() { }
*还可以说构造函数没有名称,只有一个类型;这不会改变问题的实质。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句