C#-02 传入参数的一些用法2
C#_02 参数应用2
一、关于 “ref” 局部变量和 “ref” 返回
- 在前面已经明白了 ref 关键词传递一个对象引用给方法调用,这样在方法中对对象修改过后返回后依然可见,而 ref 返回却相反,它允许你将引用发送到方法外,然后在调用的上下文使用这一引用。而与之相关的是ref局部变量,先从ref局部变量开学习
- 下面先从 ref 局部变量开始:
- 它允许一个变量是另一个变量的别名
- 对任意一个变量的修改都会反映到另一个上
- 创建别名语法: ref int y = ref x;(在这里y是x的别名)
- 代码示例:
Class Program
{
Static Void Main()
{
int x = 5;
ref int y = ref x;
Console.WriteLine($” x : {x} , y : {y} ”);
y=7;
Console.WriteLine($” x : {x} , y : {y} ”);
X=9;
Console.WriteLine($” x : {x} , y : {y} ”);
//输出结果为
//5 5
//7 7
//9 9
}
}
- 但是别名功能并不是 ref 局部变量的一个常见用途,实际上它经常与 ref 返回一起使用,ref 返回提供了一种方法使得方法返回值返回变量引用而非变量值
- 具体用法:会使用两次 ref 关键词
- 一次是位于方法返回类型声明之前
- 二次是在 return 关键词之后,被返回对象之前
- 代码示例:
Class Simple
{
private int x = 50;
public ref int RefGet()
{
return ref x;
}
public void Display()
{
Console.WriteLine($”Value : {x}”);
}
}
Class Program
{
Static Void Main()
{
Simple s = new Simple();
s.Display();
ref int q=s.RefGet();
q+=2;
s.Display();
//运行结果为 value:50
// value:52
}
}
- 这里另一个比较经典的例子就是返回 MAX ,在返回时想要返回最大值的引用而非最大值的值,这里就可以使用 ref
- 代码示例(缩略)
Class Max
{
Public ref int GetMax(ref int x,ref int y)
{
return ref x>ref y;
}
}
Class Program
{
Static void Main()
{
int x=20,y=10;
Max D = new Max();
ref int max = D.GetMax(ref x,ref y);
max++;
Console.WriteLine($”max : {max}”);
}
}
二、命名参数
C#允许我们使用命名参数,只要显式指定名字,就可以按任意顺序在方法调用中列出参数
格式:(这里 a ,b ,c 是三个形参)
- c.Cale(c:2,a:5,b:4);
代码示例:
Class Program
{
public int Cale(int a, int b, int c)
{
return a+c*b;
}
static void Main()
{
int r1=Cale(c:4,a:2,b:4);
int r2=Cale(a:2,c:4,b:4);
int r3=Cale(2,c:4,b:4);
}
}
三、可选参数:(没什么可说的)
- 在方法中提供默认值
- 示例:
public int Cale(int a,int b,int c=3)
{
return a+b*c;
}
Static void Main()
{
int a=2,b=4,c=4;
Console.WriteLine($” {Cale(a,b)} {Cale(a,b,c)} ”);
}
C#-02 传入参数的一些用法2的更多相关文章
- C#-01 关于C#中传入参数的一些用法
实验环境 实验所处环境位于vs2019环境中 学习内容 一.最基础的参数传入:值参数 对于这种传入,和其他的c,c++编程语言参数传入一样,没有太大差别,在这里给如下例子: 虽然这里并没有进行传参但是 ...
- 《OOC》笔记(3)——C语言变长参数va_list的用法
<OOC>笔记(3)——C语言变长参数va_list的用法 C语言中赫赫有名的printf函数,能够接受的参数数目不固定,这就是变长参数.C#里也有params这个关键字用来实现变长参数. ...
- C语言的本质(16)——函数接口的传入参数与传出参数
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcp ...
- sqlserver 针对预处理sql传入参数的处理方式
在编写sql中,经常需要对sql进行预处理,动态拼接字符串,那么要获取在这预处理之后返回的的某个值并且赋值,传入参数的语法 USE [OA] GO /****** Object: StoredProc ...
- MyBatis的parameterType传入参数类型
在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的 ...
- MYSQL DATE_FORMAT参数列表及用法
MYSQL DATE_FORMAT参数列表及用法 主要涉及用法 DATE_SUB(DATE, INTERVAL EXPR TYPE) DATE_FORMAT(DATE,FORMAT) REPLACE( ...
- springboot 之 根据传入参数进行多数据源动态切换
背景:最近有一个需求是根据app传来的请求参数,根据行政部门编码请求不同地区的数据,之前写的多数据源都是固定某个方法调用指定的dao然后查询不同的数据库,但是这次是需要根据前端传入参数进行动态区分数据 ...
- MyBatis传入参数为集合、数组SQL写法
参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合 ...
- WF4.0 工作流设计器 传入参数问题记录?
在本公司的流程设计器 ,如果流程中使用了传入参数,应先定义 参数,然后再拖动节点,才能正确提交,否则出错,原因未查明,只观察到现象.
随机推荐
- WSL2安装Ubuntu20.04
前言:听说WSL2需要Window版本在1904以上(我的window版本是1909,所以未能验证真实性) 启用WSL 控制面板 → 程序 → 程序和功能 → 启用或关闭Windows功能 勾选 适用 ...
- 第七天python3 函数、参数及参数解构(二)
函数参数 参数规则: 参数列表参数一般顺序是:普通参数<--缺省参数<--可变位置参数<--keyword-only参数(可带缺省值)<--可变关键字参数 def fn(x,y ...
- 一些JS库汇总
作者:wlove 链接:https://www.zhihu.com/question/429436558/answer/2348777302 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...
- 从零开始Blazor Server(7)--使用Furion权限验证
序 上面两篇我们讲了怎么用OnNavigateAsync来验证权限,又写了怎么用策略来验证权限. 其实我们既然集成了Fution,就可以用Furion带的方式来验证. 创建AdminHandler 我 ...
- Oracle-DDL,DML理解以及应用
SQL语句:虽然SQL语句不区分大小写,但是字符串的值时区分大小写的.SQL是结构化查询语句,操作数据库需要向数据库发送SQL语句,数据库会理解SQL语句中含义并执行SQL语句分为:DDL(数据定义语 ...
- Servlet特性研究之异步模式
Servlet只有同步模型是怎样的? 异步处理是Servlet3.0版本的重要功能之一,分析异步处理模型之前,先看看同步处理的过程是怎样的: 客户端发起HTTP请求一个动态Servlet API,请求 ...
- Spring源码-Bean生命周期总览
- 【java】学习路径16-重写Object方法(equals()等)
在平时开发中,想要比较自定义类对象中的特定成员时,我们需要逐一手动比较,非常不方便. 举个栗子,我们有两个cafe对象,我们想比较两杯咖啡的价格是否一样,一般来说我们使用getter()来比较,但是这 ...
- 宝塔面板服务器ip地址修改域名
参考博客:请点击百度 今天登录宝塔面板是突然忘记了服务器IP地址,从而导致了以下这种情况. 其实我以前是买过一个域名的,但是并没有绑定到宝塔上面.从而就一直拿IP登录宝塔面版.现在用命令方式更换域名, ...
- pathlib路径问题
下面是我的文件框架 app ------ file1---- .py1 file2---- .py2 config.py 我在config文件中设置了变量参数 BASE_DIR = pathlib.P ...