首页 > 解决方案 > 为什么在 C# 中定义属性的两种方式会产生不同的结果?

问题描述

在 C# 中定义属性的两种方法

public class Program {

    public static bool[] Property1 => new bool[1];
    public static bool[] Property2 { get; } = new bool[1];

    public static void Main() {

        Property1[0] = true;
        Property2[0] = true;

        Console.WriteLine($"{Property1[0]} {Property2[0]}");

        Console.ReadLine();

    }

}

这两种方式有不同的结果

假真

标签: c#

解决方案


public static bool[] Property1 => new bool[1];

在这里,您定义了一个每次读取属性时都会执行的 getter,因此每次都返回一个新的 bool[]。并且该数组中一个元素的默认值为false

public static bool[] Property2 { get; } = new bool[1];

在这里,您只初始化一次属性的值,之后每次都返回相同的数组,包括您设置的值。


推荐阅读