如何在 C# 中设置元组属性?设置元组会导致 stackoverflow 错误

问题描述 投票:0回答:2

这是我第一次使用元组。


public (float minX, float maxX, float minY, float maxY) BoundsTuple
{
    private get => BoundsTuple;
    set 
    { 
        BoundsTuple = value;
    }

}
// BoundsTuple = value; causes stackoverflow error

这是我的 Unity 控制台错误:

StackOverflowException:请求的操作导致堆栈溢出。 Clump.set_BoundsTuple(System.ValueTuple`4[T1,T2,T3,T4] 值)(位于 Assets/Scripts/EverythingClouds/Clump.cs:17)

我该如何解决这个问题?

在设置元组属性时不要得到 stackoverflow

c# unity3d properties set tuples
2个回答
1
投票

这不是关于元组的,而是关于一般属性的。

get
ter 和
set
ter 或您的财产
BoundsTuple
再次指代相同的
BoundsTuple
财产。

您要么将其转换为汽车财产

public (float minX, float maxX, float minY, float maxY) BoundsTuple { get; set; }

或者引入一个支持字段

private (float minX, float maxX, float minY, float maxY) _boundsTuple;
public (float minX, float maxX, float minY, float maxY) BoundsTuple
{
    get => _boundsTuple;
    set => _boundsTuple= value;
}

0
投票

米兰的回答:

你正在设置你的属性的值,一个循环操作。尝试 public (float minX, float maxX, float minY, float maxY) BoundsTuple { 得到;放; } 相反。

© www.soinside.com 2019 - 2024. All rights reserved.