gpt4 book ai didi

c# - 引用自动实现属性的支持字段

转载 作者:行者123 更新时间:2023-11-30 13:45:38 26 4
gpt4 key购买 nike

在 C# 中,自动实现的属性非常方便。然而,尽管它们只是封装了它们的支持字段,但它们仍然不能作为 ref 或 out 参数传递。例如:

public int[] arr { get; private set; } /* Our auto-implemented property */
/* ... */
public void method(int N) { /* A non-static method, can write to this.arr */
System.Array.Resize<int>(ref this.arr, N); /* Doesn't work! */
}

在这种特定情况下,我们可以通过这样的 hack 来解决问题:

public void method(int N) { /* A non-static method, can write to this.arr */
int[] temp = this.arr;
System.Array.Resize<int>(ref temp, N);
this.arr = temp;
}

有没有更优雅的方法来使用对 C# 中自动实现属性的支持字段的引用?

最佳答案

Is there a more elegant way to use a reference to the backing field of an auto-implemented property in C#?

据我所知,不是。属性是方法,这就是当参数需要其支持字段类型时不能以这种方式传递它们的原因。

如果您想使用自动属性,您所说的解决方案就是一个解决方案。否则,您将不得不自己定义一个支持字段并让属性使用它。

注意:您可以通过反射获取自动属性的支持字段,但这是一个我不会使用的 hacky 解决方案。

关于c# - 引用自动实现属性的支持字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28208390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com