根据评论进行编辑:
示例:我如何知道宽度或高度何时更改?这甚至可能吗?
不,这是不可能的。不过,没关系。
当您Size
从班级返回 a 时,因为Size
是 astruct
,所以您正在返回一个副本。即使用户更改了您返回的Width
or ,它也不会影响您类中的结构。Height
Size
mySize
为了改变你的大小,他们需要改变整个事情,即:
var temp = yourClass.MySize;
temp.Width = newWidth;
yourClass.MySize = temp; // The user will need to assign an entire Size
就您而言,Size
属性实际上是只读的,因为System.Drawing.Size
它是一种值类型。
原始答案,假设 Width 和 Height 是用户类的属性:
有两个主要选项 -
您可以根据您的宽度和高度即时计算大小,而不是存储它:
public Size MySize
{
get {
return new Size(Width,Height);
}
set {
Width = value.Width;
Height = value.Height; // Set Width/Height appropriately
}
}
另一种选择是在属性设置器中重新计算宽度和高度的大小:
public double Width
{
get { return width; }
set
{
width = value;
mySize = new Size(width, Height); // Compute new size, so it's always correct
}
}
最后,如果您使用INotifyPropertyChanged
跟踪更改之类的东西,您还可以订阅自己的PropertyChanged
事件,如果它是适当的属性,请重新计算您的大小。