我想要重新提出我的问题.
我的问题是.获得我可以在整个项目中使用的相同列表的最佳方法是什么?
我的代码现在看起来像这样:
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?
都不是.List<T>名称听起来像一个活跃使用的对象(而不是,例如,不可变配置数据)的静态不是快或慢:它只是被打破.破坏代码的运行速度并不重要(尽管它运行得越快,你就会越早意识到它会中断).
除此之外,当JIT完成内联时,所显示的两个选项之间几乎没有任何明显差异.
除此之外:这根本不是你的瓶颈.例如,你要对列表做什么?搜索?附加?从右边移除?从左边?按索引获取?所有这些都是实际花费的时间.不是列表引用查找.