C#基础-ref、out】的更多相关文章

在C#中通过使用方法来获取返回值时,通常只能得到一个返回值.因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? MSDN:       ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中.若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字.      out 关键字会导致参数通过引用来传递.这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始…
一. ref 的使用 ( 直接获取 DOM 元素 ) 在 input 标签上 可以使用 ref 属性 获取当前DOM节点 eg: import React , { Component, Fragment } from 'react'; class MyComponent extends Component { constructor(props){ super(props); this.handleInput = this.handleInput.bind(this); this.state =…
在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 改变引用传递 Con…
1.默认情况下,C#假定所有的方法参数传递都是传值的. 如下面的方法: public static void Main(string[] args) { int val = 5; //调用AddValue方法,aVal会重新拷贝一份val的值(即aVal为val的一个实例副本),方法内部的操作并不会改变val的值. AddValue(val); //val值还是5,并没有加1 Console.WriteLine(val); Console.ReadLine(); } public static…
对于C#中这两个关键字的用法,常常混淆,有点不清楚,今天又一次看到.遂把它们都记录下来,希望能有所用.这些都是他人写的,我只是搬过来一次,加深印象. 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace dazilianxi.wenjian { public class MoTes:IEnumerable<SanWei> { private reado…
两者都是按地址传递的,使用后都将改变原来参数的数值. class Program { static void Main(string[] args) { int num = 1; Method(ref num); Console.WriteLine(num); Console.ReadKey(); } public static void Method(ref int num) { num += 5; } } class Program { static void Main(string[] a…
1.  ref 获取dom元素,除了能获取dom元素也能获取组件dom,   组件通信:        在父组件中直接调用ref定义的组件的数据或者方法 <div id="app"> <p ref="mybutton"></p> <div ref="mybutton"></div> <!-- 会覆盖 --> <!--遇见循环 输出是一个数组--> <temp…
前言 一.基础 Ref: Build a REST API with Laravel API resources Goto: [Node.js] 08 - Web Server and REST API 二.资源 Goto: Laravel 5.4 From Scratch[原讲座] Goto: https://laravel.com/docs/5.4 Ref: Laravel China 社区 三.快捷键 [1] 自动生成 html 基本的 head, body 代码模板. [2] exten…
LearnPython :数据结构 .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered…
Annotation 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 a…
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导入项目方法…
前言 这两天在网上看到的总结很多,尤其是博客园中的,很多很多,也给了我很多的启发,当然自己也总结过,而且有很多人也给与我一些意见和看法.不管怎样,自己还是先把所谓的基础知识加强巩固下吧. 2014年的第一篇博客,希望自己从基础开始.也是希望自己能够稍微系统来学习整合一下.因为之前从来都没系统学习过,都是用到啥查啥,先查啥就忘啥快,所以在此记录一下,以备以后查看.好了废话也不多说,进入正题. 正文 1.类和对象 类的定义:具有相同属性和功能的对象的抽象的集合.——脑门一闪,类其实也是个集合吗? 类…
一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入,输出,函数体,函数名.(函数体.函数名必须有,输入.输出不是必须有的!) 5.格式 public static 返回值类型 函数名(输入值类型参数,第二个,第三个,int a,string b) { return 上面的返回值类型 } 注:函数也是放在Main函数之外,在Class之内.花括号之内的…
一.前言 这篇文章涉及的主要内容有: 1.ref绑定在标签上是获取DOM对象 2.ref绑定在子组件上获取的是子组件对象 3.案列:自动获取input焦点 二.主要内容 1.基础内容: ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs对象上.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素:如果用在子组件上,引用就指向组件实例 (1)将ref绑定到标签上:测试之后发现在mounted()函数之后拿到的是button对象 <!DOCTYPE html>…
"大菜":源于自己刚踏入猿途混沌时起,自我感觉不是一般的菜,因而得名"大菜",于自身共勉. 扩展阅读 c#基础系列1---深入理解 值类型和引用类型 c#基础系列2---深入理解 String 在上篇文章深入理解值类型和引用类型的时候,有的小伙伴就推荐说一说ref和out 关键字,昨天晚上彻夜难眠在想是否要谈一下呢,因为可谈的不是太多,也可能是我理解的不够深刻. 应用场景 out 修饰函数参数,以传递引用的方式向函数传递参数. out 关键字也可与泛型类型参数结合使…
C# 基础(一) 访问修饰符.ref与out.标志枚举等等 一.访问修饰符 在C#中的访问修饰符有:private.protected.internal.public public:公共类型,同一程序集或其他程序集都可以访问此成员 private:私有类型,同一类里或结构里才可以访问此成员 protected:保护类型,同一类里或者派生类中才可以访问此成员 internal:内部类型,只有在同一程序集才可以访问此成员 访问性不一致:子类的访问权限不能比父类高.防止暴露父类的信息.. 二.stat…
out.ref.params out: 如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组. 但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候, 我们可以考虑使用out参数. out参数就侧重于在一个方法中可以返回多个不同类型的值.参数必须在方法中对其完成初始化   案例: ref: 能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法. ref参数要求在方法外必须为其赋值,而方法内可以不赋值.   案例: params; 将实参列表中跟…
引例: 先看这个源码,函数传递后由于传递的是副本所以真正的值并没有改变. 源码如下: using System; using System.Collections.Generic; using System.Text; namespace refout参数学习 { class Program { static void Main(string[] args) { ; IncAge(age); Console.WriteLine(age);//打印结果还是20 Console.ReadKey();…
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { string outString = "This is the outString value"; Console.WriteLine(outString…
在C#中,ref的意思是按引用传递.可以参考C++: int a = 10, b = 20; void swap(int x, int y) { int temp = x; x = y; y = temp; } 如果简单的调用这个swap,比如:swap(a, b),那么你根本没办法交换这两个变量的值,因为x和y都是形参,在swap返回的时候,x和y都被释放了.但如果是这样定义swap: void swap (int& x, int& y) { int temp = x; x = y; y…
静态类 静态类不能被其他类继承,静态成员亦不能被继承(访问的是同一个),备注1. 静态类只能继承自Object类.(静态类不能继承自其它类.) 继承(多态).静态本身就是相反的. 静态类不能实现任何接口, (因为接口中的成员都是实例成员.*) sealed:(*)密封类,不能被继承. sealed关键字,表示类不能被继承.(密封类) 密封类表示不能被继承.String类..net系统中本身对字符串有很多特殊处理(为String开了很多“绿灯”,String有很多特权,比如:不可变性,字符串池等等…
1.ref传进去的参数必须进行初始化,out不必int i;SomeMethod( ref i );//语法错误SomeMethod( out i );//通过 2.ref传进去的参数在函数内部可以直接使用,而out不可:public void SomeMethod(ref int i){ int j=i;//通过 //...}public void SomeMethod(out int i){ int j=i;//语法错误 } 3.ref传进去的参数在函数内部可以不被修改,但out必须在离开函…
break[跳出循环或者退出一个switch语句]由于它是用来退出循环或者switch语句的,所以只有当它出现在这些语句中时才是合法的. continue 语句和break语句相似,只是它不是退出一个循环,而是开始循环的一次新迭代[跳出本次循环,开始一个新的循环].continue语句只能用在while语句.do/while语句.for语句.或者for/in语句的循环体内,在其它地方使用都会引起错误! return 语句就是用于指定函数的返回值.return语句只能出现在函数体内,当执行retu…
介绍 给方法传递普通参数时,值类型传递的是拷贝的对象,而引用类型传递的是对象的引用.它们都不能在函数内部直接修改外部变量的引用(不是修改引用类型的属性),而使用 ref 或 out 关键字就可以实现. 作用 ref:在方法内部修改外部变量的引用. out:方法内部给外部变量初始化,相当于一个函数多个返回值. 注意事项: 使用 ref 修饰参数时,传入的参数必须先被初始化,方法中可以不复制.而对 out 而言,必须在方法中对其完成初始化,在方法外部不用初始化. 使用 ref 和 out 时,在执行…
对象初始化器: 对象在创建过程中也可以使用对象初始化器完成“属性的初始化” Student stu =new Student(){ StudentId=, StudentName="张三", Age= }; 注意: 属性之间使用”,“分割. 只能在.NET3.0及其以后版本中才能使用 与构造函数一样具有感知 对象初始化器与构造方法(函数)的异同点: 相同点:都能够完成对象属性的初始化 不同点: 构造函数具有强制性,而对象初始化器没有强制性 前者只能完成属性的初始化,而构造函数可以完成任…
params可变参数: 1.无论方法有几个参数,可变参数必须出现再参数列表的最后,可以为可变参数直接传递一个对应类型的数组: 2.可变参数可以传递参数也可以不传递参数,如果不传递参数,则数组为一个长度为0的数组 3.可变参数可以直接传递一个数组进来 static void Test(string msg,params int[] args) { //如果可变参数传值为null时,需要加上判断 if (args != null) { } } ref关键字: 1.参数再传递之前必须赋值,再方法钟可以…
params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 #region 可变参数 //1.如果方法有多个参数,可变参数可以作为最后一个参数 //2.可变参数可以传递参数也可以不传递参数,如果不传递参数,则args数组为一个长度为0的数组 //3.可变参数可以直接传递一个数组进来 static void Test(string msg,params int[] args) { //如果可变参数传值为null时,需要加上判断 if(args!=nul…
ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量.它们的区别是: 1.使用ref型参数时,传入的参数必须先被初始化.对out而言,必须在方法中对其完成初始化. 2.使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字.以满足匹配. 3.out适合用在需要retrun多个返回值…
ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象上.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素:如果用在子组件上,引用就指向组件实例,例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script s…
一.按值传递参数 值参数是通过将实参的值复制到形参,来实现按值传递到方法,也就是我们通常说的按值传递. 方法被调用时,CLR做如下操作: 1.在托管栈中为形参分配空间: 2.将实参的值复制到形参. 这个太常用了,按值传递参数,是复制一份,因此不影响原来参数的值. public class Program { static void Main(string[] args) { ; ; int k = Plus(i,j); Console.WriteLine(i); //输出 1 Console.W…