抱歉,描述含糊。不久前,我有一个场景,当我在下面的代码中使用“ North”时,某些操作不起作用。但是,当我重新排列代码并像“ X”一样定义“ North”时,它就起作用了。对于我的一生,我不记得那是什么(那是另一堂课,而不是下面的课)。如果有任何区别,Bearing是一个只包装双精度(N)并将其保持在0> = N 是否有人对以任何一种方式这样做的原因有任何想法?更好吗?为什么?
谢谢。

public struct Bearing : IComparable
{
    #region Named Bearings

    /// <summary>
    /// A bearing representing North (this is the default)
    /// </summary>
    public static Bearing North = new Bearing(0.0);

    public static Bearing X
    {
        get { return new Bearing(0.0); }
    }

最佳答案

一种方法是有效的“只读”。这条路:

public static Bearing X
{
    get { return new Bearing(0.0); }
}


每次阅读时都会返回一个新的Bearing

另一个仅在实例化时才具有默认值,并且可以通过代码的任何部分进行更改。当您从中读取时..它具有更改的值。

那么,哪个更好?无论您的用例是什么。他们俩都做不同的事情。

关于c# - 静态变量与静态属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21740263/

10-09 13:39