C#新功能--命名参数与可选参数
C#新功能--命名参数与可选参数
可能是篇幅太短了,又被打入冷宫了.先重发一篇加上可选参数.本来不想加这个呢,因为可选参数可能大家用的会多点.其实这
两个在VB中早就有了,在C#中,只有在.net4以后才能使用.看到这个比较兴奋,我想大家也有好多人不知道,所以就强烈的想与大家
分享一下.
一、命名参数
命名参数会潜在的改变编写代码的方式.这个新功能能使代码更容易阅读和理解.
例如,看一下System.IO名称空间中的File.Copy()方法,它一般构建为
File.Copy(@"C:\mytestFile.txt",@"C:\myOtherFile.txt",true);
在这行代码中,这个简单的方法使用3个参数,但实际传递给Copy()方法的是什么内容?除非
知道这个方法的前前后后,否则 仅看一眼该方法,很难判断出该方法会执行何种操作.而通过命名
参数,就可以在提供参数值之前使用代码中的参数名,如下所示:
File.Copy(sourceFileName: @"C:\mytestFile.txt",
destFileName: @"C:\myOtherFile.txt",
overwrite:true);
现在通过命名参数,就很容易阅读和理解这行代码将执行的操作.使用命名参数对最终的编译
没有影响,命名参数仅用在应用程序的编码中.
二、可选参数
可选参数允许为方法的一些参数提供默认值,并允许使用者重载类型,因此,即使只有一个方法,也能处理所有变体
public void test(string a, string b, int c, bool d=true,bool e=false)
{
}
调用:
public void invoke()
{
test("li", "dd",7);
test("li", "dd", 7,false);
test("li", "dd", 7, true,false);
}
这里也可以用到上述的命名参数:
test("li", "dd", 7, e:true);
这样d参数依然可以使用默认值,如果没有命名参数,想给e赋值,必须还要给d赋值.在使用可选参数的过程中,由于命名参数的出现,更提供了许多方便.
C#新功能--命名参数与可选参数的更多相关文章
- C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数
方法的参数有六种,分别是值参数.引用参数.输出参数.参数数组.命名参数.可选参数. 值参数 值参数是方法的默认类型,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作: 在栈中 ...
- 有关 C# 命名参数和可选参数
有关 C# 命名参数和可选参数 #1.命名参数: 所谓“命名参数 ( Named Arguments )”,是指方法中定义了一些“有名字”的参数. 给方法参数命名之后,在调用方法时就可以直接根据参数名 ...
- .net 反射访问私有变量和私有方法 如何创建C# Closure ? C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密 C#中的foreach和yield 数组为什么可以使用linq查询 C#中的 具名参数 和 可选参数 显示实现接口 异步CTP(Async CTP)为什么那样工作? C#多线程基础,适合新手了解 C#加快Bitmap的访问速度 C#实现对图片文件的压
以下为本次实践代码: using System; using System.Collections.Generic; using System.ComponentModel; using System ...
- .NET框架- in ,out, ref , paras使用的代码总结 C#中in,out,ref的作用 C#需知--长度可变参数--Params C#中的 具名参数 和 可选参数 DEMO
C#.net 提供的4个关键字,in,out,ref,paras开发中会经常用到,那么它们如何使用呢? 又有什么区别? 1 in in只用在委托和接口中: 例子: 1 2 3 4 5 6 7 8 9 ...
- C#中的 具名参数 和 可选参数
具名参数 和 可选参数 是 C# framework 4.0 出来的新特性. 一. 常规方法定义及调用 public void Demo1(string x, int y) { //do someth ...
- C#新功能--命名参数
命名参数会潜在的改变编写代码的方式.这个新功能能使代码更容易阅读和理解. 例如,看一下System.IO名称空间中的File.Copy()方法,它一般构建为 File.Copy(@"C:\m ...
- 【转】C#具名参数和可选参数
源地址:https://www.cnblogs.com/similar/p/5006705.html 另:可选参数的一个陷阱 参考:https://www.cnblogs.com/still-wind ...
- 命名参数和可选参数在.NET中的使用
原文发布时间为:2011-04-25 -- 来源于本人的百度文章 [由搬家工具导入] Named and Optional Arguments class NamedExample{staticvoi ...
- C# 4.0 新特性dynamic、可选参数、命名参数等
1.dynamic ExpandoObject熟悉js的朋友都知道js可以这么写 : 1 var t = new Object(); 2 t.Abc = ‘something’; 3 t.Valu ...
随机推荐
- Delta3D 2.8版本号 预习
http://blog.csdn.net/zhuyingqingfen/article/details/38581453 看到官网今天的更新.发现即将公布的delta3d 2.8 版本号 做了非常大的 ...
- Model Validation in Asp.net MVC
原文:Model Validation in Asp.net MVC 本文用于记录Pro ASP.NET MVC 3 Framework中阐述的数据验证的方式. 先说服务器端的吧.最简单的一种方式自然 ...
- dom01
事件冒泡:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档). 事件捕获:即不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件. ...
- linux下crontab的使用实现
1 crontab实现定时任务 1.1服务状态 /sbin/service crond status 查看定时任务的服务是否启动 参数:start 启动服务 Stop 停止服务 R ...
- DELL iDRAC 远程虚拟机报错:虚拟介质分离或所选虚拟磁盘驱动器的虚拟介质重定向已由另一用户使用
原因很简单,那就是虚拟介质的映射功能,只能被使用一次. 推荐做法: 1.由于通过远程,在Lifecycle Controller里DeployOS安装系统,需要在虚拟介质里映射ISO,因此映射功能要留 ...
- 新手可以学习cocos2dx 3.0 组态(两)
这主要是关于cocos3.0 组态,鉴于互联网已经有很多这样的文章.所以我简单谈一下: 1.python2.7 因为cocos目新建是用python脚本做的,至于为什么不用python3.x 那么请 ...
- SQLServer中处理每天四亿三千万记录
我是如何在SQLServer中处理每天四亿三千万记录的 首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地 ...
- ajax的post请求
get和post是http请求方法最主要的两种方式. post: 来个例子test.html <!doctype html> <html lang="en"> ...
- MVC5搜索/查询 流程功能的实现
接着上次的篇幅,我们这篇手动来写一个查询的流程代码! 搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去Controller(控制器)里去搞一个搜索 ...
- Windows上memcached的使用
Memcached是什么?Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度. Memcached能缓存什 ...