gpt4 book ai didi

c# - 无法修改结构成员

转载 作者:太空狗 更新时间:2023-10-29 20:11:23 25 4
gpt4 key购买 nike

我对编程一点都不陌生,但我对 C# 结构的理解似乎存在漏洞。

谁能解释为什么下面的代码打印出以下内容?

Dist1: 0, Dist2: 0

struct Distance
{
public void SetFeet(int feet) { Value = feet; }
public void SetMiles(float miles) { Value = (int)(miles * 5280f); }
public int GetFeet() { return Value; }
public float GetMiles() { return Value / 5280f; }
private int Value;
}

class Distances
{
public Distance Dist1 { get; set; }
public Distance Dist2 { get; set; }
}

class Program
{
static void Main(string[] args)
{
Distances distances = new Distances();
distances.Dist1.SetFeet(1000);
distances.Dist2.SetFeet(2000);

Console.WriteLine("Dist1: {0}, Dist2: {1}",
distances.Dist1.GetMiles(),
distances.Dist2.GetMiles());

Console.ReadLine();
}
}

最佳答案

Getter 和 setter——如何访问属性——在这方面仍然像方法一样工作。也就是说,

distances.Dist1.SetFeet(1000);

“等同于”

distances.GetDist1().SetFeet(1000);

结构(值)的“复制”是在从 getter 返回(或传递给 setter)时创建的。如果 Dist1 是一个成员变量,情况就不会如此,并且会“按预期”工作。

快乐编码。

关于c# - 无法修改结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212618/

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