问题列表 - 第6130页

C#:在这种情况下,我是否应该费心检查null?

可以说我有这种扩展方法:

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:在这里给出的答案之后,我被说服开始检查更多的空值.我仍然很懒,所以我开始EnforceLokad共享库中使用该类.可以推荐看一下.而不是我的例子,我可以这样做:

public static bool HasFive<T>(this IEnumerable<T> subjects)
{
    Enforce.Argument(() => subjects);
    return subjects.Count() == 5;
}
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
1
解决办法
1276
查看次数

如何在没有任何中断的情况下播放音频文件?

我正在尝试开发一个简单的iPhone应用程序.我需要在循环中播放声音.如何在没有任何中断的情况下播放音频文件?

iphone objective-c

1
推荐指数
1
解决办法
3978
查看次数

如果验证是错误的,如何不提交表单

如果其中一个验证是错误的,我如何确保表单不会提交?

$('#form').submit(function(){
    validateForm1();
    validateForm(document.forms['dpart2']);
    validateForm(document.forms['dpart3']);                     
}); 
Run Code Online (Sandbox Code Playgroud)

javascript jquery submit

5
推荐指数
2
解决办法
1万
查看次数

如何处理WCF客户端断开连接

如何处理WCF客户端断开连接?

我试过CallBacks但它似乎只有在客户端通过使用"断开连接"按钮"清楚地"断开连接时才有效.

我希望在客户端断开连接时通知我的服务器,即使是手动断开连接或客户端进程崩溃.

c# wcf

5
推荐指数
2
解决办法
6333
查看次数

为什么Func <T,bool>而不是Predicate <T>?

这只是一个好奇的问题,我想知道是否有人有一个很好的答案:

在.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>所使用的几乎所有QueryableEnumerable方法和扩展方法...什么与怎么了?

.net c# predicate func

207
推荐指数
4
解决办法
5万
查看次数

1
推荐指数
2
解决办法
2万
查看次数

将标准输出重定向到syslog

我打算为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和朋友?

c++ unix redirect daemon syslog

14
推荐指数
3
解决办法
1万
查看次数

我如何编写程序来使用python发送和接收短信?

我已经在网上寻找一个好的库,用于发送和接收使用python的短信,但都是徒劳的!

那里有用于python的GSM库吗?

python sms gsm at-command

5
推荐指数
1
解决办法
6946
查看次数

扩展C#Coalesce运算符

在我解释我想做什么之前,如果你看下面的代码,你会明白它应该做什么吗?(更新 - 见下文)

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)

c# extension-methods

14
推荐指数
3
解决办法
2431
查看次数

在Java Eclipse项目中查找未使用的类

我有一个大型Eclipse项目,其中存在几个类,虽然它们不再在任何地方使用,但从未标记为@Deprecated.

我怎样才能轻松找到所有这些?

java eclipse refactoring

71
推荐指数
1
解决办法
4万
查看次数