我想在对象上执行'foreach'时,对最后一个循环迭代做一些不同的事情.我正在使用Ruby,但C#,Java等也是如此.
list = ['A','B','C']
list.each{|i|
puts "Looping: "+i # if not last loop iteration
puts "Last one: "+i # if last loop iteration
}
Run Code Online (Sandbox Code Playgroud)
所需的输出相当于:
Looping: 'A'
Looping: 'B'
Last one: 'C'
Run Code Online (Sandbox Code Playgroud)
显而易见的解决方法是使用代码将代码迁移到for循环'for i in 1..list.length'
,但for each解决方案感觉更优雅.在循环期间编写特殊情况的最优雅方法是什么?可以用foreach完成吗?
我对下面的代码感到困惑,
Developer devCopy = (Developer)dev.Clone();
Run Code Online (Sandbox Code Playgroud)
Developer类的克隆方法只是创建一个Employee克隆,然后是开发人员如何获得另一个开发人员克隆.
public abstract class Employee
{
public abstract Employee Clone();
public string Name { get; set; }
public string Role { get; set; }
}
public class Typist : Employee
{
public int WordsPerMinute { get; set; }
public override Employee Clone()
{
return (Employee)MemberwiseClone();
}
public override string ToString()
{
return string.Format("{0} - {1} - {2}wpm", Name, Role, WordsPerMinute);
}
}
public class Developer : Employee
{
public string PreferredLanguage { get; set; } …
Run Code Online (Sandbox Code Playgroud) 我正在使用Server.Transfer.一切正常,但异常日志显示以下异常.
System.Threading.ThreadAbortException: Thread was being aborted.
at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()
at System.Web.HttpServerUtility.Transfer(String path, Boolean preserveForm)
at System.Web.HttpServerUtility.Transfer(String path)
Run Code Online (Sandbox Code Playgroud)
任何想法避免上述异常.
我遇到一个asp.net错误.我的应用程序在开发和测试environemnt上工作得很好.但在生产时它会给我以下错误:
无法加载文件或程序集"someProject"或其依赖项之一.访问被拒绝.
using(...)语句是try {} finally {}的语法糖.
但是,如果我有一个如下所示的使用声明:
using (FileStream fs = File.Open(path))
{
}
Run Code Online (Sandbox Code Playgroud)
现在我想要捕获打开此文件可能导致的异常(这是相当高风险的代码,因为它可能因环境而失败),但是如果我在里面写try-catch会不会重复?当代码被编译为IL时,我假设当代码被JIT时,重复将被删除?
但是,我想要捕获打开文件可能导致的异常(所以我应该将try-catch包装在using语句的作用域之外),以及我在using块中做的任何异常,所以我应该添加try-catch在街区内.
这似乎是我在CLR可能在里面做了很多重复.CLR是否添加了catch子句?
我的同事认为使用声明是混乱的(但这是因为由于我需要对它们进行硬编码,所以单行很长,因为我需要非常快速地更改它们并且无法访问代码库的其他部分).说同事不使用using语句,但是using语句和try-finally/try-catch-finally之间是否存在任何功能差异?我确实看到了一个这样的案例,其中WCF服务有一个关于使用finally和返回值的一个鲜为人知的角落案例(最后的事情).解决方案是使用检查块.在C#中有这样的东西吗?
另一方面,是否所有类型都实现了非托管资源的IDisposale所有者?与我的朋友的讨论指出了不是的答案.(我也在本论坛的使用部分阅读了一些主题,其中有一些非常好的知识).
我在php页面中遇到异常.
SoapFault异常:[HTTP]错误获取http标头
我读了几篇文章,发现default_socket_timeout需要配置.所以我把它设置如下.default_socket_timeout = 480
我仍然得到同样的错误.有人可以帮我吗?
我正在从单色位图中读取位.我short
以相反的顺序将每16位存储在a 中.如果位图中的位为黑色,则存储1.如果为白色,则存储0.
例如:对于位图:bbbw bbbw bbbw wwww
我的简称是:0000 0111 0111 0111
我尝试这样做的第一种方式是:
short m;
// ...
Color c = bmp.GetPixel(j, i);
if (c.R == Color.Black)
m |= short.MinValue;
m >>= 1;
// ...
Run Code Online (Sandbox Code Playgroud)
经过一次任务和班次后,我得到了预期的-32768(1000 0000 0000 0000).
第二次我得到-16384(1100 0000 0000 0000).
我更改了我的代码使用ushort
并将if
行更改为s |= (ushort)Math.Pow(2, 15);
现在它的工作原理.
我的问题是:为什么标志位不会在.NET中转移?有没有办法改变标志位?
当需要更高级的东西时,我总是使用其中一个<br />
或一个<div/>
标签.
是否<p/>
还鼓励使用标签?
我的老板要我创建一个.aspx页面,文本框以简化输入信用卡信息,这样我们就可以在CreditCard服务中测试一些方法.
多数民众赞成,但我认为我们可以为此进行单元测试.唯一的问题是,我们只需更改传递给单元测试的变量值,而不是将内容输入到Web表单中.
任何人都可以告诉我,如果我们因为没有进行单元测试而不是.aspx页面进行测试并输入测试数据以测试对我们某些方法的调用而感到疯狂吗?
他最终会告诉我单元测试需要花费太多时间来设置(因为我试图告诉他我们需要进行单元测试),这是一个蹩脚的愚蠢借口.
你如何格式化try..catch.finally块?特别是当它只包含少量代码时,它会使所有内容都受到影响,并且在我看来代码变得难以理解和难看.
如:
try
{
MyService service = new Service();
service.DoSomething();
return something;
}
catch (Exception ex)
{
LogSomething();
return somethingElse;
}
finally
{
MarkAsComplete();
service.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
这7行代码变成了16行混乱.
有关更好的try..catch ..最终格式化的任何建议?
c# ×6
.net ×1
asp.net ×1
assemblies ×1
bit-shift ×1
clone ×1
dependencies ×1
exception ×1
foreach ×1
formatting ×1
html ×1
java ×1
layout ×1
loops ×1
markup ×1
php ×1
prototype ×1
ruby ×1
soap ×1
tags ×1
unit-testing ×1
using ×1
web-services ×1