如何全局访问类的列表

时间:2016-05-25 12:36:39

标签: c# list class

我有

namespace Example
{
    class TechCollection : List<Tech>
    {
    }
}

然后我有了这个

TechCollection Tee = new TechCollection();

以一种形式,但如果我插入数据,我无法以其他形式访问它 我不确定是什么问题,任何人都可以提供帮助吗?

4 个答案:

答案 0 :(得分:5)

默认

class TechCollection : List<Tech>
{
}

内部,在其他程序集中不可见(已在评论后编辑)

internal class TechCollection : List<Tech>
{
}

正如之前在评论中提到的那样 - 使用public。

答案 1 :(得分:5)

如果您使用同一个程序集,则可以使用internal

namespace Example
{
    internal class TechCollection : List<Tech>
    {
    }
}

或者如果您想从任何地方访问,请使用public

  namespace Example
    {
        public class TechCollection : List<Tech>
        {
        }
    }

答案 2 :(得分:1)

不是那个人,但C#中的全球任何东西都是一个糟糕的设计理念。你想要实现什么目标?您是否只想要在运行时可以在整个应用程序中访问的特定对象的列表?如果是这样,可以考虑创建一个静态单例类,其中包含一个列表来处理它。在我看来,管理更容易。

https://msdn.microsoft.com/en-us/library/ff650316.aspx

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public IList<object> PseudoGlobalObjects {get;set;}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}

然后你可以使用这样的东西:

 Singleton.Instance.PseudoGlobalObjects.Add(obj);
 Singleton.Instance.PseudoGlobalObjects.Remove(obj);

答案 3 :(得分:0)

您需要公开您的课程和方法。

  

和直接在命名空间内声明的结构(换句话说,不嵌套在其他类或结构中)可以是公共的或内部的。 如果未指定访问修饰符,则内部为默认值

Access Modifiers (C# Programming Guide)

Accessibility Levels (C# Reference)

Default visibility for C# classes and members (fields, methods, etc)?