我想知道为什么!无法应用
这是我的代码:
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正在从文本文件中读取字符串。
请告诉我你是否需要完整的代码。感谢帮助
答案 0 :(得分:6)
问题是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] : '';
答案 1 :(得分: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] : '';
}
}
答案 2 :(得分:2)
!
语法称为逻辑否定运算符,它是一元运算符,这意味着它只能应用于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] : '';