我目前正在解決一些我已經解決了至少五次的問題。讓我們上這樣的課。這是一個有效的解決方案,但我必須通過ctor中的參數初始化類。
public class ArrayBenchmark
{
private readonly int[] _numbers;
public ArrayBenchmark(uint elementCount)
{
_numbers = Enumerable
.Range(0, (int)elementCount)
.Select(_ => new Random().Next(-9, 10))
.ToArray();
}
如果我想以無參數的方式使用它,它是不起作用的,因為ctor有一定的優先級,所以字段總是用默認的屬性值初始化。下面的代碼示例。
public class ArrayBenchmark
{
private readonly int[] _numbers;
public uint ElementCount { get; init; } = 1;
public ArrayBenchmark()
{
_numbers = Enumerable
.Range(0, (int)ElementCount)
.Select(_ => new Random().Next(-9, 10))
.ToArray();
}
var benchmarkWith10Elements = new ArrayBenchmark { ElementCount = 10 };
benchmarkWith10Elements.CalculateAllComplexities();
那么,有沒有辦法通過無參數類初始化來填充屬性中的字段參數呢?謝謝大家
您想要什么是不可能的,因為在初始化屬性之前會調用無參數構造函數。這
是與(的語法糖)相同的代碼。。。
因此,您需要一個帶有
ElementCount
參數的構造函數: