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的更多相关文章

  1. C#-01 关于C#中传入参数的一些用法

    实验环境 实验所处环境位于vs2019环境中 学习内容 一.最基础的参数传入:值参数 对于这种传入,和其他的c,c++编程语言参数传入一样,没有太大差别,在这里给如下例子: 虽然这里并没有进行传参但是 ...

  2. 《OOC》笔记(3)——C语言变长参数va_list的用法

    <OOC>笔记(3)——C语言变长参数va_list的用法 C语言中赫赫有名的printf函数,能够接受的参数数目不固定,这就是变长参数.C#里也有params这个关键字用来实现变长参数. ...

  3. C语言的本质(16)——函数接口的传入参数与传出参数

    如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcp ...

  4. sqlserver 针对预处理sql传入参数的处理方式

    在编写sql中,经常需要对sql进行预处理,动态拼接字符串,那么要获取在这预处理之后返回的的某个值并且赋值,传入参数的语法 USE [OA] GO /****** Object: StoredProc ...

  5. MyBatis的parameterType传入参数类型

    在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的 ...

  6. MYSQL DATE_FORMAT参数列表及用法

    MYSQL DATE_FORMAT参数列表及用法 主要涉及用法 DATE_SUB(DATE, INTERVAL EXPR TYPE) DATE_FORMAT(DATE,FORMAT) REPLACE( ...

  7. springboot 之 根据传入参数进行多数据源动态切换

    背景:最近有一个需求是根据app传来的请求参数,根据行政部门编码请求不同地区的数据,之前写的多数据源都是固定某个方法调用指定的dao然后查询不同的数据库,但是这次是需要根据前端传入参数进行动态区分数据 ...

  8. MyBatis传入参数为集合、数组SQL写法

    参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合 ...

  9. WF4.0 工作流设计器 传入参数问题记录?

    在本公司的流程设计器 ,如果流程中使用了传入参数,应先定义 参数,然后再拖动节点,才能正确提交,否则出错,原因未查明,只观察到现象.

随机推荐

  1. 【跟着大佬学JavaScript】之数组去重(结果对比)

    前言 数组去重在面试和工作中都是比较容易见到的问题. 这篇文章主要是来测试多个方法,对下面这个数组的去重结果进行分析讨论.如果有不对的地方,还请大家指出. const arr = [ 1, 1, &q ...

  2. ajax04_实现关键字联想和自动补全

    用ajax实现关键字联想和自动补全 遇到的小坑 回调函数相对window.onload的摆放位置 给回调函数addData传数据时,如何操作才能将数据传进去 代码实现 前端代码 <!DOCTYP ...

  3. Python常用基础语法知识点大全

    记得我是数学系的,大二时候因为参加数学建模,学习Python爬虫,去图书馆借了一本Python基础书,不厚,因为有matlab和C语言基础,这本书一个星期看完了,学完后感觉Python入门很快,然后要 ...

  4. HashTable集合和练习题_计算一个字符串中每一个字符出现的次数

    HashTable集合 /** * java.util.Hashtable<K,V>集合 implement Map<K,V>接口 * Hashtable:底层也是一个哈希表, ...

  5. 从零开始Blazor Server(6)--基于策略的权限验证

    写这个的原因 现在BootstrapBlazor处于大更新时期,Menu组件要改为泛型模式. 本来我们的这一篇应该是把Layout改了,但是改Layout肯定要涉及到菜单,如果现在写了呢,就进入一个发 ...

  6. 使用.NET简单实现一个Redis的高性能克隆版(二)

    译者注 该原文是Ayende Rahien大佬业余自己在使用C# 和 .NET构建一个简单.高性能兼容Redis协议的数据库的经历. 首先这个"Redis"是非常简单的实现,但是他 ...

  7. 为MySQL MGR实现简单的负载均衡代理

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 原创:万里数据库,花家舍 导读 在多写(多节点写入)数据库(例如MySQL MGR的multi-primary mode) ...

  8. MySQL源码解析之执行计划

    MySQL源码解析之执行计划 MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一.MySQL执行计划介绍 在MySQL中,执行计划的实现是基于JOIN和QEP_TAB这两个 ...

  9. 【Go实战基础】创建并完成第一个可执行的 go 程序

    实战需求:创建并完成第一个可执行的 go 程序.项目目录:go-001具体实战步骤如下: 一.进入工程目录 cd go-001/ 二. 创建 g001.go 文件 /* * @Author: 菜鸟实战 ...

  10. jsp获取下拉框组件的值

    jsp获取下拉框组件的值 1.首先,写一个带有下拉框的前台页 1 <%@ page language="java" contentType="text/html; ...