【问题标题】:What does this "!string" mean?这个“!字符串”是什么意思?
【发布时间】:2018-05-01 12:10:37
【问题描述】:

我正在查看我工作场所的旧代码库以记录它并将其重新用于其他项目。 图书馆根本没有记录(甚至没有 cmets),但这没什么大不了的。

我发现了这个奇怪的语法,我在网上找不到解释它是什么...

public bool Validate()
    {
        return !string.IsNullOrWhiteSpace(Code) && !string.IsNullOrWhiteSpace(State);
    }

我知道感叹号是否定运算符,但它只能与布尔变量一起使用。怎么可能说不(字符串)? string 关键字之前的感叹号是什么意思?工具提示也没有帮助..

【问题讨论】:

  • 您检查过文档吗? string.IsNullOrWhiteSpace 返回 bool! 是非运算符
  • string.IsNullOrWhiteSpace(Code) 为真或假。所以, !意思是“不”。
  • 不仅仅是!string,而是!(string.IsNullOrWhiteSpace(Code))——只是没有额外的括号。
  • 请参阅上面的 Gilad Greens 评论或下面我的回答,了解 '!String' 的有效性 - 这是因为 !string.IsNullOrWhiteSpace(somestring) 有效,而不是 !String 本身。
  • 反对票似乎开始有点苛刻 - 这家伙显然真的没有意识到'!'适用于 string 而不是 string 本身的方法,公平地说,在搜索引擎中搜索符号(如感叹号)并不总是那么容易,例如搜索 '!string' 你不会得到任何有用的东西。

标签: c# asp.net .net string operators


【解决方案1】:

!意味着没有。 IsNullOrWhiteSpace 是 String 的一个静态方法,它返回一个布尔值,所以代码返回的是 'Code' 和 'State' 是否都有值。

【讨论】:

    【解决方案2】:

    !表示NOT,如

    **Is `Code` is not a NULL or WhiteSpace**
    And
    **Is `State` is not a NULL or WhiteSpace**
    

    【讨论】:

      【解决方案3】:

      这是标准的逻辑否定运算符。

      【讨论】:

        猜你喜欢
        • 2011-12-06
        • 1970-01-01
        • 2012-02-20
        • 2022-11-27
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多