zoukankan      html  css  js  c++  java
  • .net中以传引用的方式 向方法中传参数

            CLR(CommonLanguageRuntime)公共语言运行时,允许以传引用而非传值的方式传递参数。在C#中,这是用关键字 out 和ref来做到的。

            从CLR角度来看,这两个关键字没什么区别,生成的IL代码都是一样的。但是C#编译器是将这两个关键字区别对待的,而且这个区别决定了由哪个方法负责初始化所引用的对、象。如果方法的参数用out关键字来标记,表明不指望调用者在调用方法之前初始化对象。被调用的方法不能够读取out标记的参数的值,而且在函数返回前必须给该参数写入值。

          相反,使用ref标记传入的参数,调用者必须在调用方法前初始化参数值,被调用的方法可以读取/写入值。

        对于out和ref,引用类型和值类型的行为迥然有异。先看一看 为值类型使用out和ref:

    public  sealed class progran{
    
    public static void Main(){
    
    
    int32 x;//x没有实例化初始值
    
    GetVal(out x);
    
    } 
    
    private static void GetVal(out int32 V){
    
    v=10;//该方法返回值前必须给V初始化值
    
    
    }
    
    }

    public  sealed class progran{
    
    public static void Main(){
    
    
    int32 x;
    x=100;//x必须给初始值
    GetVal(ref x);
    
    } 
    
    private static void GetVal(ref int32 V){
    
    int32 obj;
    obj=V;//该方法可以读取并使用参数值
    V=obj+10;//该方法可以修改,写入值
    
    
    }
    
    }
  • 相关阅读:
    发个小程序希望有人需要(操作摄像头)
    (转)Qt中translate、tr关系 与中文问题
    VS2008代码自动对齐
    (转)Qt国际化(源码含中文时)的点滴分析
    (转)Bibtex使用方法
    (转)new,operate new和placement new
    (转)C++中的虚函数表
    (转)QString 与中文问题
    (转)static_cast, dynamic_cast, const_cast探讨
    试试
  • 原文地址:https://www.cnblogs.com/yplong/p/3985138.html
Copyright © 2011-2022 走看看