关于C#编程语言的一个问题。对类中的数组定义相应的访问属性,是否不利于程序的安全性。
对类中的数组定义相应的访问属性(而不是用索引器),是否不利于程序的安全性?代码示例如下:
class A
{
public int[] arr = new int[3];
public int[] Arr //返回数组的引用.
{
get { return arr; } //返回数组的地址.
//set { arr = value; } //使指向另一个数组
}
}
class B
{
static void Main(string[] args)
{
A a = new A();
for (int i = 0; i < a.Arr.Length; i++)
a.Arr[i] = i;
foreach (int n in a.Arr)
Console.Write(n + " ");
Console.Read();
}
}
截图如下:
由于代码 public int[] Arr{ get { return arr; } }返回的是arr数组的地址,这样子做似乎与直接访问arr没什么差别。所以我有些怀疑这种用法的必要性和安全性。望前辈帮我剖析一下。
补充:C#的数组是引用类型的. public int[] Arr{ get { return arr; } } 这代码返回了数组的地址, 这样是不是将arr数组直接暴露了?
追问:大概是。重点想知道 public int[] Arr{ get { return arr; } }这代码是否不利于程序安全。。