Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接受null的扩展方法的可接受名称_C#_.net - Fatal编程技术网

C# 接受null的扩展方法的可接受名称

C# 接受null的扩展方法的可接受名称,c#,.net,C#,.net,我真的不喜欢调用String.IsNullOrEmpty(str)。这使我需要首先考虑“String”类,然后在对象“str”上调用它 我喜欢调用str.IsNullOrEmpty(),这不需要我考虑“String”类 问题是扩展方法接受null实例来调用,这不是调用普通方法时的常见情况 我的问题是,您认为接受null的扩展方法的转换名称是什么 对于字符串,这很简单,“IsNullOrEmpty()”(任何包含“IsNull”的内容)对我来说都不错 对于其他的,比如GetDisplayName(

我真的不喜欢调用String.IsNullOrEmpty(str)。这使我需要首先考虑“String”类,然后在对象“str”上调用它

我喜欢调用str.IsNullOrEmpty(),这不需要我考虑“String”类

问题是扩展方法接受null实例来调用,这不是调用普通方法时的常见情况

我的问题是,您认为接受null的扩展方法的转换名称是什么

  • 对于字符串,这很简单,“IsNullOrEmpty()”(任何包含“IsNull”的内容)对我来说都不错

  • 对于其他的,比如GetDisplayName(),我们是否将其命名为“NullOrGetDisplayName”


  • NullSafeGetDisplayName
    GetDisplayNameNullSafe
    如何,这表明即使调用它的对象是
    null
    ,调用也是安全的?

    关于
    NullSafeGetDisplayName
    GetDisplayNameNullSafe
    如何,表示即使调用它的对象是
    null

    也可以安全地调用
    null
    类有一个名为
    GetValueOrDefault
    的方法。同样的形式也可以用于某些扩展方法:
    GetDisplayNameOrDefault
    或者更具体的
    getDisplayNameOrFull
    或者
    GetDisplayNameOrEmpty
    可空的
    null
    类有一个名为
    GetValueOrDefault
    的方法。同样的形式也可以用于某些扩展方法:
    GetDisplayNameOrDefault
    或者更具体的
    getDisplayNameOrFull
    或者
    GetDisplayNameOrEmpty
    对于可以查询“null”对象的方法,我会选择
    mystring.IsNullOrEmpty()
    ,它显然是在检查字符串是否为null,只要您在整个代码库中与您的命名保持一致,就不会有人在理解/学习它的含义时遇到任何困难


    对于将某些内容应用于对象并忽略空对象的方法,我会使用“Safe”,如
    SafeGetDisplayName()
    -这是一个常见且长期使用的标准(MFC中的c.f.GetSafeHandle())

    对于可以查询“null”对象的方法,我会选择
    mystring.IsNullOrEmpty()
    ,它显然是在检查字符串是否为空,只要您在整个代码库中与您的命名保持一致,就不会有人在理解/学习它的含义时遇到任何困难


    对于将某些内容应用于对象并忽略空对象的方法,我会使用“Safe”,如
    SafeGetDisplayName()
    -这是一个常用且长期使用的标准(MFC中的c.f.GetSafeHandle())

    首先,您的想法是错误的,应该调整它。对空对象调用方法是不正确的;事实上,这正是你想知道它是否为空的原因


    其次,一个方法意味着它接受它所拥有的参数中的null。我认为命名约定在这里不合适。您可以通过(比如)从类中消除null。首先,您的想法是错误的,您应该调整它。对空对象调用方法是不正确的;事实上,这正是你想知道它是否为空的原因


    其次,一个方法意味着它接受它所拥有的参数中的null。我认为命名约定在这里不合适。您可以通过,比如说,从类中消除null。

    我不理解您在这里的想法。编写诸如nullObject.IsNullOrWhatever()之类的东西根本没有任何意义。您可能喜欢静态表单,也可能不喜欢静态表单,但我觉得您的解决方案真的不对。

    我不明白您在这里的想法。编写诸如nullObject.IsNullOrWhatever()之类的东西根本没有任何意义。您可能喜欢静态表单,也可能不喜欢静态表单,但我觉得您的解决方案真的错了。

    我对此表示怀疑。例如,((string[])arStr.FirstOrDefault()也使用“Default”关键字,但在空实例上调用该方法是不安全的。对此我有疑问。例如,((string[])arStr.FirstOrDefault()也使用“Default”关键字,但在null实例.Thx上调用该方法进行应答是不安全的。我对规格一无所知。现在就可以使用了吗?另外,你的意思是我应该保留使用String.IsNullOrEmpty(str)的旧方法,并在实际环境中遇到一些冲突(我认为安全/防御编程而不是方便编程是完全可以的)?事实上,你可能可以通过代码契约做同样的事情:我认为(不确定)包含在最新版本的内容(.NET 4或VS 2010或类似版本)中。我想是的,你应该受到一些不便,以确定你是否应该考虑消除NULL(这将是更多的工作)。FWIW,键入
    string.IsNullOrEmpty(foo)
    需要1秒的时间,一般来说,在此基础上,我会做一些“好的”(报告错误,无论什么)。一般来说,我不认为它是浪费的。很多人认为,在一个空的对象上打一个电话是“邪恶的”,但是只要看得见呼叫者的意思,它就非常优雅和安全。在计算机编程中使用“null”有很长的历史(例如,当您想要删除数据时,将数据管道化到/dev/null,在SQL中,null可以被认为意味着数据库条目是“空的”),它自然适合集合:比较“if(collection!=null&&collection.Count>0)”和“if”(if!=null&&collection.Count>0)的优雅性/可读性(托收。我是空的)。意思令人困惑吗?我认为空集合直觉上一定是空的。@Jason:是的,严格地说,根据你最初的定义,它对大多数人来说都是令人困惑的。我能发明的任何东西都不会让我困惑,因为我相信我自己是这样的。以某种标准方式编程的要点是你的代码是可读的。记住旧的sa吗英,代码的读取频率比