按值传递:
按引用传递,引用(即传递变量的地址):
按地址传递,传递一个指针类型:
using System;
using System.Runtime.InteropServices;
namespace ConsoleApplication2
{
public class RefOutTest
{
static int i = 1;
public static void Main(string[] args)
{
test();
}
static unsafe void test()
{
fixed (int* iadd = &i)
{
Console.WriteLine("静态定义i的地址:" + (int) iadd); //输出i的地址
Add(i); //按值传递
Add(ref i); //按引用传递,使用ref的时候需要在使用之前给i赋值,不然报错
Addout(out i); //按引用传递,使用out不需要提前给i赋值,但是方法里必须对i赋值之后再使用
Add(iadd); //取地址i
}
}
//按值传递
static unsafe void Add(int a)
{
int* p = &a;
Console.WriteLine("add int 的i地址:" + (int) p);
}
//按引用传递
static unsafe void Add(ref int a)
{
fixed (int* p = &a)
{
Console.WriteLine("add ref int 的i的地址:" + (int) p);
}
}
//按引用传递
static unsafe void Addout(out int a)
{
a = 1;
fixed (int* p = &a)
{
Console.WriteLine("add out int 的i的地址:" + (int) p);
}
}
//用指针传递
static unsafe void Add(int* p)
{
Console.WriteLine("add int* 的i的地址" + (int) p);
}
}
}