为什么无法显式声明命名空间中定义的元素?

Mic*_*ael 34 c# access-modifiers

我有以下C#代码:

namespace ISeeOptic.BL
{

  public abstract class Process
  {        
     ...      

     protected static void DeleteImages(List<ImagesPath> list)
      {
          some logic
      } 

      ...
   }


    protected class GetDataBL: Process
    {
      ...

     public static void DeleteImages(List<ImagesPath> list)
     {
         DeleteImages(list); 
     } 
     ...
 }
} 
Run Code Online (Sandbox Code Playgroud)

在编译时我得到以下错误:

命名空间中定义的元素不能显式声明为private,protected或protected internal

我是C#的初学者所以也许这个问题可能看起来很幼稚,任何想法导致这个错误的原因是什么?

谢谢你提前.

pho*_*oog 35

命名空间中定义的元素可以显式声明为public或internal.

它们可能不会被显式声明为私有或受保护(或受保护的内部),因为这些修饰符仅对类的成员有意义.

protected class GetDataBL例如,你没有任何意义,因为"protected"意味着"可以从包含类继承的类访问" - 但是没有包含GetDataBL的类.


gdo*_*ica 13

private protected意味着它们可以被这个类或派生类访问.
在命名空间级别,没有派生的类,所以它没用.

您只能使用publicinternalNamespace关卡中使用

MSDN文档


Jon*_*eet 8

(我相信你实际上会得到一个编译时错误;如果你只是在执行时看到这个,那么你的代码也可能在执行时被编译,例如作为web应用程序的一部分.逻辑上它是一个编译时错误,不是例外.)

protected访问修饰符(松散地)作出到派生包含类型访问的构件; 但在一个空间成员的情况下,存在不包含类型.

同样的私有成员的访问域是包含类型的程序文本-又一次,也就是不包含类型.

你实际上试图通过保护来实现GetDataBL什么?