gpt4 book ai didi

c# - 为什么要编译?

转载 作者:行者123 更新时间:2023-11-30 13:36:32 24 4
gpt4 key购买 nike

下面的代码编译没有问题。很明显 _dependency 将始终为 null,因此不可能以任何方式使用它(除了评估它) - 是吗?为什么编译器没有意识到这一点并使其失败?

public class MyClass
{
private readonly MyDependency _dependency;

public MyClass()
{
_dependency.MyMethod();
}
}

需要明确的是,我知道上面的代码是错误的代码,这是开发人员的错误——但其他任何编译时错误也是如此。我原以为编译器会抛出 use of unassigned variable 类错误。

为什么要编译?我是否不知道可以使用像这样的 null 对象的场景?

编辑:

确认 - 我希望依靠编译器来检查写得不好的代码 - 我很欣赏,从语法上讲,它绝对没问题。我的问题实际上有两个方面,是否有一种我不知道的情况可能会使这段代码执行得很好。第二个问题是 - 如果它已经处理了use of unassigned variable 错误,为什么不会检测到这样的问题?有什么区别?

最佳答案

因为编译器不会检查这类问题。它在语法上是正确的,而且非常好。空引用问题通常只能在运行时检测到,除非您使用可检测此类问题的代码分析工具。

关于c# - 为什么要编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32498937/

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