我最近在使用一个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#陷阱会很有用.
在这个答案中,https: //stackoverflow.com/a/8649429/1497 Eric Lippert说"我们很有可能在下一版本的C#中解决这个问题;对于开发人员而言,这是一个主要的痛点". foreach循环使用变量.
在下一个版本中,每次运行"foreach"循环时,我们将生成一个新的循环变量,而不是每次都关闭相同的变量.这是一个"突破"的变化,但在绝大多数情况下,"休息"将是修复而不是导致错误.
我无法找到任何表明此更改尚未完成的内容.有没有迹象表明这是foreach循环在C#5中的工作方式?
为什么GetHashCode不是像.NET中的HashCode这样的属性?
我只是处理字符串,我发现自己很恼火,字符串可以为空.所以,我必须拥有
if((teststring??string.Empty)==string.Empty)
Run Code Online (Sandbox Code Playgroud)
到处都是.会串吗?在需要它的相对较少的情况下(dbs,白痴用户输入等)允许可空性是如此困难.在我想要某种形式的const正确性的情况下,我也发现自己不得不导出只读接口.那么,C#语言构建/决定会让你烦恼么?
编辑:感谢isnullorempty功能,我以前没见过!仍然不会减轻我可以为空的烦恼:D
假设主线程正在生成一个新线程t1,我在t1上运行的代码如何找到主线程的线程id(使用c#)?
编辑:
我不控制新线程的创建.所以我不能将任何参数传递给线程.
谢谢.