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

    xiaoxiao2024-06-06  114

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

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

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

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

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

    程序说明

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

    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所示。

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

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)