当前位置: 首页 > 知识库问答 >
问题:

Foreach变量未为空检查后仍然给出警告

钱嘉致
2023-03-14

请参见此示例:

var list = new List<string?>();

foreach (string item in list.Where(i => i != null))
{
    if (item.Length == 2)
    {
        ...
    }
}

在此示例中,我在两个地方获得了可能的空引用。的Foreach变量和解除引用的长度if。第二个我可以很容易地通过添加一个像这样的该死的(空原谅)运算符来修复:项目!。长度

有没有办法对第一个做同样的事情?我知道我可以将其标记为可为空的字符串,并再次检查,但是,我已经检查过了。

共有1个答案

祖新觉
2023-03-14

使用Where应用筛选时,可以消除所有空值,但这不会更改值的类型
您只需将筛选后的结果强制转换为正确的类型:

foreach (string item in list.Where(i => i != null).Select(x => x!))
 类似资料:
  • 问题内容: 在这段代码中,最后,我为c1分配了一个值,但是当我打印它时,我在所有c1字段中都得到了null。我为Cliente类写下了代码。我想打印我给c1的所有值,但我不知道为什么在所有字段中都打印null。我使用调试器遵循代码,直到将所有值分配给新变量的语句为止,一切都正确。 问题答案: 你应该改变这个 至 您正在为方法参数而不是字段分配值。同样适用于构造函数中的所有参数。

  • 问题内容: 有什么最短的方法吗? 如果我是正确的,应该用? 有可能,并且在一行中写(也许是数组?)而不重复? 问题答案: 如果要测试变量是否 确实 是,请使用标识运算符: 如果要检查是否未设置变量: 或者,如果变量不为空,则为空字符串,零,..: 如果要测试变量是否不是空字符串,也将足够:

  • 我想检查变量是否为空: 此代码基于:https://www.thomasmaurer.ch/2010/07/powershell-check-variable-for-null/,但这不起作用。 我该怎么解决这个问题? ps。堆栈中有东西

  • 问题内容: 在此代码中。 我们向函数传递值。可以正常编译,但是在运行时提供了一个我没想到的。为什么它引发异常,而不是评估条件并显示“字符串为空”? 假设传递给实际参数的值是从某个进程生成的。假定该进程错误地返回了一个值并将其馈送到testFun。如果是这种情况,如何验证传递给函数的值是否为null? 一种(奇怪的)解决方案可能是将形式参数分配给函数内部的某个变量,然后对其进行测试。但是,如果有许多

  • 问题内容: 我想知道上面的代码是否可用于检查变量是否为null或为空。 问题答案: 是的,该代码正是这样做的。 您还可以使用: 编辑: 使用添加的值信息,您需要: 一个值不能包含值。

  • DescriptionServer遇到了一个内部错误(),它无法满足此请求。 例外 jasperException:java.lang.NullPointerException根本原因 NullPointerException

  • 问题内容: 我有一个存储在变量var中的文件描述符。如何在以后的阶段检查该描述符是否有效? 现在,我想检查var1(仍保留打开的描述符)是否仍然有效。是否有任何API? 问题答案: 是检查是否有效的打开文件描述符的最便宜的规范方法。如果需要大量检查,则使用零超时并将成员设置为0并在返回后进行检入更为有效。 话虽如此,“检查给定资源句柄是否仍然有效”操作几乎总是根本上是不正确的。释放资源句柄后(例如

  • 修剪docker时遇到了问题。构建映像后,我运行“docker系统修剪-卷-a-f”,但它不会从“/var/lib/docker/overlay2”释放空间。请参阅下面 在构建映像之前,请先释放磁盘空间 塑造形象 图像生成后的大小: 它只释放了122.2MB。修剪后的尺寸: 如您所见,共有0个容器/图像: 但是"/var/lib/docker/overlay2"的大小只从3.9G减少到3.7G。如