【发布时间】:2018-02-18 23:48:16
【问题描述】:
出于好奇:
此代码有效并执行:
public class Program
{
private static DateTime date;
public static void Main()
{
Console.WriteLine(date.ToString("o"));
}
}
看到它在.NET Fiddle上工作
但这甚至不能编译(未分配的局部变量):
public class Program
{
public static void Main()
{
DateTime date;
Console.WriteLine(date.ToString("o"));
}
}
看到它(不是)在.NET Fiddle上工作
DateTime 是一种不可为空的值类型,因此它不需要被分配和初始化以具有值,它有一个默认值。
那么为什么编译器允许 DateTime 字段版本编译而不让局部变量版本编译?当代码编译成 IL 时,是什么阻止了值类型局部变量的使用?
【问题讨论】:
-
可能取决于变量所在的位置,堆栈与堆
标签: c# .net datetime compiler-errors compilation