谁能告诉我为什么以下情况不会发生?
List<DateTime> timestamps = new List<DateTime>();
timestamps.Add(DateTime.Parse("8/5/2011 4:34:43 AM"));
timestamps.Add(DateTime.Parse("8/5/2011 4:35:43 AM"));
foreach(DateTime x in timestamps)
{
if (Object.ReferenceEquals(x, timestamps.First()))
{
// Never hit
Console.WriteLine("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
因为DateTime是一个值类型,不可变,所以即使值是引用也不相等.
你有意这样做吗?价值比较:
if (DateTime.Compare(x, timestamps.First()) == 0)
{
// Never hit
Console.WriteLine("hello");
}
Run Code Online (Sandbox Code Playgroud)
传递值类型并按值进行比较.这就是为什么他们被称为"价值类型".
参考类型通过引用传递和比较.这就是为什么他们被称为"参考类型".
DateTime是值类型.
因此,您试图通过引用比较两个值.那不行.它总是假的.
你能解释为什么你会期待不同的东西吗?
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |