C#参数传递机制
2010-05-19 19:09
232 查看
C#方法的参数传递机制和C语言、C++语言不一样的是,新增加了一种叫做输出传递机制,其他两种机制为值传递和引用传递机制。
总结如下:
C#方法的参数传递机制有以下三种方法:
值传递
引用传递
输出传递
根据以上描述,我们来举个例子说明这三种传递机制内幕。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Method
{
class Program
{
public static void ValueMethod(int i)//值传递
{
i++;
}
public static void RefereceMethod(ref int i)//参数传递
{
i++;
}
public static void OutMethod(out int i)//输出传递
{
i = 0;
i++;
}
static void Main(string[] args)
{
int i = 0;
ValueMethod(i);
Console.WriteLine("i = " + i);
int j = 0;
RefereceMethod(ref j);//此处一定要添加ref传入
Console.WriteLine("j = " +j);
int k = 0;
OutMethod(out k);
Console.WriteLine("k = " + k);
}
}
}
使用这三种传递机制的时候,要注意的问题都在注释中给出。程序输出的结果为:
i = 0
j = 1
k = 1
那么,回顾以下,可以发现,在C#中,Main函数的局部变量如果使用值传递的办法,那么该参数被调用后,依然保持调用前的值。而输出参数和引用参数都会改变被引用的变量值。
下面来讲讲可变长参数 的传递(params)先看代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Method
{
class Program
{
static int addi(params int[] values)
{
int sum = 0;
foreach (int i in values)
sum += i;
return sum;
}
static void PrintArr(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
arr[i] = i;
}
static void Main(string[] args)
{
int[] arr = { 100, 200, 300, 400 };
PrintArr(arr);
foreach (int i in arr)
Console.Write(i + ", ");
Console.WriteLine();
}
}
}
输出的结果为: 0, 1, 2, 3,
总结如下:
C#方法的参数传递机制有以下三种方法:
值传递
引用传递
输出传递
根据以上描述,我们来举个例子说明这三种传递机制内幕。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Method
{
class Program
{
public static void ValueMethod(int i)//值传递
{
i++;
}
public static void RefereceMethod(ref int i)//参数传递
{
i++;
}
public static void OutMethod(out int i)//输出传递
{
i = 0;
i++;
}
static void Main(string[] args)
{
int i = 0;
ValueMethod(i);
Console.WriteLine("i = " + i);
int j = 0;
RefereceMethod(ref j);//此处一定要添加ref传入
Console.WriteLine("j = " +j);
int k = 0;
OutMethod(out k);
Console.WriteLine("k = " + k);
}
}
}
使用这三种传递机制的时候,要注意的问题都在注释中给出。程序输出的结果为:
i = 0
j = 1
k = 1
那么,回顾以下,可以发现,在C#中,Main函数的局部变量如果使用值传递的办法,那么该参数被调用后,依然保持调用前的值。而输出参数和引用参数都会改变被引用的变量值。
下面来讲讲可变长参数 的传递(params)先看代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Method
{
class Program
{
static int addi(params int[] values)
{
int sum = 0;
foreach (int i in values)
sum += i;
return sum;
}
static void PrintArr(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
arr[i] = i;
}
static void Main(string[] args)
{
int[] arr = { 100, 200, 300, 400 };
PrintArr(arr);
foreach (int i in arr)
Console.Write(i + ", ");
Console.WriteLine();
}
}
}
输出的结果为: 0, 1, 2, 3,
相关文章推荐
- C#方法参数传递机制
- C#中方法参数传递机制
- C# 方法的参数传递机制
- C#参数传递类型及机制
- C# 实例对象作为参数传递与方法内部的形参关系
- C#进程间通信--API传递参数(SendMessage)
- c#中通过值和引用传递参数
- C#参数传递
- C# 中方法参数的传递
- c# ref参数传递真面目
- C#后台给某网址传递参数,并接收返回值
- c# 多线程传递参数以及任务
- C/C++中的函数参数传递机制
- c#参数传递之引用参数
- java方法(参数传递机制、实现值交换、形参不确定)
- C#中通过值和引用传递参数
- c#中的函数参数传递有没有类似c++限定const参数的功能?
- C/C++中参数的传递机制
- C#方法参数传递-同时使用ref和out关键字
- C# 函数参数传递(按值和引用)很容易混淆的概念啊