提问人:Learner 提问时间:12/11/2022 最后编辑:Vivek NunaLearner 更新时间:12/17/2022 访问量:251
是否可以在 c# 中使用警告,或者我应该做点什么?
Is it okay warnings in c# or should I do something?
问:
我的代码工作正常,但每次运行代码时,我都会收到我无法理解的警告。 我在我的 linux 终端中运行代码,它说: 将 null 文字或可能的 null 值转换为不可为 null 的类型 这正常吗?还是我应该做点什么? 这是我的代码:
namespace test2;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Choose option: \n1. +\n2. -\n3. *\n4. /");
int num = Convert.ToInt32(Console.ReadLine());
string ext = Console.ReadLine();
if(num == 1){
while(true){
Console.WriteLine("Enter numbers or tap Q to exit:");
int x = Convert.ToInt32(Console.ReadLine());
int y = Convert.ToInt32(Console.ReadLine());
int z = x + y;
Console.WriteLine("{0}+{1}={2}", x,y,z);
if(ext =="Q"){
break;
}
}
}
}
}
我试图在while循环中写ext,但我不能
答:
1赞
Vivek Nuna
12/11/2022
#1
警告是告诉您右侧表达式可能会返回 null 值,而在您的情况下,变量的左侧不可为 null。
引用 Console.ReadLine 的声明,它返回 .string?
所以你可以声明它喜欢摆脱这个警告。 string? ext = Console.ReadLine();
1赞
Paul Albers
12/11/2022
#2
您可以定义一个默认值为 null 的变量,例如
int? num = Convert.ToInt32(Console.ReadLine());
评论
1赞
Klaus Gütter
12/11/2022
Convert.ToInt32 将始终返回一个 int,而不是一个可以为 null 的 int。
0赞
v1cc--
12/11/2022
#3
尝试将 Convert.ToInt32 替换为 int。解析
评论
1赞
Klaus Gütter
12/11/2022
Convert.ToInt32 不是罪魁祸首,它可以优雅地处理 null 输入(返回 0)。
1赞
RezA
12/11/2022
#4
该警告与将可为 null 的类型分配给 nun-nullable 类型有关。一个简单的替代方法是使用这样的方法:int.tryparse()
int num;
int.TryParse(Console.ReadLine(),out num);
0赞
schnitzel_prog
12/16/2022
#5
这就是我所做的,以稍微修复您的代码,我将条件放在 while 循环中,而且您忘记在每次迭代后更新 ext,此外,我更改了将 int 输入转换为 int 的方法。分析而不是 Convert.ToInt32。试试这个,我相信它会按预期工作。
Console.WriteLine("Choose option: \n1. +\n2. -\n3. *\n4. /");
int num = Convert.ToInt32(Console.ReadLine());
if (num == 1)
{
string ext = Console.ReadLine();
while (!ext.Equals("Q"))
{
Console.WriteLine("Enter numbers or tap Q to exit:");
int x = int.Parse(Console.ReadLine());
int y = int.Parse(Console.ReadLine());
int z = x + y;
Console.WriteLine("{0}+{1}={2}", x, y, z);
ext = Console.ReadLine();
}
}
评论