繁体   English   中英

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

[英]What is the best way to get a static List<T>?

我认为需要重新提出我的问题。

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

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

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; }
}

旧问题:

什么是获得static List<T> “最佳实践”,为什么?

代码1:

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

代码2:

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

public static List<MessagingDelivery> MessagingDeliveryList
    { get { return messagingDeliveryList; } }

我认为代码1是最快的方法。 使用代码2有充分的理由吗?

都不行 静态List<T>的名称听起来像一个正在使用的对象(而不是不变的配置数据),它的运行速度并不快也不慢:它只是被破坏了。 坏代码可以运行多快都无关紧要(尽管运行得越快,您越会注意到它坏的越早和越频繁)。

除此之外,在JIT完成内联时,显示的两个选项之间几乎没有任何显着差异。

除此之外:这根本不是您的瓶颈。 例如,您将如何处理列表? 搜索? 附加? 从-删除-对吗? 从左边? 通过索引获取? 所有这些都是实际花费的时间。 不是列表参考查找。

虽然第一个将在头发上更快,但我要说第二个从长远来看将通过限制对访问器的访问而更易于维护。

举一个平庸的例子:如果在几周后突然需要处理加密或有限的访问权限,则只有一个地方可以进行更改。 在第一个示例中,您需要在程序中搜索可访问列表的位置,这对您的时间没有多大作用。 特别是对于安全性,如果您开始在整个程序中转储访问令牌或密钥,甚至可能会很危险。

因此,这取决于您的需求。 在生产中,除非对于方法调用/返回而言,额外的几个循环对于该目的而言是很重要的(在某些情况下可能确实如此),否则我将选择第二个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM