gpt4 book ai didi

c# - 当变量类型为 [int?] 时,为什么我必须在 C# 中强制转换为 (int?)

转载 作者:行者123 更新时间:2023-11-30 13:27:03 26 4
gpt4 key购买 nike

有人可以向我解释为什么我必须将 null 转换为 int 的逻辑原因吗?

什么时候左边的参数类型可以有它们的两种类型?

代替做

  int? k = (DateTime.Now.Ticks%5 > 3 ? 1 : null);

我必须做

  int? k = (DateTime.Now.Ticks%5 > 3 ? 1 : (int?) null);

虽然 int? k = null 完全有效。

反例:

我不必在:

string k = (DateTime.Now.Ticks%5 > 3 ? "lala": null);

最佳答案

int? k = (DateTime.Now.Ticks%5 > 3 ? 1 : (int?) null);

在这种情况下,我们得到的是 1 是 intnull 实际上是 null现在的困惑是三元运算符被混淆为什么是返回类型 intnull 并且由于它的 int 它不会接受

因此您需要将其转换为可为空的 int

现在在另一种情况下,您有一个字符串,而 null 对于 string

来说是完全可以接受的

更多解释可以在 Type inference - Eric 找到

The second and third operands of the ?: operator control the type of the conditional expression. Let X and Y be the types of the second and third operands. Then,

  • If X and Y are the same type, then this is the type of the conditional expression.

  • Otherwise, if an implicit conversion exists from X to Y, but not from Y to X, then Y is the type of the conditional expression.

  • Otherwise, if an implicit conversion exists from Y to X, but not from X to Y, then X is the type of the conditional expression.

  • Otherwise, no expression type can be determined, and a compile-time error occurs.

关于c# - 当变量类型为 [int?] 时,为什么我必须在 C# 中强制转换为 (int?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14746355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com