在 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
。但它包含一些错误:
- 如果您希望
MyGreen
属性 为 static
,其 getter (get { ... }
) 返回的基础实例必须声明为 static
也是。
- 您不能使用多行代码在 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; }
}
// ...
}
}
我在使用 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
。但它包含一些错误:
- 如果您希望
MyGreen
属性 为static
,其 getter (get { ... }
) 返回的基础实例必须声明为static
也是。 - 您不能使用多行代码在 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; }
}
// ...
}
}