for (int i = 0; i < 10; i++)
{
Foo();
}
int i = 10; // error, 'i' already exists
----------------------------------------
for (int i = 0; i < 10; i++)
{
Foo();
}
i = 10; // error, 'i' doesn't exist
Run Code Online (Sandbox Code Playgroud)
根据我对范围的理解,第一个例子应该没问题.它们都不允许的事实似乎更奇怪.肯定'我'要么在范围内,要么不在范围内.
有什么不明显的范围我不明白这意味着编译器真的无法解决这个问题?或者只是一个保姆状态编译案例?
我对如何使用ELMAH以编程方式记录的错误添加消息感到困惑.
例如:
public ActionResult DoSomething(int id)
{
try { ... }
catch (Exception e)
{
// I want to include the 'id' param value here, and maybe some
// other stuff, but how?
ErrorSignal.FromCurrentContext().Raise(e);
}
}
Run Code Online (Sandbox Code Playgroud)
看来Elmah所能做的就是记录原始异常,我怎样才能记录自己的调试信息?
我正在为我拥有的图表工具动态生成图像映射.
我希望能够在区域标签上设置边框或颜色,以便我可以检查所有内容是否使用正确的坐标生成,但是一些研究表明这是不可能的.
那么检查我的图像映射的最简单方法是正确的吗?是否有任何浏览器工具可以"可视化"这些区域?
我正在尝试对日期列表进行排序,但我正在努力处理无法一致处理的空日期.
所以我需要这样的东西:
var date = Date.parse(dateString);
if (!date) {
date = Date.MinValue;
}
Run Code Online (Sandbox Code Playgroud)
但我很难找到正确的语法.谢谢
更新:该错误被证明是一个不同的问题.我导入了Datejs用于项目的另一部分,所以我没有意识到Datejs定义了一个Date.parse()覆盖标准JavaScript方法的方法.
无论如何,事实证明Datejs有一个奇怪的错误,这意味着它不能正确处理以"A"开头的日期.所以实际上我的零日期正确订购,只是四月和八月的日期随后与他们混在一起.
修复方法是使用Datejs Date.parseExact方法,它允许您提供特定的格式字符串,请参见此处.
我有一个数据表:
<td> item </td><td> order code </td><td> price </td>
我正在用jQuery处理表,需要查找订单代码:
$.each($('.productList tbody tr'), function() {
var orderCode = $(this).find('td:eq(1)').html().trim();
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
如果没有产品,表格会显示一条消息:
<td colspan="3"> There are no products to display </td>
上面的行导致jQuery函数爆炸.使用条件选择器忽略"无产品"行最有效的方法是什么?是否有一个选择colspan="1"或colspan is not set或不管它需要是什么?
我有一个使用一些配置设置的扩展方法.我已经宣布这些为static.
public static class Extensions
{
static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
// ... etc
public static void SendEmailConfirmation(this IOrder order) { }
}
Run Code Online (Sandbox Code Playgroud)
我只是想检查一下这是否符合我的意图,因为我并不是100%肯定.我的想法是,我不想继续阅读这些值,我希望它们能够被读取一次,并在Web应用程序的生命周期中进行缓存.这会发生什么?谢谢
我Moq用来测试一些void方法的行为.使用MockBehaviour.Strict的模拟必须在指定每个呼叫Arrange一步.这导致许多测试没有任何Assert(或验证)步骤.通过条件只是测试运行而没有抛出异常.我错过了什么吗?Arrange, Act, Assert使用严格模拟时,模式是否不合适?是否有更多语义方法来布局这些测试?
一个微不足道的例子......
[TestClass]
public void DeleteUser_ShouldCallDeleteOnRepository()
{
// Arrange
var userRepository = new Mock<IUserRepository>(MockBehavior.Strict);
int userId = 9;
userRepository.Setup(x => x.Delete(userId));
var controller = new UserController(userRepository.Object);
// Act
controller.DeleteUser(userId);
// Assert
// ...?
}
Run Code Online (Sandbox Code Playgroud) 只是阅读MSDN文章上重写等式运算符这里
以下片段让我感到困惑......
// If parameter cannot be cast to Point return false.
TwoDPoint p = obj as TwoDPoint;
if ((System.Object)p == null) // <-- wtf?
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
为什么要Object在这里进行null比较?
由于非常晚的主要需求变化,目前正在对应用程序进行相当重要的重构.
我总是觉得,当我做这种事情时,我并没有以非常自律的方式接近它.我的应用程序很可能会在一个状态下每天/几周,它不会构建或需要注释掉大量的代码才能使其编译.
我不喜欢在这种状态下检查源代码控制,所以如果我犯了大错,我常常觉得我没有退缩.我现在正在摧毁我的应用程序,而且我正在控制着100个不同的主题.就像其中一个人,你读到的是出于好奇而将他们的汽车引擎分开的人,然后意识到他们不知道如何将它们全部重新组合在一起.
是否有任何好的资源可以讨论如何以更加渐进和破坏性更小的方式进行重构?有人可以提供任何建议吗?或者每个人都觉得这样吗?
DateTime.Now.AddMilliseconds(1.5); // adds 2 milliseconds
Run Code Online (Sandbox Code Playgroud)
他们到底在想什么呢?如果它不处理小数值,那么创建一个采用double的方法会让我感到非常糟糕.他们为什么不通过调用AddTicks实现这一点并正确处理分数?或者至少采用一个int,这样对调用者来说是透明的吗?
我猜他们必须有一个很好的理由让他们以这种方式实现它,但我想不出它会是什么.有人可以提供任何见解吗?
编辑:只是为了进一步强调这一点:
AddSeconds(1.5); // Adds 1500 milliseconds
Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×2
datetime ×2
html ×2
null ×2
casting ×1
clr ×1
comparison ×1
elmah ×1
equality ×1
html-table ×1
imagemap ×1
javascript ×1
jquery ×1
moq ×1
oop ×1
refactoring ×1
rounding ×1
scope ×1
static ×1
tdd ×1
unit-testing ×1