c#操作员!无法应用

本文关键字:应用 操作员 | 更新日期: 2023-09-27 18:27:22

我想知道为什么!无法应用

这是我的代码:

  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] : '';

                }
            }

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

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

c#操作员!无法应用

p>问题是rowcol[i-1][j]是一个字符串,并且!无法应用于字符串。这同样适用于你的四行中的每一行。

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

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

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

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

尝试:

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] : '';
    }
}

!语法称为逻辑求反运算符,它是一元运算符,这意味着它只能应用于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] : '';