c# - 有一个称为参数的静态变量

标签 c# object colors static

我想实现一个结构,其中包含从System.Drawing.Color发出的定义颜色。这是我的最终代码。

namespace ColorSystem
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

    }

    internal void testfunc(Label lbl, System.Drawing.Color newcolor)
    {
        lbl.BackColor = newcolor;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var getvalue = ColorValues.NormalFont;
        testfunc(label1, ColorValues.NormalFont);
        testfunc(label2, ColorValues.NormalFont2);
    }

}
public static class ColorValues
{
    // Private variable to hold font once instantiated
    public static System.Drawing.Color NormalFont{ get{ return Color.AliceBlue;}}//Dynamic
    public static System.Drawing.Color NormalFont2 =         Color.AliceBlue;//static ??
}

我仍然不明白这两行之间有什么区别:

 public static System.Drawing.Color NormalFont{ get{ return        Color.AliceBlue;}}//Dynamic
 public static System.Drawing.Color NormalFont2 =         Color.AliceBlue;//static ??

当我用鼠标查看时,我看到了。

What interpreter show me

立方体和手有什么区别?手是(得到)所以它是动态的吗?而立方体是内存中的数据...??

非常感谢大家!

最佳答案

你的第一个例子有效,但是你说你想让你的方法将你的struct ColorValue作为参数,当然你可以做到,但你不能填充BackColor > of Label 与您的结构,因为它是不同的类型,并且正如您猜测的那样,您必须像在上一个示例中那样传递结构的实例。

因此,要么使用第一个示例,要么使用最后一个示例,但您必须创建结构体的实例。

关于内存,如果您创建了 1000 个 Form1 实例,您将创建 1000 个 ColorValue 实例,但如果您的 struct ColorValue 将保持为是的,它只有 1 个字节。一般来说内存不是问题。

编辑: 以下有什么区别?

public static System.Drawing.Color NormalFont{ get{ return        Color.AliceBlue;}}//Dynamic
public static System.Drawing.Color NormalFont2 =         Color.AliceBlue;//static ??

第一个是属性,第二个是字段。属性有 set 和 get 方法,所以区别在于,尝试获取属性值时会调用 get 方法,该方法将返回您想要的内容,而 field 是对您想要的内容的直接引用。通常建议仅公开属性并隐藏字段,原因是您无法(或无法轻松)调试/监视对字段的访问,而调试对属性的访问很容易。

关于c# - 有一个称为参数的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41983341/

相关文章:

python - 关于 numpy 沿轴应用和列表理解的困惑

java - 将 double 值映射到颜色

Java HTML - 通过单击更改小程序的颜色

java - 在运行时重写现有对象的方法的任何简单方法

scala - 对象扩展 Trait,类扩展 Trait,两者都必须实现方法

python - 平滑着色算法

C# : using a variable when being passed it's string name

C#/XNA 如何让我的类彼此之间的 "speak"?

c# - 在 ViewModel 外部使用 BindableCollection

C# 接口(interface)、多态性和委托(delegate)