【问题标题】:c# operator ! cannot be appliedc# 运算符!不能应用
【发布时间】:2013-08-12 15:16:21
【问题描述】:

我想知道为什么!无法申请

这是我的代码:

  for (int i = 0; i < rowcol.GetLength(0); i++)
            {
                for (int j = 0; j < rowcol[i].GetLength(0); j++)
                {

                     var top = !((rowcol[i-1][j])) ? rowcol[i-1][j] : '';
                    var bottom = !(rowcol[i+1][j]) ? rowcol[i+1][j] : '';
                    var left = !(rowcol[i][j-1]) ? rowcol[i][j-1] : '';
                    var right = !(rowcol[i][j+1]) ? rowcol[i][j+1] : '';


                }
            }

我有一个锯齿状数组,我正在从文本文件中读取值。我与操作员有错误!不能应用于 string ,但 i 和 j 是 int ,是的 rowcol 正在从文本文件中读取字符串。

如果您需要完整的代码,请告诉我。感谢帮助,谢谢

【问题讨论】:

    标签: c# asp.net operators jagged-arrays


    【解决方案1】:

    问题在于 rowcol[i-1][j] 是一个字符串,并且 !不能应用于字符串。这同样适用于您的四行中的每一行。

    编辑:如果您的目标是检查字符串是否为空或不为空,请尝试:

    var top = !(String.isNullOrEmpty(rowcol[i - 1][j])) ? rowcol[i - 1][j] : '';
    

    以此类推,或者,如果您知道字符串将为空且不为空,则

    var top = (rowcol[i - 1][j]) != null) ? rowcol[i - 1][j] : '';
    

    【讨论】:

      【解决方案2】:

      试试:

      for (int i = 0; i < rowcol.GetLength(0); i++)
      {
          for (int j = 0; j < rowcol[i].GetLength(0); j++)
          {
      
               var top = !(rowcol[i-1][j]=="") ? rowcol[i-1][j] : '';
              var bottom = !(rowcol[i+1][j]=="") ? rowcol[i+1][j] : '';
              var left = !(rowcol[i][j-1]=="") ? rowcol[i][j-1] : '';
              var right = !(rowcol[i][j+1]=="") ? rowcol[i][j+1] : '';
          }
      }
      

      或者,

      for (int i = 0; i < rowcol.GetLength(0); i++)
      {
          for (int j = 0; j < rowcol[i].GetLength(0); j++)
          {
              var top = rowcol[i-1][j]!="" ? rowcol[i-1][j] : '';
              var bottom = rowcol[i+1][j]!="" ? rowcol[i+1][j] : '';
              var left = rowcol[i][j-1]!="" ? rowcol[i][j-1] : '';
              var right = rowcol[i][j+1]!="" ? rowcol[i][j+1] : '';
          }
      }
      

      【讨论】:

        【解决方案3】:

        ! 语法称为逻辑否定运算符,它是一元运算符,这意味着它只能应用于bool 类型的单个操作数。换句话说,您只能对单个布尔量使用 ! 运算符,如下所示:

        if(!String.IsNullOrEmpty(someStringValue))
        {
            // Do something here
        }
        

        您正在尝试将 ! 运算符应用于字符串值,这就是您收到错误的原因。

        您需要将! 运算符应用于布尔量,如下所示:

        var top = !(rowcol[i-1][j] == String.Empty) ? rowcol[i-1][j] : '';
        
        OR
        
        var top = !(String.isNullOrEmpty(rowcol[i - 1][j])) ? rowcol[i - 1][j] : '';
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多