《圣殿祭司的ASP.NET4.0专家技术手册》----2-5 命名参数与可选变量的运用

简介: 首先介绍传统C#方法定义参数与自变量赋值,进一步对比新的命名参数与选择性自变量的运用。

本节书摘来自异步社区《圣殿祭司的ASP.NET4.0专家技术手册》一书中的第2章,第5节,作者: 奚江华,译者: 武海军 , 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2-5 命名参数与可选变量的运用

圣殿祭司的ASP.NET4.0专家技术手册
首先介绍传统C#方法定义参数与自变量赋值,进一步对比新的命名参数与选择性自变量的运用。

传统C#方法的参数与变量。
若C#的方法有声明参数(Parameter),则在调用方法时,必须指定自变量(Argument),且自变量还必须按照顺序,且不能省略任何的自变量。

程序:Parameters.aspx 参数与自变量的区别


684e8600656710e174fff2e453757ba0ee888fdb

程序说明

参数与自变量的区别在于,方法本身定义的叫参数,从外部调用方法必须赋值相关的“值”,这些值就叫自变量,参数好比是一个停车位,自变量就是一台汽车。详细请参考微软“参数和自变量之间的差异”解释。

msdn.microsoft.com/zh-tw/library/9kewt1b3(VS.80).aspx

命名参数。
命名参数(Named Parameter)可通过参数名称指定自变量值,而不一定得按照参数顺序位置指定自变量,例如:

//命名参数-以下用命名参数方式传入(维持顺序)
PersonalInfo(LastName: "Cindy", Age: 28, PhoneNo: "0933152607", City: "Taoyuan");
//命名参数-以下用命名参数方式传入(不按顺序)
PersonalInfo(City: "Kaohsiung", PhoneNo: "0922105284", LastName: "Bob", Age: 35);
//显示个人信息
protected void PersonalInfo(string LastName, int Age = 1, string PhoneNo = 
  "xxxxxxxxxx", string City = "xxxxx")
{
    string msg=string.Format("* {0}-年龄:{1},电话:{2},城市:{3}<br/>", LastName, 
       Age,PhoneNo, City);
    Response.Write(msg);
}

选择性自变量。
选择性自变量可以在您调用方法时省略某些参数的自变量。而之所以能够省略的原因,并非凭空得来,在方法参数定义时,一定要事先赋值参数的默认值,这样计算机才知道默认值是什么。

``//选择性参数——只输入第一个位置自变量,其余省略,方法会使用选择性参数的默认值
PersonalInfo("David");``
位置自变量与命名参数混用的规则。
若调用方法时,同时使用位置自变量与命名参数,位置自变量永远必须在命名参数之前,否则便不合法,例如:

//位置自变量->命名参数,合法!
//以下前两个是位置自变量(按照顺序),后二个命名参数(不按顺序),合法
PersonalInfo("John", 22,  PhoneNo: "0935206854", City: "Taichung");
//命名参数->位置自变量,不合法!
//以下前3个是命名参数,第4个是位置自变量,
//PersonalInfo(Age: 35, PhoneNo: "0933152607", LastName: "Bob", "Taoyuan");

范例2-1 命名参数与可选自变量的运用
在此通过命名参数与选择性自变量的赋值,显示员工通信簿数据,请参考NamedOptional. aspx程序:

14   protected void Page_Load(object sender, EventArgs e)
15   {
16   //1.位置自变量-以下按照参数定义的顺序位置传入自变量
17   PersonalInfo("Mary", 25, "0936102789", "Taipei");
18   //2.命名参数-以下用命名参数方式传入(维持顺序)
19   PersonalInfo(LastName: "Cindy", Age: 28, PhoneNo: "0933152607", City: 
    "Taoyuan");
20       //3.命名参数-以下用命名参数方式传入(不按顺序)
21       PersonalInfo(City: "Kaohsiung", PhoneNo: "0922105284", LastName: "Bob",
         Age: 35);
22
23   //4.位置自变量->命名参数,合法!
24   //以下前两个是位置自变量(按照顺序),后两个命名参数(不按顺序),合法
25   PersonalInfo("John", 22,  PhoneNo: "0935206854", City: "Taichung");
26   //5.命名参数->位置自变量,不合法!
27   //以下前3个是命名参数,第4个是位置自变量,
28   //PersonalInfo(Age: 35, PhoneNo: "0933152607", LastName: "Bob", 
           "Taoyuan");
29
30   //6.选择性参数-只输入第一个位置自变量,其余省略,方法会使用选择性参数的默认值
31   PersonalInfo("David");
32}
33
34   //显示个人信息
35   protected void PersonalInfo(string LastName, int Age = 1, string PhoneNo =  
  "xxxxxxxxxx", string City = "xxxxx")
36   {
37   string msg=string.Format("* {0}-年龄:{1},电话:{2},城市:{3}<br/>",
     LastName, Age, PhoneNo, City);
38   Response.Write(msg);
39}

程序说明

每个命名参数的赋值,以参数名称开头,中间以冒号与自变量值作分隔,且不限制自变量赋值的序顺。

当调用方法时若未指定自变量,计算机就会知道是选择性自变量,会以默认值显示,例如,Age年龄未指定,默认值就会是1,电话自变量未指定,就会显示××××××××××,如图2-3所示。


6b2005bb6aae71fc5dcf73de60d4f74dfef3f5e7

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
Go 分布式数据库 计算机视觉
.Net脱壳工具 de4dot参数说明/简易教程
原文:.Net脱壳工具 de4dot参数说明/简易教程 de4dot  /? 帮助原文  使用方法 de4dot "d:\xx.exe" -p xc -p xc 指定壳类型 , 这里是xc,表示Xenocode壳.
4012 0
|
2月前
|
机器学习/深度学习 存储 编解码
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
42 0
|
4月前
|
程序员 数据库
VB.NET—Bug调试(参数话查询、附近语法错误)
VB.NET—Bug调试(参数话查询、附近语法错误)
25 0
|
6月前
|
前端开发 JavaScript
.net core 前端传递参数有值 后端接收到的数据却是null
1、问题分析 在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况 2、解决办法 前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比对 小技巧: ① 直接打印调用接口的传参值的数据类型,例如 console.log(type of this.form.name) --string console.log(type of this.form.age) --number 打印的数据类型与后端接口的参数类比对,查出不对应的类型 ② 关于非必填的值,默认传值可能出现空字符串(' ')、NaN值(Not a Number
98 0
|
9月前
|
前端开发
解决.NET Core Ajax请求后台传送参数过大请求失败问题
解决.NET Core Ajax请求后台传送参数过大请求失败问题
|
前端开发
.NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
.NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
371 0
.NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
.NET中将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
.NET中将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
227 0
.Net ADO拼接带参数的SQL语句
.Net ADO拼接带参数的SQL语句
120 0
|
开发框架 前端开发 JavaScript
ASP.NET 母版页,内容页之间如何传参数
绪论:本文介绍如何使用.net 母版页(.master)和内容页(.aspx)相互传参数
73 0
ASP.NET 母版页,内容页之间如何传参数
|
开发框架 .NET
面试官:如何在ASP.NET Core里给Action传递参数
在ASP.NET Core 中给Action传参是在面试和实际开发中必定会遇到和使用到的,那么下面我们就来说说如何给Action传参。常用的传参方式有四种: 1. url 方式; 2. querystring 方式; 3. request header 方式; 4. request body 方式。
237 0