C# 使用访问器公开类属性
我不知道正确的技术术语来描述我的问题,因此我将举一个例子:C# 使用访问器公开类属性,c#,accessor,C#,Accessor,我不知道正确的技术术语来描述我的问题,因此我将举一个例子: private Point _PrivateVect = new Point(); public Point Publicvect { get { return _PrivateVect; } set { _PrivateVect = value; } } 问题
private Point _PrivateVect = new Point();
public Point Publicvect
{
get
{
return _PrivateVect;
}
set
{
_PrivateVect = value;
}
}
问题是,如果我想访问
Publicvect.X
,我得到的错误是无法修改“Publicvect”的返回值,因为它不是一个变量。有办法解决这个问题吗?或者我只需要做Publicvect=newpoint(NewX,Publicvect.Y)代码>永远?可变结构是邪恶的另一个原因。一种解决方法是为了方便起见,将维度公开为访问器:
public Point PublicX {
get {return _PrivateVect.X;}
set {_PrivateVect.X = value;}
}
public Point PublicY {
get {return _PrivateVect.Y;}
set {_PrivateVect.Y = value;}
}
但另一个原因是:;是的,您每次都需要执行新点(x,y)
,因为点
是一个结构。当您通过属性访问它时,您会得到它的一个副本,因此如果您对副本进行变异,然后放弃该副本,您只会丢失更改。这里的问题是点类型是值类型。因此,当您操作Pointvect.X时,实际上是在操作值类型的临时副本,这当然对原始实例没有影响。请显示生成该错误的代码。@Bob:如果您认为粗体有帮助,那么它没有帮助。我需要查看实际的代码行和实际的错误。