数组作参数,怎样才能不准修改数组
数组作参数的时候,默认是引用传递,也就是说函数可以修改数组里的值。我不希望函数修改数组里的值
应该怎么写?
void fn(int[] const a)
void fn(const int[] a)
我试这两种写法都不行,我想声明参数为不能修改,应该怎么写? --------------------编程问答-------------------- 在函数里面自己复制下参数数组的值就行了 --------------------编程问答-------------------- 这段代码你运行下,看看结果是什么:
protected void Page_Load(object sender, EventArgs e)--------------------编程问答--------------------
{
int[] n = new int[3] { 1, 2, 3 };
Response.Write(n[0]);
}
private void A(int[] t)
{
t[0] = 10;
}
没看明白? --------------------编程问答-------------------- 你写的A()根本就没用到啊
--------------------编程问答-------------------- 看不懂啊
--------------------编程问答-------------------- 封装一下数组
struct a{
int[] b;
public int this[int]{
public get{};
private set{};
}
} --------------------编程问答-------------------- 数组作参数的时候,默认是引用传递
无论是什么类型,默认情况下都是按值传递的。
据我所知,目前可以采取的办法是,传递这个数组前,先拷贝当个数组的一个副本。
因为你本来就不希望函数的操作对你的先数组有任何影响 。
--------------------编程问答--------------------
class Program
{
static void Main(string[] args)
{
string[] val = { "asp.net", "c++" };
foreach (string item in val)
Console.WriteLine(item);
string[] copy = new string[val.Length];
Array.Copy(val, copy, val.Length);
tryChangeArray(copy);
Console.WriteLine("===================");
foreach (string item in val)
Console.WriteLine(item);
}
static void tryChangeArray(string[] val)
{
if (val != null && val.Length > 0)
val[0] = "changed";
}
}
--------------------编程问答-------------------- 貌似没有直接的关键字哦,你这样变通一下行不。
protected void Page_Load(object sender, EventArgs e)--------------------编程问答-------------------- 先前看错了,o(∩_∩)o...哈哈!!!闹了个笑话。
{
int[] n = new int[3] { 1, 2, 3 };
A(n.Clone() as int[]);
Response.Write(n[0]);
}
private void A(int[] t)
{
t[0] = 10;
}
补充:.NET技术 , C#