下面是个面试题,请教大家这个问题:
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[3] { 4, 3, 2 };
int a = 3;
aaa(array, a);
int s = a;
}
public static void aaa(int[] arr, int b)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i] *= 2;
b = arr[i] * 3;
}
b = 8;
}
public static int add(int s)
{
s = s + 1;
return s;
}
}
}上面Main中,执行后数组array值为{8,6,4},但a的值依然是3.,我认为数组值改变了,a的值也应该改变了啊。
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[3] { 4, 3, 2 };
int a = 3;
aaa(array, a);
int s = a;
}
public static void aaa(int[] arr, int b)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i] *= 2;
b = arr[i] * 3;
}
b = 8;
}
public static int add(int s)
{
s = s + 1;
return s;
}
}
}上面Main中,执行后数组array值为{8,6,4},但a的值依然是3.,我认为数组值改变了,a的值也应该改变了啊。
而变量a传递的只是值,所以不改变
int a = array[2];
a = 10;
Console.WriteLine(array[2]);
array[2] = 10;
Console.WriteLine(array[2]);
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[3] { 4, 3, 2 };
int a = 3;
aaa(array,ref a);
int s = a;
}
public static void aaa(int[] arr,ref int b)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i] *= 2;
b = arr[i] * 3;
}
b = 8;
}
public static int add(int s)
{
s = s + 1;
return s;
}
}
}