C#值传递与引用传递的区别

news/2025/1/10 21:50:17/

C#值传递与引用传递的区别

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:ntl

作者:王子锐

撰写时间:2022/5/28

(全部用字体大小10)

  • 首先我们先了解什么是值类型什么是引用类型

值类型:在存储空间中占用了确定量的存储空间。

比如, byte它就占用了一个字节(B),也就是八个二进制(b)表示,即1B=8b。

            引用类型:在存储空间中占用不确切的内存。

比如,一个类方法它占用的内存完全按照它的内容决定。

二,通过传递方法,来体现他们的不同之处

       using System;

namespace ConsoleApp1

{

    class Class1

    {

        static void Main(string[] args)

        {

            int mun = 5;

            Console.WriteLine("传递前" + mun);

            aka(mun);

            Console.WriteLine("传递后" + mun);

            Program p = new Program();

            p.kec = 5;

            Console.WriteLine("传递前" + p.kec);

            aka1(p);

            Console.WriteLine("传递后" + p.kec);

        }

        static void aka(int value)

        {

            value = 20;

            Console.WriteLine("值传递中");

        }

        static void aka1(Program p)

        {

            p.kec = 20;

            Console.WriteLine("引用传递中");

        }

    }

}

Program 类的设置是这样

using System;

namespace ConsoleApp1

{

    class Program

    {

        public int kec;

    }

}

上面的方法中

static void aka(int value)

        {

            value = 20;

            Console.WriteLine("值传递中");

        }

是值传递的方法,这里的int value传递的是mun的拷贝,所以就算在方法中更改他的值它也不会改变。

static void aka1(Program p)

        {

            p.kec = 20;

            Console.WriteLine("引用传递中");

        }

因为它这里直接更改的是p.kecProgram类里的kec属性,起到的作用和在类里直接赋值kec是一样的所以值会被更改。

大多数时候值类型都是值传递而引用类型是引用传递。


http://www.ppmy.cn/news/518239.html

相关文章

算法(一):智能小车速度控制(PID模糊控制)

概览 一、前言二、基于PID 的速度控制1.PID控制器2.PID速度控制 二、基于模糊控制的速度控制1.变量的模糊化2.模糊查询表的计算3.模糊查询表设置车速 三、总结 一、前言 本科的时候参加飞思卡尔比赛,在队友的神助攻下有幸拿了国奖,比赛中使用了模糊控制…

数据库Db-主键的创建方式与删除方式

/* 主键:在一张表中唯一的确定一组数据,因此一张表只能有一个主键。 主键的约束字段默认具有unique约束,not null约束 构成主键的可以是一个字段,也可以是多个字段 */ CREATE DATABASE 数据库名-; CREATE TABLE 表名( kec_id INT PRIMARY KE…

MATLAB离线模糊控制表生成以及模糊控制程序编写

MATLAB离线模糊控制表生成步骤 第一步:MATLAB命令行中输入“fuzzy” 第二步:选择偏差隶属度函数、论域、范围、模糊变量等。 第三步:选择偏差变化率隶属度函数、论域、范围、模糊变量等。 第四步:选择输出隶属度函数、论域、范…

CKA,CKS题库kubernetes认证考试

今天一个同事通过了两个考试,就是看了这个题库。CKA,CKS,kubernetes认证考试完全分享,只需要注册用户就可以。都是考试实况哦,看着一套就够了。**Lalapodo**真的太给力了。通过考试不是唯一目的,lalapodo更有专业中文课程分享。ku…

CKA认证

rbac授权 设置配置环境: [studentnode-1] $ kubectl config use-context k8s Context 为部署管道创建一个新的ClusterRole并将其绑定到范围为特定的namespace 的特定 ServiceAccount . Task 创建一个名为 deployment-clusterrole 且仅允许创建以下资源类型的新ClusterRole : De…

KVC原理

描述 Key-value coding is a mechanism enabled by the NSKeyValueCoding informal protocol that objects adopt to provide indirect access to their properties. kvc 是由NSKeyValueCoding非正式协议采用的一种机制,对象通过该协议来提供属性的间接访问 执行结…

Keccak简介

一 什么是Keccak Keccak是一种被选定为SHA-3标准的单向散列函数算法。 Keccak可以生成任意长度的散列值,但为了配合SHA-2的散列值长度,SHA-3标准中规定了SHA3-224、SHA3-256、SHA3-384、SHA3-512这4种版本。在输入数据的长度上限方面,SHA-1…

【教程】使用S3fs让KEC云主机直接挂载KS3 金山云对象存储bucket

S3fs是一款基于FUSE的文件系统适配器,通过S3fs能够使对象存储直接挂载到云平台虚拟机,如云硬盘一般使用,非常的方便。本教程教你如何在Linux系统上使用S3fs 对于Ubuntu 14.04,执行: sudo apt-get install automake autotools-dev fuse g++ git libcurl4-gnutls-dev libfus…