我定义了一个类,其中希望其中一个函数可以返回在类中定义List<T>容器(初学不久,感觉List<T>和STL中的list容器挺像的,暂时也管List叫容器吧)namespace MyTest{
    partial class A{
      public List<MyType> GetList(){
         return MyList;
      }
      private List<MyType>MyList;
    }
}
运行后编译器提示
可访问性不一致: 返回类型"System.Collections.Generic.List<MyTest.A.MyType>”比方法“MyTest.A.GetList()”的可访问性低"
请问怎样写才能返回List容器?

解决方案 »

  1.   

    就是说外部对象无法引用到MyList对象的定义。
    namespace MyTest{
        partial class A{
          public List<MyType> GetList(){
             return MyList;
          }
          public List<MyType>MyList;
        }
    }
      

  2.   

    partial class A{
          public List<MyType> GetList(){
             return MyList;
          }
          private List<MyType>MyList;
          public class MyType{}//改称public    }
      

  3.   

    改成public可以解决这个我知道~~~但是改成public后函数GetList()就没有什么意义了。用户可以任意访问并修改MyList中的内容,类的封装性就被破坏了,我希望类外的用户只能通过一个接口,即GetList()来获得类内的List容器,请问该怎么解决?谢谢
      

  4.   

    不是把MyList改为public而是改mytype 为public
    ,因为MyType是嵌套类,嵌套它的类之外是无法访问这种类型
      

  5.   

    明白了~~~原来是犯了一个类似于标准C++中作用域的问题~~~正像hdt(倦怠)所说的一样将MyType改成public就可以了。不过程序看起来好像怪怪的C#中如果允许嵌套类的存在就等于允许用
              MyClass.MyEmbededClass m_MEC;
    这种形式来创建对象了吧?不知道为什么~~~这种方式让我这个C/C++程序员看起来很不舒服*_*,明天过来给分~~~
      

  6.   

    c++ 也是一样
    class a
    {
    public:
      class b
       {};
    public:
       b test()
       {
          b b1;
          return b1;
       }
    };
    ....
    a a1;
    a::b b1 = a1.test(); //如果class b不放在public:里 这句话有访问性错误