標籤:style for ar line res size a mil
ref和out的相同點和不同點
共同點:都是引用傳遞
不同點:ref的參數在調用之前一定要賦值,在方法調用的過程中可以不要賦值。
out的參數在調用之前可以不賦值,在方法調用的過程中一定要賦值。
//方法的參數
class Program
{
static void Main(string[] args)
{
//值傳遞
//int num = 5;
//Change(num);
//Console.WriteLine("Main方法中的num為:"+num);
//引用傳遞
//int[] arr = { 1, 3, 5 };
//Change(arr);
//Console.WriteLine("Main方法中的arr[1]為:" + arr[1]);
//ref參數(引用傳遞)
//int num=5;
//Change(ref num);//ref參數在調用前一定要賦值
//Console.WriteLine("Main(ref)方法中的num為:" + num);
//out參數(引用傳遞)
//int num;
//OutChange(out num);
//Console.WriteLine("Main(out)方法中的num為:" + num);
//數組型參數(引用傳遞)
int result = Sum("*",3,5,6);
Console.WriteLine(result);
}
public static void Change(int number)
{
number = 10;
Console.WriteLine("Change中的number為:" + number);
}
public static void Change(int[] arr)
{
arr[1] = 100;
Console.WriteLine("Change中的arr[1]為:" + arr[1]);
}
public static void Change(ref int number)
{
number = 10;
Console.WriteLine("Change(ref參數)中的number為:" + number);
}
public static void OutChange(out int number)
{
number = 20;
Console.WriteLine("OutChange(out參數)中的number為:" + number);
}
//注意:數組型參數一定要放在參數列表最後
public static int Sum(string op,params int[] num)
{
if(op=="+")
{
int total = 0;
for (int i = 0; i < num.Length; i++)
{
total += num[i];
}
return total;
}
else if (op == "*")
{
int total = 1;
for (int i = 0; i < num.Length; i++)
{
total *= num[i];
}
return total;
}
else
{
Console.WriteLine("運算子只能是+/*");
return -1;
}
}
}