我最近在使用一个DateTime对象,并写了这样的东西:
DateTime dt = DateTime.Now;
dt.AddDays(1);
return dt; // still today's date! WTF?
Run Code Online (Sandbox Code Playgroud)
intellisense文档AddDays()说它增加了一天的日期,它没有 - 它实际上返回添加了一天的日期,所以你必须写如下:
DateTime dt = DateTime.Now;
dt = dt.AddDays(1);
return dt; // tomorrow's date
Run Code Online (Sandbox Code Playgroud)
这个曾经多次咬过我,所以我认为编制最糟糕的C#陷阱会很有用.
我刚才有一个使用yield返回的方法没有抛出我期望的ArgumentException的情况.我在这里用最简单的可能类重构了这个案例:
class Program
{
static void Main(string[] args)
{
try
{
var listA = FooA(count: 0);
Console.WriteLine("A did not throw exception!");
}
catch (ArgumentException)
{
Console.WriteLine("A threw exception!");
}
try
{
var listB = FooB(count: 0);
Console.WriteLine("B did not throw exception!");
}
catch (ArgumentException)
{
Console.WriteLine("B threw exception!");
}
Console.ReadLine();
}
private static IEnumerable<int> FooA(int count)
{
if(count == 0)
throw new ArgumentException("Count must be above 0");
var list = new List<int>();
for (var i = 0; i < count; …Run Code Online (Sandbox Code Playgroud) 我需要在自己的类中维护集合语义.你不能解释一下,什么是集合语义?据我所知,它是一组必须在类中实现的一些接口.这是真的吗?如果是的话 - 我必须在课堂上实现什么?为什么?这两个接口--ICollection和IEnumerable - 是否足够,或者这些只是最必要的接口?
我正在编写循环链表,使用本文作为帮助.
c# ×3
.net ×2
clr ×1
collections ×1
exception ×1
interface ×1
jit ×1
semantics ×1
yield-return ×1