gpt4 book ai didi

c# - VisualStudio2008奇怪的编译警告,需要解释

转载 作者:太空狗 更新时间:2023-10-30 00:45:51 25 4
gpt4 key购买 nike

只是对 VisualStudio 2008 编译器的快速提问。

我们确实启用了编译器警告被视为错误的功能,但今天我认识到以下行为:

static void Main(string[] args)
{
int number = 0;
DateTime dateTime = DateTime.Now;
}

编译此片段只会产生一个警告:“已分配变量‘number’,但从未使用过它的值”。

谁能给我解释一下区别,为什么变量 number 会导致错误,而 dateTime 变量却不会?

好吧,看来跟字面量有关系。考虑以下代码:

static void Main(string[] args)
{
string str1 = "Foo";
string str2 = str1;
}

虽然从未引用变量“str2”,但使用这两行进行编译不会产生警告。如果您注释掉 string str2 = str1; 行,则永远不会使用变量“str1”的警告。

最佳答案

这是因为 DateTime.Now 是一个属性,而不是文字。属性 getter 可能有副作用,简单地调用一个本身就很有用。并不是说这是个好主意,但是禁止这样做,而且编译器不够智能,无法判断它是否这样做。反正也不能,最终还是调用操作系统代码获取当前系统时间。

关于c# - VisualStudio2008奇怪的编译警告,需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646864/

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