C#引用类型(class)和值类型(struct)

Posted 瘋孑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#引用类型(class)和值类型(struct)相关的知识,希望对你有一定的参考价值。

1. 值参数

  当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法。被调用的方法不传内存中实参的值,所以使用值参数时,可以保证实际值是安全的。

  

using System;
class Test
{
static void Swap(int x,int y){
int temp=x;
x=y;
y=temp;
}
static void Main(){
int i=1,j=2;
Swap(i,j);
Console.WriteLine("i={0},j={1}",i,j);
}
}

  i=1,j=2

2. 引用型参数

  和值参不同的是,引用型参数并不开辟新的内存区域。当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递给方法。

  

using System;
class Test
{
static void Swap(ref int x,ref int y){
int temp=x;
x=y;
y=temp;
}
static void Main(){
int i=1,j=2;
Swap(ref i,ref j);
Console.WriteLine("i={0},j={1}",i,j);
}
}

  i=2,j=1

 

以上是关于C#引用类型(class)和值类型(struct)的主要内容,如果未能解决你的问题,请参考以下文章

500w 的引用类型和值类型到底有多大差异?

关于c#的结构体struct与class的区别

值类型和引用类型的区别,struct和class的区别

[C#基础知识]Class和Struct的区别

C#中的引用传递和值传递。

c#中Class和Struct使用与性能的区别