c# - 为什么在 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();
}
}
这两种方式有不同的结果
假真
解决方案
public static bool[] Property1 => new bool[1];
在这里,您定义了一个每次读取属性时都会执行的 getter,因此每次都返回一个新的 bool[]。并且该数组中一个元素的默认值为false。
public static bool[] Property2 { get; } = new bool[1];
在这里,您只初始化一次属性的值,之后每次都返回相同的数组,包括您设置的值。
推荐阅读
- python - AttributeError:“列表”对象没有属性“项目” - Python
- apache-spark - 在写入雪花之前保存 Spark 数据框
- mysql - MySql json反向搜索
- python - Django分页重置
- reactjs - 如何设置浏览器标签标题并添加图标
- .net - .Net core Embedde Resources 返回更少的文件
- elasticsearch - 您可以在 Elasticsearch 的自动创建索引中将字段设置为 not_analyzed 吗?
- spring - 使用 Java 的 Spring Boot 中的全栈开发究竟是什么?
- javascript - 这个关键字随叫随到
- android - 有没有办法将正在运行代码的当前应用程序带到前台 Xamarin Forms - Android