为什么C#编译器在构造函数退出之前看不出该变量不是null?
public class Document
{
private string file_path;
public Document()
{
InitializeDocument();
}
private void InitializeDocument()
{
file_path = @"C:\mydocument.doc";
}
}
我遇到了一个错误:
CS8618: 不可为null的字段 'file_path' 在退出构造函数时必须包含一个非空值。考虑添加 'required' 修饰符或将字段声明为可为空。
这真的很奇怪,因为在退出构造函数时,变量 file_path 并非null!
解决方案
编译器只在构造函数内部检查直接的变量赋值,不会检查所有可能的调用路径,因此会忽略本来显而易见的赋值。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。