gpt4 book ai didi

c# - 无法在静态方法中创建静态变量?

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:49 27 4
gpt4 key购买 nike

为什么这行不通?

public static int[] GetListOfAllDaysForMonths()
{
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};

return MonthDays;
}

我不得不将变量声明移到方法之外:

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

此外,通过这种方式创建它,我们只有这个数组的一个实例在内存中 float ?此方法位于静态类中。

最佳答案

C# 根本不支持静态局部变量。任何静态的东西都需要是类型的成员或类型本身(即静态类)。

顺便说一句,VB.Net 确实支持静态局部变量,但它是通过在编译时重写代码以将变量移动到类型级别(并使用 Monitor 类锁定初始分配以实现基本线程安全)来实现的.

[接受后附录]
就个人而言,你的代码示例对我来说看起来毫无意义,除非你将它与真实的月份联系起来。我会做这样的事情:

public static IEnumerable<DateTime> GetDaysInMonth(DateTime d)
{
d = new DateTime(d.Year, d.Month, 1);
return Enumerable.Range(0, DateTime.DaysInMonth(d.Year, d.Month))
.Select(i => d.AddDays(i) );
}

另请注意,我没有使用数组。 Arrays should be avoided in .Net ,除非您真的知道为什么要使用数组而不是其他东西。

关于c# - 无法在静态方法中创建静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com