我并不是编程新手,但是在理解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();
}
}
int
或float
并将它们解释为英尺和英里,但我的真实代码有更多解释底层值的方式。) - Jonathan WoodDateTime
、String
、KeyValuePair<TKey, TValue>
。如果Yahia的答案不令人满意,我可以添加一个答案。 - Jeff Mercado