You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中设置元组属性?赋值时触发栈溢出错误

修复元组属性栈溢出问题

你写的这段代码触发栈溢出的核心原因是属性的getter和setter直接递归调用自身:

  • getter里=> BoundsTuple会反复调用自身的get方法,形成无限循环
  • setter里BoundsTuple = value会反复调用自身的set方法,触发无限递归

解决这个问题的关键是给属性配置实际存储数据的幕后字段,具体有两种实现方式:

方案1:手动定义私有存储字段

// 私有字段用于实际存储元组数据
private (float minX, float maxX, float minY, float maxY) _boundsTuple;

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

这里用下划线开头的私有字段_boundsTuple存储实际数据,属性的get和set都操作这个字段,彻底避免了递归调用。

方案2:使用自动属性(更简洁)

如果不需要在get/set中添加自定义逻辑,直接用自动属性即可,编译器会自动帮你生成幕后存储字段:

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

这种写法和方案1功能完全一致,但代码更简洁直观。

内容的提问来源于stack exchange,提问作者maxkcy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:30:59