C# 获取静态列表的最佳方法是什么<;T>;?
我想我需要重新提出我的问题 我的问题是。在我的整个项目中,获得相同列表的最佳方法是什么 我的代码现在看起来像这样:C# 获取静态列表的最佳方法是什么<;T>;?,c#,list,static,C#,List,Static,我想我需要重新提出我的问题 我的问题是。在我的整个项目中,获得相同列表的最佳方法是什么 我的代码现在看起来像这样: public static class MessagingController { static List<MessagingDelivery> MessagingDeliveryList = Messaging.GetMessagingDeliveryList(); } internal static class Messaging { static Li
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; }
}
公共静态类MessagingController
{
静态列表MessagingDeliveryList=消息传递。GetMessagingDeliveryList();
}
内部静态类消息传递
{
静态列表消息传递列表;
静态消息传递()
{MessagingDeliveryList=新列表();}
内部静态void CreateMessagingText(短引用、短编号、字符串文本)
{MessagingDeliveryList.Add(新的MessagingDelivery(引用、编号、文本));}
内部静态void ChangeMessagingDelivery(短引用、字符串状态、字符串错误)
{MessagingDelivery.ChangeStatus(引用、状态、错误);}
内部静态列表GetMessagingDeliveryList()
{返回MessagingDeliveryList;}
}
老问题:
获取静态列表的“最佳实践”是什么?为什么
代码1:
public static List<MessagingDelivery> messagingDeliveryList
= Messaging.GetMessagingDeliveryList();
公共静态列表消息发送列表
=Messaging.GetMessagingDeliveryList();
代码2:
static List<MessagingDelivery> messagingDeliveryList
= Messaging.GetMessagingDeliveryList();
public static List<MessagingDelivery> MessagingDeliveryList
{ get { return messagingDeliveryList; } }
静态列表消息发送列表
=Messaging.GetMessagingDeliveryList();
公共静态列表MessagingDeliveryList
{get{return messagingDeliveryList;}}
我认为代码1是最快的方法。使用代码2有什么好的理由吗?虽然第一个要快一点,但我想说的是,通过限制对访问器的访问,从长远来看,第二个将更容易维护
举一个平庸的例子:如果几周后,你突然需要处理加密或有限的访问权限,你只有一个地方可以进行更改。在第一个示例中,您需要在程序中搜索访问您列表的位置,这对您的时间利用效率要低得多。特别是出于安全考虑,如果您开始在整个程序中转储访问令牌或密钥,这甚至可能是危险的
所以,这取决于你需要什么。在生产环境中,除非一个方法调用/返回的几个额外周期对于这个目的很重要(在某些情况下可能是这样),否则我会选择第二个周期。而第一个周期会快一些,我想说的是,通过限制对访问器的访问,从长远来看,第二个将更容易维护
举一个平庸的例子:如果几周后,你突然需要处理加密或有限的访问权限,你只有一个地方可以进行更改。在第一个示例中,您需要在程序中搜索访问您列表的位置,这对您的时间利用效率要低得多。特别是出于安全考虑,如果您开始在整个程序中转储访问令牌或密钥,这甚至可能是危险的
所以,这取决于你需要什么。在生产环境中,除非一个方法调用/返回的几个额外周期对于这个目的很重要(在某些情况下可能是这样),否则我将使用第二个周期。静态列表
的名称听起来像是一个活动使用的对象(而不是,比如说,不变的配置数据),它既不快也不慢:它只是被破坏了。中断的代码运行得有多快并不重要(尽管它运行得越快,您会越早、越频繁地注意到它中断)
除此之外,当JIT完成内联时,所示的两个选项之间几乎不会有任何明显的差异
除此之外:这根本不是你的瓶颈。例如,您打算对列表做什么?搜索?追加从右边移走?从左边?按索引提取?所有这些都是实际花费时间的地方。不是列表引用查找。也不是。静态列表
的名称听起来像是一个活动使用的对象(而不是,比如说,不变的配置数据),它既不快也不慢:它只是被破坏了。中断的代码运行得有多快并不重要(尽管它运行得越快,您会越早、越频繁地注意到它中断)
除此之外,当JIT完成内联时,所示的两个选项之间几乎不会有任何明显的差异
除此之外:这根本不是你的瓶颈。例如,您打算对列表做什么?搜索?追加从右边移走?从左边?按索引提取?所有这些都是实际花费时间的地方。不是列表引用查找。如果您只需要简单地获取列表,那么就没有理由使用代码2。静态
在这里并不重要,更多的是关于字段和属性之间的差异:您可以列出两者在功能/性能方面的差异,或者引用讨论这两个选项的源代码吗?如果你不能,那么这个问题就没有什么意义了。你认为这会是你代码中最大的性能问题吗?如果你只需要简单地获取列表,那么就没有理由使用代码2。静态
在这里不重要,更多的是关于字段和属性之间的区别:您能否列出这两个选项在功能/性能方面的区别,或者引用一个讨论这两个选项的来源?如果你不能,那么这个问题就没有什么意义了。你认为这会成为你代码中最大的性能问题吗?我认为不会更快。JIT编译器无论如何都会对其进行优化。这很难说。考虑到访问器可以做什么,它可能不值得本质上的语义级优化(当然,我们可以只检查CIL,但是…)。无论哪种方式,我们谈论的可能最多是一打指令。几乎看不到。我认为不会更快。JIT编译器无论如何都会对其进行优化。这很难说。考虑到访问器可以做什么,它可能不值得本质上的语义级优化(当然,我们可以只检查CIL)