CLR Via C# 阅读笔记参数

摘要:
.NETFramework读书笔记一参数默认值、命名参数在平常工作中,设计方法的时,方法参数的设计是方法设计必须优先慎重考虑的,比如说参数的类型、个数、默认值、可选性等。函数Main分别对函数ShowInfor进行四次调用。显示给参数传递的值必须在命名参数传值的左边。这里就涉及到C#中的Out与Ref相关方面的知识。主要依靠关键字params来解决。C#编译器首先检查是否存在于调用函数完全匹配的方法原型,如果存在直接调用。

.NET Framework读书笔记一 参数

  • 默认值、命名参数

在平常工作中,设计方法的时,方法参数的设计是方法设计必须优先慎重考虑的,比如说参数的类型、个数、默认值、可选性等。设计一个好的方法不管对代码的可读性、可维护性、可扩展性都起着很大的作用。在C#中,参数的默认值设置如下所示:

CLR Via C# 阅读笔记参数第1张

参数默认值设置方式如上图红色矩形标注所示。函数Main分别对函数ShowInfor进行四次调用。仔细观察对函数ShowInfor的调用可以发现一个特性如下所示:

CLR Via C# 阅读笔记参数第2张

程序运行结果:

CLR Via C# 阅读笔记参数第3张

从程序运行结果可以得出以下结论:

  1. 函数以命名参数传值的顺序可以不与函数定义的参数顺序不一样。
  2. 显示给参数传递的值必须在命名参数传值的左边。

如果给ShowInfor函数添加一个参数ID,如下定义:

CLR Via C# 阅读笔记参数第4张

由VS的错误提示可知:可选参数的定义顺序必须在必选参数的后面。

u Out与ref

参数的传递方式有两种:传值、传引用,对于基本的数据类型,一般的是按值的方式进行传递,如果要按引用的方式进行传递,该如何做?这里就涉及到C#中的Out与Ref相关方面的知识。

对于Out参数,传递的实参可以不初始化,但是在函数返回前,必须对该参数进行赋值,在函数内部该参数可写,如下所示:

CLR Via C# 阅读笔记参数第5张

如果未对Out参数赋值,如下所示:

CLR Via C# 阅读笔记参数第6张

对于Ref参数,传递的实参在传递给形参前必须对其初始化,在函数内部可读可写。

public static void GetName(ref string name)
{
name = "SuperMan";
}

如果未对实参进行初始化,出现如下错误,提示:使用了未赋值的变量

CLR Via C# 阅读笔记参数第7张

针对Out参数和Ref参数类型必须与传递的实参的类型一致,否则出现如下错误:

CLR Via C# 阅读笔记参数第8张

u 传递可变数量参数 params

通常,在工作中使用最多的还是参数数量固定的方法。其实,在C#中,可以传递任意数量的参数,这在设计方法前并不知道将来具体可能有多少个参数的情况下提供了良好的解决方案。主要依靠关键字params来解决。Params必须和array联合使用,否则如下所示:

CLR Via C# 阅读笔记参数第9张

如果确定是该调用可变参数数量函数还是固定参数数量函数?C#编译器首先检查是否存在于调用函数完全匹配的方法原型,如果存在直接调用。如果不存在,在检查是否存在使用了ParamArray属性的方法,如果存在,则调用该方法。整个过程,如下所示:

CLR Via C# 阅读笔记参数第10张

以上就是参数的相关笔记,很少写博客,如有不当之处,请指出,我好修正。谢谢

免责声明:文章转载自《CLR Via C# 阅读笔记参数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring、Spring Boot整合Droolswindows设置代理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

delphi 对应 c# 的一些函数及类型的转换方法【原】

例一 实现目的:将字符串中每一个字符转成二进制(比如 'Data' 中的 D 转成 00100010 ,整个就是 00100010100001100010111010000110) 处理逻辑:string result = StrToByte("Data"); result结果是00100010100001100010111010000110   1、实际...

C#调用WIN32的API(转贴)

小序 Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微软留给我们直接控制Windows的接口。想玩儿吗?呵呵,太难了。C#使用非常简单,写程序就像打拱猪,Sorry -_-! ,搭积木一样简单。想玩儿吗?呵呵,没办法直接控制Windows的核心...

Bartender 打印RFID标签 (使用C#_SDK进行RFID打印或者表面信息打印)

为了摆脱复杂的ZPL、以及其他语言的各种打印协议, 所以研究了一下如何使用C# SDK调用BartenderSDK 进行模板打印。 优点: 利用Bartender的可视化编辑工具, 进行调节模板, 设置变量, 软件代码无需关心打印的内容调整, 轻松对接各类打印机系统。 缺点: 需要花钱买bartender授权的软件。 (不过大部分公司会使用Bartende...

C# WINFORM 编程中,选择**文件夹**而不是文件的方法(转)

 我们选择文件可以用 OpenFileDialog ,但是文件夹有两种方法。 法一:    用C#的FolderNameEditor类的子类FolderBrowser类来实现获取浏览文件夹对话框的功能。下面来看看具体是怎么实现的。  首先新建一个winform的项目,再新建一个类文件(File->AddNewItem->Class)。 因为Fo...

(转)C#调用C函数(DLL)传递参数问题

备忘: 1.C函数参数为字符串char*。如果是入参,对应C#中string或StringBuilder;如果是出参对应C#中StringBuider; 2.C函数参数为结构体指针,需在C#中对应定义结构体。如果是入参,C#中可为myfunction(MyStruct mystruct)或myfunction(ref MyStruct mystruct);...

C#: static关键字的作用(转)

C#: static关键字的作用  static意思是静态,可以修饰类、字段、属性、方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数: private void s() {...