如何使给数组赋值成为可能,同时不可能单独分配每个数组元素?
How to make it possible to assign value to an array, while making it Impossible to assign each of the array elements individually?
我正在处理 Unity3D 项目并使用 Mesh
class,
在Mesh
class里面有一个成员变量Vector3[] vertices
.
现在,虽然可以通过以下方式设置 mesh.vertices
Vector3[] v = new Vector3[3];
v[0] = new Vector3[0,0,0];
v[1] = new Vector3[1,1,1];
v[2] = new Vector3[2,2,2];
mesh.vertices = v;
设置单个元素,像这样:mesh.vertices[0] = new Vector3(1,1,1)
好像没有效果。
(另外,mesh.vertices[0].x = 5
也没有效果)。
当我说没有效果时,我的意思是代码确实编译并且 运行 没有错误,但是数组的元素没有改变。
由于顶点代表一个表面,因此设计师希望所有顶点一起改变似乎是合乎逻辑的。
我曾尝试用简单的代码模仿这个神奇的功能,但无济于事。
我错过了什么?
有属性吗?
索引器?
一些奇怪的组合?
class Student
{
private int[] grades = {92, 99, 96};
public int[] Grades{
get{
Console.WriteLine("getter: ");
return grades;
}
set{
Console.WriteLine("setter: ");
grades = value;
}
}
}
class HelloWorld
{
static void Main ()
{
int[] low_grades = {53, 51, 55};
Student student = new Student();
student.Grades = low_grades; // This assignment is possible and this is O.K.
student.Grades[0] = 52; // This assignment is Possible and this is NOT O.K.
}
}
我怎样才能让客户端将一个数组赋值给我的成员变量,同时阻止他为数组中的单个元素赋值?
如果不想直接访问集合元素,将其设为私有字段,并提供设置数组的方法。如果需要,您还可以提供一种方法 return 数组的副本作为单独的引用。
我正在处理 Unity3D 项目并使用 Mesh
class,
在Mesh
class里面有一个成员变量Vector3[] vertices
.
现在,虽然可以通过以下方式设置 mesh.vertices
Vector3[] v = new Vector3[3];
v[0] = new Vector3[0,0,0];
v[1] = new Vector3[1,1,1];
v[2] = new Vector3[2,2,2];
mesh.vertices = v;
设置单个元素,像这样:mesh.vertices[0] = new Vector3(1,1,1)
好像没有效果。
(另外,mesh.vertices[0].x = 5
也没有效果)。
当我说没有效果时,我的意思是代码确实编译并且 运行 没有错误,但是数组的元素没有改变。
由于顶点代表一个表面,因此设计师希望所有顶点一起改变似乎是合乎逻辑的。
我曾尝试用简单的代码模仿这个神奇的功能,但无济于事。
我错过了什么?
有属性吗?
索引器?
一些奇怪的组合?
class Student
{
private int[] grades = {92, 99, 96};
public int[] Grades{
get{
Console.WriteLine("getter: ");
return grades;
}
set{
Console.WriteLine("setter: ");
grades = value;
}
}
}
class HelloWorld
{
static void Main ()
{
int[] low_grades = {53, 51, 55};
Student student = new Student();
student.Grades = low_grades; // This assignment is possible and this is O.K.
student.Grades[0] = 52; // This assignment is Possible and this is NOT O.K.
}
}
我怎样才能让客户端将一个数组赋值给我的成员变量,同时阻止他为数组中的单个元素赋值?
如果不想直接访问集合元素,将其设为私有字段,并提供设置数组的方法。如果需要,您还可以提供一种方法 return 数组的副本作为单独的引用。