可以说我有这种扩展方法:
public static bool HasFive<T>(this IEnumerable<T> subjects)
{
if(subjects == null)
throw new ArgumentNullException("subjects");
return subjects.Count() == 5;
}
Run Code Online (Sandbox Code Playgroud)
你觉得这个空检查和异常抛出真的有必要吗?我的意思是,当我使用这种Count方法时,ArgumentNullException无论如何都会被抛出,对吧?
我可以想到我应该这样做的一个原因,但是我想听听别人对此的看法.是的,我问的理由是部分懒惰(想要尽可能少地写),但也因为我认为一堆空检查和异常抛出了一些混乱的方法,这些方法往往最终是他们真的需要.有人应该知道比将null发送到方法更好:p
无论如何,你们怎么想?
注意: Count()是一个扩展方法,将抛出一个ArgumentNullException,而不是一个NullReferenceException.见Enumerable.Count<TSource> Method (IEnumerable<TSource>).如果你不相信我自己尝试=)
注2:在这里给出的答案之后,我被说服开始检查更多的空值.我仍然很懒,所以我开始Enforce在Lokad共享库中使用该类.可以推荐看一下.而不是我的例子,我可以这样做:
public static bool HasFive<T>(this IEnumerable<T> subjects)
{
Enforce.Argument(() => subjects);
return subjects.Count() == 5;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试开发一个简单的iPhone应用程序.我需要在循环中播放声音.如何在没有任何中断的情况下播放音频文件?
如果其中一个验证是错误的,我如何确保表单不会提交?
$('#form').submit(function(){
validateForm1();
validateForm(document.forms['dpart2']);
validateForm(document.forms['dpart3']);
});
Run Code Online (Sandbox Code Playgroud) 如何处理WCF客户端断开连接?
我试过CallBacks但它似乎只有在客户端通过使用"断开连接"按钮"清楚地"断开连接时才有效.
我希望在客户端断开连接时通知我的服务器,即使是手动断开连接或客户端进程崩溃.
这只是一个好奇的问题,我想知道是否有人有一个很好的答案:
在.NET Framework类库中,我们有两个方法:
public static IQueryable<TSource> Where<TSource>(
this IQueryable<TSource> source,
Expression<Func<TSource, bool>> predicate
)
public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
Run Code Online (Sandbox Code Playgroud)
他们为什么用Func<TSource, bool>而不是Predicate<TSource>?好像Predicate<TSource>只由List<T>和Array<T>,而Func<TSource, bool>所使用的几乎所有Queryable和Enumerable方法和扩展方法...什么与怎么了?
我打算为Debian 打包OpenTibia Server.我想要做的其中一件事是添加启动过程/etc/init.d和守护otserv进程.
事实是,我们应该将输出重定向到syslog.这通常通过该syslog()功能完成.目前,代码集中在:
std::cout << "Stuff to printout" << std::endl;
Run Code Online (Sandbox Code Playgroud)
是否有一种适当的,易于添加的方法将标准输出和标准错误输出重定向到syslog中,而无需将每一个"调用"替换为std :: cout和朋友?
我已经在网上寻找一个好的库,用于发送和接收使用python的短信,但都是徒劳的!
那里有用于python的GSM库吗?
在我解释我想做什么之前,如果你看下面的代码,你会明白它应该做什么吗?(更新 - 见下文)
Console.WriteLine(
Coalesce.UntilNull(getSomeFoo(), f => f.Value) ?? "default value");
Run Code Online (Sandbox Code Playgroud)
C#已经有一个null-coalescing运算符,它在简单对象上运行得很好,但如果你需要访问该对象的一个成员则无效.
例如
Console.WriteLine(getSomeString()??"default");
Run Code Online (Sandbox Code Playgroud)
效果很好,但它不会帮助你:
public class Foo
{
public Foo(string value) { Value=value; }
public string Value { get; private set; }
}
// this will obviously fail if null was returned
Console.WriteLine(getSomeFoo().Value??"default");
// this was the intention
Foo foo=getSomeFoo();
Console.WriteLine(foo!=null?foo.Value:"default");
Run Code Online (Sandbox Code Playgroud)
由于这是我经常遇到的事情,我想到使用扩展方法(旧版本):
public static class Extension
{
public static TResult Coalesce<T, TResult>(this T obj, Func<T, TResult> func, TResult defaultValue)
{
if (obj!=null) return func(obj);
else return …Run Code Online (Sandbox Code Playgroud) 我有一个大型Eclipse项目,其中存在几个类,虽然它们不再在任何地方使用,但从未标记为@Deprecated.
我怎样才能轻松找到所有这些?