关键字:this、ref、out
Class1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Class1
{
private string name;
public Class1(string name)
{
// 使用this关键字表明使用当前对象的属性(或方法),后面的name是形参name
this.name = name;
}
public void Eat()
{
Console.WriteLine("名字:" + this.name);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 使用类
Class1 myname = new Class1("namejr");
myname.Eat();
}
}
}
使用ref关键字进行引用传参
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int age = ;
// 关键字ref按引用传参
Growth(ref age);
Console.WriteLine(age);
}
// 该static是int类型的++,相当于值类型
static void Growth(ref int age)
{
age++;
Console.WriteLine("int又长大一岁!!!");
}
}
}
使用out关键字做引用传递
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int age = ;
// 关键字out按引用传参
// out可以返回多个属性值,而return只能返回一个
int prev_a, next_a; // 用来接收上一年和下一年的年龄
Growth(age, out prev_a, out next_a);
Console.WriteLine("上一年的年龄:" + prev_a);
Console.WriteLine("明年的年龄:" + next_a);
}
// 使用out关键字,也用来做引用传递
static void Growth(int age, out int prevage, out int nextage)
{
prevage = age - ;
nextage = age + ;
}
}
}
值得注意的是:ref、out都是引用传递,使用的方法在值传递的前面加上ref/out即可;在使用ref前必须对ref所引用的变量进行赋值,否则会报错,out可以不在引用前赋值,但必须在离开方法前赋值。

修改:

关于值传递和引用传递:https://www.cnblogs.com/namejr/p/10261486.html
关键字:this、ref、out的更多相关文章
- C#中三个关键字params,Ref,out
关于这三个关键字之前可以研究一下原本的一些操作 using System; using System.Collections.Generic; using System.Text; namespace ...
- c#关键字及ref和out
最近在写程序时遇到ref,out 参数问题.回头有自习看了看MSDN,才有巩固了基础.我把我的测试程序贴出来,大家分享一下. ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时, ...
- 5.C#知识点:ref和Out关键字浅谈
首先我们要知道ref和out在C#里面是什么? 答:它们俩是C#里面的关键字. 他们俩是干啥的呢? 答:他们俩是方法参数的修饰符号,一但使用,方法定义和方法都用都要使用这个关键字,这一点是死规定. 好 ...
- Out 与 Ref 关键字的区别
相同点:既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功效, ...
- 关于c#中”ref”和”out”关键字的一些理解
一. 综述(本文内容大部分来自网络,经本人整理而成,仅供学习参考,不免理解错误,欢迎批评指正) 在c#中,方法的参数传递有四种类型: (1) 传值参数(by value) 传值参数无需额外的修饰符.传 ...
- 《ASP.NET 1200例》ref关键字与out关键字
REF关键字 ref 关键字会导致通过引用传递的参数,而不是值. 通过引用传递的效果是在方法中对参数的任何改变都会反映在调用方的基础参数中. 引用参数的值与基础参数变量的值始终是一样的. 不要将“通过 ...
- C# 中三个关键字params,Ref,out
一. using System; using System.Collection.Generic; using System.Text; namespace ParamsRefOut { class ...
- C#知识点:ref和Out关键字浅谈
首先我们要知道ref和out在C#里面是什么? 答:它们俩是C#里面的关键字. 他们俩是干啥的呢? 答:他们俩是方法参数的修饰符号,一但使用,方法定义和方法都用都要使用这个关键字,这一点是死规定. 好 ...
- 索引器和ref、out关键字
这节讲三个小知识:索引器.ref.out. 索引器: 在一个类中,我们可以定义一个索引器,它可以让我们在外部像访问数组元素一样访问类的属性成员. 索引器的定义就像定义属性一样,只不过名称为this,后 ...
- C#中ref关键字的用法总结
ref表示引用的意思,C#中它有多种用法,这里简单总结一下: 1.按引用传递参数 具体可见:C#中的值传递与引用传递(in.out.ref) 2.引用局部变量 引用局部变量指的是在变量声明时使用ref ...
随机推荐
- python django 创建虚拟环境
DRF---django-rest-framework: 1.通过一个案例简单回顾一下django, 一.前后端分离,不分离 不分离:前端页面的显示,都是由后端返回的,就是说后端处理了参数,数据库,之 ...
- JAVA Clone复制对象
谈到了对象的克隆,就不得不说为什么要对对象进行克隆.Java中所有的对象都是保存在堆中,而堆是供全局共享的.也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改 ...
- 大数据-09-Intellij idea 开发java程序操作HDFS
主要摘自 http://dblab.xmu.edu.cn/blog/290-2/ 简介 本指南介绍Hadoop分布式文件系统HDFS,并详细指引读者对HDFS文件系统的操作实践.Hadoop分布式文件 ...
- 无根树同构_hash
先贴上地址 https://vjudge.net/problem/HDU-5732 判断有根树同构: 1. 直接用括号最小表示法 2. 利用括号最小表示法的思想进行hash 判断无根树同构: 1. 找 ...
- angular-translate
angular.module('app.core', ['pascalprecht.translate']).config(['$translateProvider', '$translatePart ...
- 实验吧—Web——WP之 Forms
我们先打开解题链接: 做Web题的第一步就是查看网页源代码,当然,有些网页他不会让你点击右键,那么可以在地址栏里的地址前面加上:view-source: 当然也可以打开控制台F12 我们可以看到代码里 ...
- 【BZOJ3894】文理分科
最小割劲啊 原题: 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行 描述,每个格子代表一个同学的座位.每位 ...
- 【mybatis源码学习】mybtias一级,二级缓存
转载:https://www.cnblogs.com/ysocean/p/7342498.html mybatis 为我们提供了一级缓存和二级缓存,可以通过下图来理解: ①.一级缓存是SqlSessi ...
- 每天进步一点点-实例为导学-一个java对象序列化的例子
序列化和反序列化例子 如果我们想要序列化一个对象, (对象 转 序列)首先要创建某些OutputStream(如FileOutputStream.ByteArrayOutputStream等),然后将 ...
- navicat连接oracle方法及其安装包
Navicat破解版下载(安装好之后,点击执行最后一个破解文件即可) 链接: https://pan.baidu.com/s/1pMpVwfT 密码: vrt6 连接oracle还需要下载以下文件,o ...