一、ref 的用法——引用

C#提供一种强制按引用传递参数的方法。这种方法既能用在值类型上,也能用在引用类型上。

就是同时在方法的声明和调用上使用 ref 关键字。

using System;

class Program

{

static void Main()

{

int i = 10;//必须进行初始化,不然编译会报错

fun(ref i);

Console.WriteLine("i = " + i);

Console.ReadLine();

}

static void fun(ref int i)

{

i = 100;

}

}

输出结果为 : i = 100

二、out 的用法——输出参数

在C++中,获得方法的结果要么是通过返回值,要么是通过由引用或指针传递的参数。

而在C#中,除了返回值,引用,还提供了一种比较正规的方法。就是使用 out 关键字来标记需要返回的参数。

using System;

class MyClass

{

public string TestOut(out string i)

{

i = "使用out关键字";

return "out参数";

}

}

class test

{

static void Main()

{

string x;//可以不用初始化,在方法内部赋值即可。

MyClass app = new MyClass();

Console.WriteLine(app.TestOut(out x));

Console.WriteLine(x);

Console.ReadLine();

}

}

输出结果为:

out参数

使用out关键字

三、params 的用法——不定数目的参数

C++中允许函数带有默认参数,允许不定数目的参数。但C#中不允许函数参数带有默认值。默认值这种功能,只能用函数重载来代替实现了。

但是C#允许方法带有不定数量的参数。使用params关键字,且参数必须是参数表中的最后一个参数。

using System;

class Program

{

static void Main()

{

fun("Call 1");

Console.WriteLine("\n");

fun("Call 2", 2);

Console.WriteLine("\n");

fun("Call 3", 3.2, "hey look at here", false);

Console.ReadLine();

}

static void fun(string str, params object[] args)

{

Console.WriteLine(str);

foreach (object ob in args)

{

if (ob is int)

{

Console.Write(" int : " + ob);

}

else if (ob is double)

{

Console.Write(" double : " + ob);

}

else if (ob is string)

{

Console.Write(" string : " + ob);

}

else

{

Console.Write(" other type : " + ob);

}

}

}

}

输出结果为:

java params 关键字_转载------C# ref 和 out ,params关键字的用法相关推荐

  1. 常见的Java审计代码函数关键字_转载:Java代码审计汇总系列(一)——SQL注入

    原文链接:https://cloud.tencent.com/developer/article/1534109 一.代码审计 相比黑盒渗透的漏洞挖掘方式,代码审计具有更高的可靠性和针对性,更多的是依 ...

  2. java string()函数_转载java String.split()函数的用法详解

    转载java String.split()函数的用法详解 如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!在java.lang包中有String.split()方法的原型是: p ...

  3. eclipse java工程目录_转载:Eclipse下的java工程目录

    对新手来讲,一个Java工程内部的多个文件夹经常会让大家困惑.更可恶的是莫名其妙的路径问题,在Eclipse编写Java程序中,出现频率最高的错误很可能就是路径问题. 这些问题原因其实都是一个,就是关 ...

  4. linux java缓存失效_转载:Linux服务器Cache占用过多内存导致系统内存不足最终java应用程序崩溃解决方案...

    原文链接: https://blog.csdn.net/u014740338/article/details/66975550 问题描述 Linux内存使用量超过阈值,使得Java应用程序无可用内存, ...

  5. java double 排序_转载:qsort细节用法,double型的排序我竟然一直用错了~~~

    转载:qsort细节用法,double型的排序我竟然一直用错了--- (2010-11-26 18:16:43) 标签: 杂谈 分类: 转载 在对浮点或者double型的一定要用三目运算符,因为如果也 ...

  6. java求约数_[转载]Java求最大公约数与最小公倍数

    (看到一份不错的总结,拿来收着) 如果数a能被数b整除,a就叫做b的倍数,b就叫做作a的约数.约数和倍数都表示一个数与另一个数的关系,不能单独存在.如只能说16是某数的倍数,2是某数的约数,而不能孤立 ...

  7. java数据挖掘算法_[转载]干货,基于Java和C++的数据挖掘Apriori算法实现

    Apriori算法实现 Apriori算法的思想还是很容易理解的,实现起来虽然麻烦,但是还是比较容易的.下面是我使用Java语言实现的Apriori算法,实现了AprioriAlgorithm 类,包 ...

  8. java生成水印_[转载]java操作word生成水印

    应用场景 为了保护版权或辨别文件的真伪,有时需要在生成的Word文件中动态添加水印,PageOffice组件的WaterMark类就封装了给在线编辑的Word文件添加水印这一功能,调用接口非常简单. ...

  9. java形状类_[转载]JAVA 设计一个形状类Shape 求周长和面积

    设计一个形状类Shape,方法:求周长和求面积 形状类的子类:Rect(矩形),Circle(圆形) Rect类的子类:Square(正方形) 不同的子类会有不同的计算周长和面积的方法 创建三个不同的 ...

最新文章

  1. 编程小问题系列(6)——新年第一帖: 关于Silverlight在VS2010RC下无法正常运行的问题...
  2. 导致甲骨文裁员的原因有哪些?
  3. HALCON双目标定
  4. Elon Musk的OpenAI用VR训练机器人:解锁更多复杂动作!
  5. Spring教程--AOP简介
  6. word 中同样的字号和行距倍数,不一样的行距
  7. Playfab开发(一)如何调用PlayFab接口
  8. SQL SERVER 内存分配及常见内存问题(1)——简介
  9. 95-190-035-源码-window-Time Window 实现
  10. SSH 无法远程登录问题的处理思路
  11. java 反转二叉树 非递归_【刷算法】翻转二叉树的递归和非递归解法
  12. Log4J发日志邮件给多个接收者及标题、正文乱码问题
  13. ios 简书 获取通讯录信息_ios 获取本地通讯录信息
  14. html简单个人网页制作网站设计——腾讯游戏官网(13页) HTML+CSS+JavaScript web网页设计与开发
  15. 数字孪生CIM智慧城市BIM,城市cim可视化解决方案公司
  16. 科学计算机计算内插法,线性插值计算器
  17. 【PCL】—欧式聚类算法详解
  18. Matlab学习——求解微分方程(组)
  19. python实现税后工资_python税后工资计算器
  20. apiCloud初探

热门文章

  1. “烘焙”ImageNet:自蒸馏下的知识整合
  2. 消费级GPU、速度提升3000倍,微软FastNeRF实现200FPS高保真神经渲染
  3. 论文盘点:基于图卷积GNN的多目标跟踪算法解析
  4. 深度学习入门之PyTorch学习笔记:深度学习框架
  5. java io 文件路径格式_java中iofile的路径问题,确定一个未知方法所需要的文件路径...
  6. kettle从入门到精通_数据分析师的全景职业规划,入门、转行都先看这篇
  7. java是什么_Java是什么?
  8. linux算术表达式求值数据结构,数据结构:算数表达式求值演示
  9. Dubbo Admin —— Spring Cloud Alibaba 2021.1 + Nacos + Dubbo Admin参考配置
  10. MyBatis Plus Generator——MyBatis Plus代码生成器DEMO