我想实现一个结构,其中包含从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 ??
当我用鼠标查看时,我看到了。
立方体和手有什么区别?手是(得到)所以它是动态的吗?而立方体是内存中的数据...??
非常感谢大家!
最佳答案
你的第一个例子有效,但是你说你想让你的方法将你的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/