zoukankan      html  css  js  c++  java
  • 值类型与引用类型传递的艺术

    1. 值类型参数按值传递

    2. 引用类型参数按值传递

    3. 值类型参数按引用传递

    4. 引用类型参数按引用传递

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             //示例1.值类型按值传递,操作的是该值类型实际的一份拷贝
     6             int a = 20;
     7             Add(a);//传递的是在堆栈上面a的一份拷贝
     8             Console.WriteLine(a);
     9 
    10             //示例2.引用类型按值传递,操作的是该引用类型对象的引用地址(但是该引用还是按值传递的),所以会影响改变原来对象
    11             Animal Robbit = new Animal();
    12             AddRef(Robbit);
    13             //按值传递总结:都是传递的值,值类型传递的是值类型 “值”的拷贝  引用类型:传递的是对象的引用地址
    14 
    15 
    16 
    17 
    18             //示例3.值类型的按引用传递:传递的是其实际值的地址,相对于操作的是值类型在堆栈上面的那块内存
    19             int i = 33;
    20             ChangeInt(ref i);
    21             Console.WriteLine(i.ToString());
    22             //示例4.引用类型按引用传递,传递的是对象引用的引用
    23             string str = "WOW";
    24             ChangeRef(ref str);
    25             Console.WriteLine(str);
    26             Console.ReadKey();
    27 
    28             //按引用传递总结:是传递参数的地址,
    29 
    30         }
    31 
    32         static void ChangeRef(ref string astr)
    33         {
    34             astr = "hello word";
    35         }
    36 
    37         static void ChangeInt(ref int i)
    38         {
    39             i = 22;
    40            
    41         }
    42         static void AddRef(Animal robbit)
    43         {
    44             robbit.eye = 3;
    45             Console.WriteLine(robbit.eye);
    46         }
    47         static void Add(int i)
    48         {
    49             i = 200;
    50         }
    51     }
    52 
    53     public class Animal
    54     {
    55         public int eye = 2;
    56     }
  • 相关阅读:
    关于vue中的语法糖v-model
    Cocos2d-x shader学习1: 灰度shader
    nginx多域名配置
    lua和c的亲密接触
    LeetCode 2. Add Two Numbers 解题报告
    LeetCode 1. Two Sum 解题报告
    【翻译】LPeg编程指南
    Cocos2d-x中的CC_CALLBACK_X详解
    C++ 11 学习3:显示虚函数重载(override)
    C++ 11 学习2:空指针(nullptr) 和 基于范围的for循环(Range-based for loops)
  • 原文地址:https://www.cnblogs.com/netlove/p/3364724.html
Copyright © 2011-2022 走看看