我在静态 Utility 类中有以下内容:
static int[] MonthDays = new int[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};
public static int[] GetListOfAllDaysForMonths()
{
return MonthDays;
}
现在通过在代码中的多个位置调用 GetListOfAllDaysForMonths() 是否有效,我可以避免每次调用此方法时都必须分配和创建一个新的 int[]?
更新:让它只读
static readonly int[]
最佳答案
是的,但您也对一些有趣的副作用持开放态度。考虑一下:
int[] a = GetListOfAllDaysForMonths();
a[3] = 200;
int[] b = GetListOfAllDaysForMonths();
Console.WriteLine(b[3]); // prints 200
更新
鉴于预期用途(下拉列表中日期的默认数字),您将需要许多(我的意思是许多,如数十万或数百万)此类列表以进行此类优化有所作为。我不会花时间从内存分配的角度来优化它;它根本不值得。
现在,我建议您只让一个方法返回一个新的 int[]
(显示为 IEnumerable<int>
)以及每次通话的号码。然后,在以后,如果您碰巧发现这会导致内存或性能问题,那么您可以优化该方法。
关于c# - 这真的是节省分配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646306/