值类型和引用类型:结构体是值类型,而类是引用类型。值类型在传递时传递的是值本身,而引用类型在传递时传递的是引用地址。c#举例怎么体现的
时间: 2024-05-01 13:22:33 浏览: 17
在 C# 中,可以通过以下代码来演示值类型和引用类型的区别:
```
// 声明一个结构体
struct MyStruct
{
public int x;
}
// 声明一个类
class MyClass
{
public int x;
}
class Program
{
static void Main(string[] args)
{
// 声明一个值类型变量
MyStruct struct1 = new MyStruct();
struct1.x = 1;
// 将 struct1 赋值给 struct2
MyStruct struct2 = struct1;
struct2.x = 2;
// 输出 struct1 和 struct2 的值
Console.WriteLine("struct1.x = {0}", struct1.x); // 输出 1
Console.WriteLine("struct2.x = {0}", struct2.x); // 输出 2
// 声明一个引用类型变量
MyClass class1 = new MyClass();
class1.x = 1;
// 将 class1 赋值给 class2
MyClass class2 = class1;
class2.x = 2;
// 输出 class1 和 class2 的值
Console.WriteLine("class1.x = {0}", class1.x); // 输出 2
Console.WriteLine("class2.x = {0}", class2.x); // 输出 2
}
}
```
在上述代码中,我们声明了一个结构体 `MyStruct` 和一个类 `MyClass`,分别用来演示值类型和引用类型。在 `Main` 方法中,我们先声明了一个值类型变量 `struct1`,并将其赋值给另一个变量 `struct2`。然后,我们修改了 `struct2` 的值,但是并没有影响到 `struct1` 的值,因为值类型在传递时传递的是值本身。
接着,我们声明了一个引用类型变量 `class1`,同样将其赋值给另一个变量 `class2`。然后,我们修改了 `class2` 的值,但是这次却影响到了 `class1` 的值,因为引用类型在传递时传递的是引用地址,也就是说 `class1` 和 `class2` 指向的是同一个对象。因此,当我们修改 `class2` 的值时,`class1` 的值也会受到影响。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)