c++里面,函数传入参数前面加修饰const可以让参数在函数中不能修改可是c#有办法么?比如传入参数是一个数组
这个数组很大,复制出一份也不可能,为了效率,我直接传递数组给函数
我又不想让别人修改这个数组
怎么办?类似的问题还有传入类的实例,在函数中只能读取类的属性,而不能修改
怎么办呢?多谢
这个数组很大,复制出一份也不可能,为了效率,我直接传递数组给函数
我又不想让别人修改这个数组
怎么办?类似的问题还有传入类的实例,在函数中只能读取类的属性,而不能修改
怎么办呢?多谢
象你的情况,可以在函数说明中进行强调。
这样啊,真是太遗憾了
感谢gomoku回答
本来数组作参数也是不可修改的啊。
如果参数是byte[] param
在函数中进行param = new byte[10];这样的操作对函数外是没用的。
但是param[0] = xxxx;这个是影响函数外的。
这,如果不复制一份,阻止不了的。但是可以在方法上面加上“三道杠”啊,说明下不能修改byte。
提供了一个索引器,以与数组相似的方式来操作,而索引器是只读的,尝试赋值时会出现编译时错误class OnlyReadCollection : System.Collections.ReadOnlyCollectionBase
{
private string[] vals = { "1","2","3" }; public string this[int index]
{
get
{
return vals[index];
}
} public override System.Collections.IEnumerator GetEnumerator()
{
return vals.GetEnumerator();
} public override int Count
{
get
{
return vals.Length;
}
}
}
OnlyReadCollection orc = new OnlyReadCollection();
foreach (string s in orc)
Response.Write(s + "<hr />"); Response.Write(orc[0]);