C#预定义数据类型之值类型和引用类型介绍

C#预定义数据类型之值类型和引用类型介绍

一、值类型和引用类型的区别

在C#中,数据类型可以分为值类型和引用类型两种。

值类型表示的是实际的值,它们被存储在堆栈中。当在一个方法中传递值类型之间的参数时,它们会被复制一份,因此赋予新值时不会影响原始的值。 值类型的数据包括:

  • 布尔型(bool);
  • 数字类型: 整型(byte、sbyte、short、ushort、int、uint、long、ulong)、浮点型(float、double、decimal);
  • 字符类型(char).

引用类型是指数据是“指向”其他内存地址的指针,它们被存储在堆中。当在方法中传递引用类型之间的参数时,它们是指向同一个内存地址,赋予新值时会影响原始值。 引用类型的数据包括:

  • 类(class);
  • 接口(interface);
  • 委托(delegate);
  • 数组 (array)等.

二、值类型和引用类型的声明和使用

1. 值类型的声明和使用

我们可以使用以下语句来声明和初始化值类型的变量:

int number = 100; // 声明一个 int 类型的变量并将其初始化为 100
double price = 12.99; //声明一个 double 类型的变量并将其初始化为12.99
char ch = 'A'; //声明一个 char 类型的变量并将其初始化为字符 A

值类型可以使用运算符和方法进行处理,例如:

int x = 10;
int y = 20;
int z = x + y; // 相加,z = 30

2. 引用类型的声明和使用

我们可以使用以下语句来声明引用类型的变量:

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
}

Student stu1 = new Student(); // 声明一个类型为 Student 的对象

引用类型需要使用“new”运算符来分配内存空间。我们可以使用“.”运算符来访问引用类型的变量的属性和方法,例如:

stu1.Name = "Tom";
stu1.Age = 18;

三、值类型和引用类型的传递方式

方法可以使用值类型或引用类型的参数。当使用值类型作为参数时,将传递变量的一份副本;当使用引用类型作为参数时,将传递变量的指针。以下示例演示了如何在方法中传递值类型和引用类型:

public class Program
{
    static void Main(string[] args)
    {
        int num1 = 10;
        int num2 = 20;
        Swap(num1, num2);
        Console.WriteLine("num1 = {0}, num2 = {1}", num1, num2); // num1 = 10, num2 = 20

        Student stu2 = new Student() { Name = "Jack", Age = 20 };
        ChangeName(stu2);
        Console.WriteLine("Name = {0}, Age = {1}", stu2.Name, stu2.Age); // Name = Tom, Age = 20
    }

    public static void Swap(int x, int y)
    {
        int temp = x;
        x = y;
        y = temp;
    }

    public static void ChangeName(Student stu)
    {
        stu.Name = "Tom";
    }
}

在该示例中,Swap方法通过值类型传递了num1和num2的副本,因此在方法中交换它们的值不会影响原始值;而ChangeName方法通过引用类型修改了stu2的属性值,因此在方法外的属性值也被更改。

四、总结

C#语言中分为值类型和引用类型两种数据类型。值类型被复制,而引用类型则是通过地址引用的。值类型具有简单、高效的特点,引用类型与面向对象编程相关,更灵活、功能更强大。

在使用值类型和引用类型时,需要了解它们的区别和使用方式,根据具体需求进行选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#预定义数据类型之值类型和引用类型介绍 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#窗体读取EXCEL并存入SQL数据库的方法

    下面我为你详细讲解“C#窗体读取EXCEL并存入SQL数据库的方法”的完整攻略。 一、准备工作 在开始编写代码前,需要先安装以下几个组件: Microsoft.Office.Interop.Excel (用于读取Excel文件); System.Data.SqlClient (用于操作SQL数据库)。 二、读取Excel文件 首先,需要引入Microsoft…

    C# 2023年6月2日
    00
  • 基于C# winform实现图片上传功能的方法

    下面是“基于C# Winform实现图片上传功能的方法”的完整攻略: 一、准备工作 首先,我们需要将Winform应用程序的工具箱中添加一个OpenFileDialog控件,用于选择要上传的图片;还需要添加一个PictureBox控件,用于展示已经选择好的图片。 二、上传图片的流程 获得待上传的图片的本地路径 使用OpenFileDialog控件的ShowD…

    C# 2023年6月2日
    00
  • 10本最佳C#编程的书籍推荐

    10本最佳C#编程的书籍推荐攻略 为什么要学习C#编程 C#是一种广泛使用的面向对象编程语言,它最初是由微软开发的,用于开发Windows操作系统。C#的语法结构类似于C++和Java,是一种高效、可靠和安全的编程语言。今天,C#已经成为构建Windows桌面应用程序、Web应用程序和游戏的主要语言之一。学习C#编程可以为您在编写高质量应用程序时提供广泛的工…

    C# 2023年6月1日
    00
  • 详解C# 网络编程系列:实现类似QQ的即时通信程序

    详解C#网络编程系列:实现类似QQ的即时通信程序 简介 本文将详细讲解如何使用C#网络编程实现类似QQ的即时通信程序,该程序基于TCP协议,使用Socket实现客户端与服务端的通信,涵盖了详细的代码实现和功能介绍。 实现步骤 设计即时通信协议。 实现服务端程序,包括监听和处理客户端请求。 实现客户端程序,包括连接和向服务端发送请求。 实现消息发送和接收功能。…

    C# 2023年5月15日
    00
  • C#难点逐个击破(5):类的访问类型

    C#中类的访问类型是指定义在类里面的成员被访问的可见性,与类的作用域有关。C#中的访问类型分为四种:public、private、protected、internal。以下是这四种访问类型的详细说明: public public是最常用的访问类型,声明为public的成员可以在任何类中访问。下面是一个示例: public class Example1 { p…

    C# 2023年6月1日
    00
  • C#中的分布式ID生成组件IDGen介绍并给出示例代码

    C#中的IDGen是一个C#实现的Twitter Snowflake算法的ID生成器,可以生成全局唯一的ID,支持高并发场景下的ID生成。在本篇文章中,我们将介绍IDGen的使用方法并提供相关的C#示例代码。 IDGen的介绍 IDGen是一款开源的分布式唯一ID生成器,支持多种ID生成算法,并且可以在高并发场景下快速生成全局唯一的ID。目前支持的ID生成算…

    C# 2023年4月22日
    00
  • C#中感叹号(!) 的作用总结

    当在C#中提及感叹号(!)时,通常指的是逻辑非运算符。这个运算符常用于实现反转布尔值。 逻辑非运算符返回一个布尔值(true或false)。如果操作数为true,则该运算符返回false;如果操作数为false,则该运算符返回true。 在C#中,逻辑非运算符主要有以下两种应用: 运用于空引用类型,表示判定该对象是否为空 在C#中,操作符!被用来判断对象是否…

    C# 2023年6月6日
    00
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

     Abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三…

    C# 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部