如果调用代码只迭代集合,是否有任何理由将内部集合公开为ReadOnlyCollection而不是IEnumerable?
class Bar
{
private ICollection<Foo> foos;
// Which one is to be preferred?
public IEnumerable<Foo> Foos { ... }
public ReadOnlyCollection<Foo> Foos { ... }
}
// Calling code:
foreach (var f in bar.Foos)
DoSomething(f);
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,IEnumerable是ReadOnlyCollection接口的一个子集,它不允许用户修改集合.因此,如果IEnumberable接口足够,那么就是要使用的接口.这是推理它的正确方法还是我错过了什么?
谢谢/ Erik
我发现这个问题关于哪些语言优化尾递归.为什么C#不会优化尾递归?
对于具体情况,为什么不将此方法优化为循环(Visual Studio 2008 32位,如果这很重要)?:
private static void Foo(int i)
{
if (i == 1000000)
return;
if (i % 100 == 0)
Console.WriteLine(i);
Foo(i+1);
}
Run Code Online (Sandbox Code Playgroud) 我希望在网络前端完成一些工作,ping局域网上的许多计算机并检索有关响应时间的数据.哪个是最有用和最有效的:Perl或Python?
最相关的谷歌结果似乎表明,为了访问日志,我们必须将我们自己的日志表解密到数据库,并使Reporting Services写入它.
简单地说:肯定必须有Reporting Services的纯文本日志文件吗?如果是,这些文件存储在哪里?
我试图将固定大小的控件集中在一个表单中.
出于兴趣,有没有非愚蠢的方式这样做?我真正想要的是类似于text-align css属性的东西.
目前,我正在将周围表单的padding属性设置为合适的大小,并将控件的Dock属性设置为fill.
eclipse.ini文件中-vm的默认值是什么?如果我没有设置此值,系统将查找此值.谢谢!.
我想获取特定属性的PropertyInfo.我可以用:
foreach(PropertyInfo p in typeof(MyObject).GetProperties())
{
if ( p.Name == "MyProperty") { return p }
}
Run Code Online (Sandbox Code Playgroud)
但必须有办法做类似的事情
typeof(MyProperty) as PropertyInfo
Run Code Online (Sandbox Code Playgroud)
在那儿?还是我坚持做一个类型不安全的字符串比较?
干杯.
在PHP中,您可以:
print_r($var) 要么 vardump($var)
它打印有关变量的"人类可读"信息.
Ruby/Rails中是否有等效的函数/帮助器?
c# ×4
.net ×3
center-align ×1
collections ×1
eclipse ×1
f# ×1
ienumerable ×1
iphone ×1
java ×1
networking ×1
objective-c ×1
optimization ×1
perl ×1
python ×1
reflection ×1
ruby ×1
sql ×1
sql-server ×1
winforms ×1