在 C# 中使用 class 的实例

Work with instance of class in C#

我在使用 class 实例时遇到了一些问题,我不明白这个问题。我正在处理不同 classes 中的彩色文本,因此我的想法是只定义一次这种颜色,这样更改它们会容易得多。

对于颜色的定义,我指定了一个名为 MyColors 的 class。我使用 System.Windows.Media 并使用颜色 class 定义了 RGB 颜色。我的想法是将每种颜色指定为 privat 并添加一个 属性 来生成对该颜色的读取访问权限,但是 Visual Studio 向我发送了一个错误。

namespace MyProject
{
class MyColor
{
    private Color myGreen = new Color();
    myGreen = Color.FromRgb(0, 255, 0);

    #region Properties
    /// <summary>
    /// Gets my green
    /// </summary>
    /// <value>my green</value>
    static public Color MyGreen
    {
        get
        {
            return myGreen;
        }

    }
    #endregion
}
}

第六行"myGreen..."产生错误。如果我将代码更改为以下代码,它就可以工作。

namespace MyProject
{
class MyColor
{
    #region Properties
    /// <summary>
    /// Gets my green
    /// </summary>
    /// <value>my green</value>
    static public Color MyGreen
    {
        get
        {
            Color myGreen = new Color();
            myGreen = Color.FromRgb(0, 255, 0);
            return myGreen;
        }

    }
    #endregion
}
}

任何人都可以解释我做错了什么。看来我理解错了class.

我更喜欢您在第一个代码片段中使用的方法,因为它不需要在每次访问 MyGreen 属性 时都实例化一个新的 Color。但它包含一些错误:

  1. 如果您希望 MyGreen 属性 为 static,其 getter (get { ... }) 返回的基础实例必须声明为 static也是。
  2. 您不能使用多行代码在 class 范围内创建实例。这种代码只能在构造函数、属性 或方法等内部范围内执行。因为没有必要实例化它两次(首先使用 Color() 构造函数然后使用 Color.FromRgb 基本上 returns 具有指定 RGB 值的新 Color 实例) , 一切都可以转换成一行而不改变想要的行为。

下面你的 class 应该是这样的:

namespace MyProject
{
    public class MyColor
    {
        private static Color s_MyGreen = Color.FromRgb(0, 255, 0);

        public static Color MyGreen
        {
            get { return s_MyGreen; }

        }

        // ...
    }
}