[C#基础]ref和out的使用

在C#中如果需要把值类型转换成引用类型传递其他方法中并使其原来值发生改变,使用 ref 和 out 转换成引用类型传递。

1. ref : 使用ref之前需要定义变量并初始化(必须初始)

 class Program
    {
        static void Main(string[] args)
        {

            int i = 10; //定义变量,并初始化;
            Console.WriteLine(" i = " + i);  //传递之前打印
            Demo(ref i);  //通过ref 把 i 改变引用传递
            Console.WriteLine(" i = " + i);

            Console.ReadKey();
        }

        //接收方法参数也要使用 ref 关键字
        public static void Demo(ref int i)
        {
            i = i + 100;
        }

    }

打印结果 :

2. out : 使用out之前需要定义变量,不必初始化;初始化留给被调用方法里进行。

 class Program
    {
        static void Main(string[] args)
        {

            int i ; //定义变量[不必初始化],如果这里进行了初始化,在接收方法会被替换掉;
            Demo(out i);  //通过 out 把 i 改变引用传递
            Console.WriteLine(" i = " + i);           

            Console.ReadKey();
        }

        //接收方法参数也要使用 out 关键字
        public static void Demo(out int i)
        {
            i = 100; //使用out 方式初始工作在方法内部进行
            i = i + 200;  //把 i  + 200 = 300
        }

    }

打印结果如下:

时间: 2024-08-03 10:28:50

[C#基础]ref和out的使用的相关文章

C#控制台基础 ref,out同时存在不可以重载的实例

1.代码 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication2 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 14 } 15 16 public

[C#基础]ref和out的区别

在C#中通过使用方法来获取返回值时,通常只能得到一个返回值.因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? MSDN:       ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中.若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字.      out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始

vue基础 ref的作用

1.  ref 获取dom元素,除了能获取dom元素也能获取组件dom, 组件通信: 在父组件中直接调用ref定义的组件的数据或者方法 <div id="app"> <p ref="mybutton"></p> <div ref="mybutton"></div> <!-- 会覆盖 --> <!--遇见循环 输出是一个数组--> <template v-fo

Gradle-jar-aar

Ref:Android Studio系列教程 Ref:Android Studio系列教程四--Gradle基础 Ref:Intellij IDEA 14.x 中的Facets和Artifacts的区别 Ref:Intellij IDEA 14.x 菜单项中Compile.Make和Build的区别 Ref:android studio 使用gradle 导出jar包,并打包assets目录 Ref:Android Studio *.jar 与 *.aar 的生成与*.aar导入项目方法

Java.Annotations

0. Annotation Tricks http://developer.android.com/reference/java/lang/annotation/Annotation.html 0.1 Annotation 接口 "Defines the interface implemented by all annotations. Note that the interface itself is not an annotation, and neither is an interface

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

C# 基础(一) 访问修饰符、ref与out、标志枚举等等

C# 基础(一) 访问修饰符.ref与out.标志枚举等等 一.访问修饰符 在C#中的访问修饰符有:private.protected.internal.public public:公共类型,同一程序集或其他程序集都可以访问此成员 private:私有类型,同一类里或结构里才可以访问此成员 protected:保护类型,同一类里或者派生类中才可以访问此成员 internal:内部类型,只有在同一程序集才可以访问此成员 访问性不一致:子类的访问权限不能比父类高.防止暴露父类的信息.. 二.stat

【2017-03-05】函数基础、函数四种结构、ref和out参数、递归

一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入,输出,函数体,函数名.(函数体.函数名必须有,输入.输出不是必须有的!) 5.格式 public static 返回值类型 函数名(输入值类型参数,第二个,第三个,int a,string b) { return 上面的返回值类型 } 注:函数也是放在Main函数之外,在Class之内.花括号之内的

c#编程基础之ref、out参数

引例: 先看这个源码,函数传递后由于传递的是副本所以真正的值并没有改变. 源码如下: using System; using System.Collections.Generic; using System.Text; namespace refout参数学习 { class Program { static void Main(string[] args) { int age = 20; IncAge(age); Console.WriteLine(age);//打印结果还是20 Consol