值类型与引用类型作为参数输出的效果

public  static void Hello()
        {
            //SampleRefType sa = new SampleRefType();
            //sa.value = 44;
            int sss = 7;
            World(sss);
            Console.WriteLine(sss);
            Console.ReadKey();
        }
      
        private static void World( SampleRefType ss)
        {
            ss.value = 77;
        }
        private static void World(int ss)
        {
            ss = 77;
          
        }
      
    }
    public class SampleRefType
    {
        public int value;
    }

该示例执行的内容实质上与先前示例相同,均按值将参数传递到方法。 但是因为使用了引用类型,结果有所不同。 ModifyObject 中所做的对形参 obj 的 value 字段的修改,也会更改 TestRefType 方法中实参 rt 的 value 字段。 TestRefType 方法显示 77作为输出。值类型7

时间: 2024-10-20 22:21:35

值类型与引用类型作为参数输出的效果的相关文章

值类型和引用类型的特征

1. 值类型和引用类型的赋值 1.1. 值类型赋值,直接将值复制一份 var num1 = 10; var num2 = num1; 上面两句代码,在内存中的体现为: var num1 = 10;表示变量num1存储的是数字10 将数据拷贝一份,也就是将10拷贝一份,这个时候内存中有两个10 将拷贝的10赋值给num2 1.2. 引用类型赋值,是将地址复制一份 var p = {name:"张三", age:19}; var p1 = p; 上面两句代码,在内存中的体现为: var p

转老赵--不同泛型参数生成的具体类(无论是值类型还是引用类型),它们的静态字段是独立的

老赵写的文章,原文:http://blog.zhaojie.me/2009/09/i-made-a-mistake-can-you-figure-it-out-answer.html public static class MyClass<T> { public static readonly Guid Key = Guid.NewGuid(); } class Program { static void Main(string[] args) { Console.WriteLine(&quo

定义类+类实例化+属性+构造函数+匿名类型var+堆与栈+GC回收机制+值类型与引用类型

为了让编程更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机会. 面向对象编程也叫做OOP编程 简单来说面向对象编程就是结构化编程,对程序中的变量结构划分,让编程更清晰. 类的概念: 类实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法. 类定义了类的每个对象(称为实例)可以包含什么数据和功能. 类中的数据和函数称为类的成员:数据成员        函数成员 数据成员: 数据成员

【转】C#详解值类型和引用类型区别

通用类型系统 值类型 引用类型 值类型和引用类型在内存中的部署 1 数组 2 类型嵌套 辨明值类型和引用类型的使用场合 5 值类型和引用类型的区别小结 首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管是否已经赋值,编译器为其分配内

C# 类型基础 值类型和引用类型

引言 本文之初的目的是讲述设计模式中的 Prototype(原型)模式,但是如果想较清楚地弄明白这个模式,需要了解对象克隆(Object Clone),Clone其实也就是对象复制.复制又分为了浅度复制(Shallow Copy)和深度复制(Deep Copy),浅度复制和深度复制又是以如何复制引用类型成员来划分的.由此又引出了引用类型和值类型,以及相关的对象判等.装箱.拆箱等基础知识.索性从最基础的类型开始自底向上写起. 值类型和引用类型 先简单回顾一下C#中的类型系统.C# 中的类型一共分为

数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引用类型内存分配&lt;四&gt;

C# 基础接口篇 一.多态复习 使用个new来实现,使用virtual与override    -->new隐藏父类方法 根据当前类型,电泳对应的方法(成员)    -->override重写 无论什么情况,都是执行新的方法(成员) 继承是实现多态的一个前提,没有继承多态是不能实现的 父类与子类实现多态 抽象类与子类实现 抽象类不能实例化 抽象类中的抽象方法没有方法体 抽象类的成员有哪些   ->包含非抽象成员   ->不能实例化   ->子类必须实现父类的 抽象方法,除非子

枚举|标志枚举+|(或)和&amp;(与)运算|类型转换|值类型和引用类型|传参|异常|垃圾回收

枚举部分 enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它. 但是,还可以将枚举嵌套在类或结构中.默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1. 例1: //此枚举的默认值是从0开始 enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; 例2: //此枚举的默认值是从1开始,下标为3的tue值为7,从下标3开始

JavaScript基本数据类型及值类型和引用类型

在JavaScript中四种基本的数据类型:数值(整数和实数).字符串型(用“”号或‘'括起来的字符或数值).布尔型(使True或 False表示)和空值.在JavaScript的基本类型中的数据可以是常量,也可以变量.由于JavaScript采用弱类型的形式,因而一个数据的 变量或常量不必首先作声明,而是在使用或赋值时确定其数据的类型的.当然也可以先声明该数据的类型,它是通过在赋值时自动说明其数据类型的. javascript中的变量 javascript中的变量只是一个占位符,前言已经说过了

C#:图解值类型,引用类型,栈,堆,ref,out [转]

程序执行的原理 要彻底搞明白那一堆概念及其它们之间的关系似乎并不是一件容易的事,这是因为大部分C#程序员并不了解托管堆(简称“堆”)和线程栈(简称“栈”),或者知道它们,但了解得并不深入,只知道:引用类型保存在托管堆里,而值类型“通常”保存在栈里.要搞明白那一堆概念的关系,我认为先要明白程序执行的基本原理,从而理解栈和托管堆的作用,才能理清它们的关系.考虑下面代码,Main调用Method1,Method1调用Method2: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1