我最近正在研究一些代码,这些代码已经从使用十进制变为使用具有十进制数的复杂类型和表示分数的类型.我不得不更新一些测试,在键入时我忘了添加新关键字.代码已编译但测试仍然失败,抛出NullReferenceException.在那里,我意识到缺少新的,并且该属性未初始化.有谁知道为什么会这样?我在C#lang规范中找不到可以解释这一点的任何内容.
这是代码示例:
public class Fraction
{
public int Numerator { get; set; }
public int Denominator { get; set; }
}
public class MyDecimal
{
public decimal? Decimal { get; set; }
public Fraction Fractional { get; set; }
}
public class ClassA
{
public MyDecimal Value { get; set; }
}
//...
var instance = new ClassA
{
Value = // new MyDecimal is missing here
{
Decimal = 2.0m,
Fractional = new Fraction
{
Numerator = …Run Code Online (Sandbox Code Playgroud) c# ×1