- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C方法解析.doc
C# 方法解析
“方法”是包含一系列语句的代码块。 程序通过“调用”方法并指定所需的任何方法参数来执行语句。 在 C# 中,每个执行指令 都是在方法的上下文中执行的。
最近在写一个反射调用时,需要通过反射来调用方法。想写一个通用的方法调用的通用函数,这就需要将方法各种形式考虑在内。
在这里只是对C#4.0的方法进行一次简单总结,也希望给大家一个清晰的认识。
方法模板:可访问性 ?修饰符 ?返回值 ?方法名(参数列表){...}
可访问性: private protected internal public?
方法修饰符: static abstract virtual/override 等?
返回值: 某种类型或无返回值?
方法名:methodname?
参数列表:这个有多种情况
C#4.0中的方法,除了常见的方法,还有几种比较特殊的方法。
(1)属性,其实属性的get和set生成了两个单独方法br
(2)索引,我们平时用的很多,this[code]等,其实在CLR中,也生成了get_Item 与set_Item两个方法。我们获取索引时,就可以用这个两个方法名 + 参数列表,获得相应的索引。br
(3)泛型方法,如: T CreateInstanceT(){...}
但是这些都可以通过一定的 规律转为通常方法来处理。但在写反射的时候一定要分析到这类问题。
因为方法签名的其他部分比较简单,这里只是针对方法的参数列表进行展开讨论。
参数有多种:普通的也不赘述,如:void Do(string Msg){}; ?这里只是讲述几种特殊的参数。
1、ref/out
如果不使用ref/out,则传递的只是这些值的Copy.传递的是引用类型的地址值,则将传递引用类型的地址值的一个Copy,实际上就是新开一 个不同的内存变量来存储这个地址值的拷贝。而是用ref/out,传递的还是引用类型的地址值,但是传递的是原来的哪个引用类型的地址值。
ref
ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
例子:
/// summary
/// ref测试
/// /summary
/// param name=count/param
static void RefTest(ref int count)
{
count += 10;
Console.WriteLine(In method count: {0},count);
}
调用结果:
//ref
int count = 10;
Console.WriteLine(Before calling method the count is : {0}, count);//输出:After calling method the count is : 10
RefTest(ref count);
Console.WriteLine(After calling method the count is : {0}, count);//输出:After calling method the count is : 20
传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。
out
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。例如:
例子:
/// summary
/// out测试
/// /summary
/// param name=count/param
static void OutTest(out int count)
{
//count += 10;//这样写,编译报错:使用了未赋值的参数count
count = 10;
Console.WriteLine(In method count: {0}, count);
}
调用:
//out
int cou
您可能关注的文档
最近下载
- 《九年级学生数学典型错题的成因及对策研究》实施方案.docx
- 建设工程施工专业分包合同示范文本GF-2003-0213.pdf VIP
- 变废为宝演绎精彩——初中数学易错题归因之我见 .pdf VIP
- 个人纪律作风自查报告.docx VIP
- 错题归因法解析(中小学生教育).pptx VIP
- 城市地铁车辆车钩缓冲装置行业技术规范 - 中国城市轨道交通协会.pdf VIP
- 537初中数学学生的典型错题成因及防范措施的研究的结题报告.pptx VIP
- CNCA-CURC-07:2019 城市轨道交通装备产品认证实施规则 特定要求—城市轨道交通车辆车钩缓冲装置.pdf VIP
- 校园流感防控技术操作指南(简易版、完整版)说明书.pdf
- LD350变频器说明书V2.0.pdf VIP
原创力文档


文档评论(0)