获取静态List <T>的最佳方法是什么?

MHP*_*MHP 0 c# static list

我想要重新提出我的问题.

我的问题是.获得我可以在整个项目中使用的相同列表的最佳方法是什么?

我的代码现在看起来像这样:

public static class MessagingController
{
  static List<MessagingDelivery> MessagingDeliveryList = Messaging.GetMessagingDeliveryList();
}


internal static class Messaging
{
  static List<MessagingDelivery> MessagingDeliveryList;

  static Messaging()
  { MessagingDeliveryList = new List<MessagingDelivery>(); }

  internal static void CreateMessagingText(short reference, short number, string text)
  { MessagingDeliveryList.Add(new MessagingDelivery(reference, number, text)); }


  internal static void ChangeMessagingDelivery(short reference, string status, string error)
  { MessagingDelivery.ChangeStatus(reference, status, error); }


  internal static List<MessagingDelivery> GetMessagingDeliveryList()
  { return MessagingDeliveryList; }
}
Run Code Online (Sandbox Code Playgroud)

老问题:

获得a static List<T>和为什么是"最佳实践" ?

代码1:

public static List<MessagingDelivery> messagingDeliveryList
    = Messaging.GetMessagingDeliveryList();
Run Code Online (Sandbox Code Playgroud)

代码2:

static List<MessagingDelivery> messagingDeliveryList
    = Messaging.GetMessagingDeliveryList();

public static List<MessagingDelivery> MessagingDeliveryList
    { get { return messagingDeliveryList; } }
Run Code Online (Sandbox Code Playgroud)

我假设代码1是最快的方式.是否有充分的理由使用Code 2?

Mar*_*ell 6

都不是.List<T>名称听起来像一个活跃使用的对象(而不是,例如,不可变配置数据)的静态不是快或慢:它只是被打破.破坏代码的运行速度并不重要(尽管它运行得越快,你就会越早意识到它会中断).

除此之外,当JIT完成内联时,所显示的两个选项之间几乎没有任何明显差异.

除此之外:这根本不是你的瓶颈.例如,你要对列表什么?搜索?附加?从右边移除?从左边?按索引获取?所有这些都是实际花费的时间.不是列表引用查找.