.net程序员的盲点(一)

有三个关键字-ref,out ,params,虽然本人不喜欢这三个关键字,因为它 们疑似破坏面向对象特性。但是既然m$把融入在c#体系中,那么我们就来认识一 下参数修饰符ref,out ,params吧,还有它们的区别。

NO.1 params

一个可以让方法(函数)的拥有可变参数的关键字。

原则 :在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中 只允许一个 params 关键字。

示例(拷贝到vs2005中即可用,下面不再 说明)

public partial class Form1 : Form
...{
public static void UseParams(params int[] list)
...{
string temp = "";
for (int i = 0; i < list.Length; i++)
temp = temp +" " +list[i].ToString();
MessageBox.Show(temp);
}
public static void UseParams2 (params object[] list)
...{
string temp = "";
for (int i = 0; i < list.Length; i++)
temp = temp + " " + list[i].ToString();
MessageBox.Show(temp);
}
public Form1()
...{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
...{
UseParams(1, 2, 3); //看参数是3个
UseParams(1, 2); //看参数是2 个,可变吧
UseParams2(1, 'a', "test");
int[] myarray = new int[3] ...{ 10, 11, 12 };
UseParams (myarray); //看也可以是容器类,可变吧:)
}
}

NO.2 out

这是一个引用传递L.

原则一:当一个方 法(函数)在使用out作为参数时,在方法中(函数)对out参数所做的任何更改 都将反映在该变量中。

原则二:当希望方法返回多个值时,声明 out 方 法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个 以上的 out 参数。

原则三:若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

原则四:不 必初始化作为 out 参数传递的变量,因为out 参数在进入方法(函数)时后清 空自己,使自己变成一个干净的参数,也因为这个原因必须在方法返回之前为 out 参数赋值(只有地址没有值的参数是不能被。net接受的)。

原则五 :属性不是变量,不能作为 out 参数传递。

时间: 2024-10-30 22:37:20

.net程序员的盲点(一)的相关文章

.net程序员的盲点(二)

两个"属性"引起的歧异-property和attribute的区别,这虽然 没有"一个馒头引发的血案"那么严重,但是也足以成为.net程序 员的技术盲点之二. 对于property和attribute这两个名词都叫"属性 "的问题,来源于国内it书籍翻译界的疏忽. 其实它们来源于两个 不同的领域,attribute属于OOA/OOD的概念,而property属于编程语言中的概念 .下面我们来说明它们的异同. Attribute Attribute

程序员的成长阶梯和级别定义(转)

近月,公司召开了今年的「武林大会」-- 年度晋升评比.如今大会落幕,尘埃落定,我呢既作为评委又作为选手参加了这次大会,有些感想在这里简单写下. 随着公司发展壮大,研发人员数量也日趋庞大(6k+),每个人如何成长,发展,修炼,打怪升级不仅是自身不可回避的命题,也是公司的一个重要命题.在互联网这行以 BAT 为首逐步发展出了自身成熟并成型的技术人员晋升体系和级别定义.例如:B 厂从 T1 到 T10,A 厂从 P1 到 P11,T 厂分四个大级别(T1 ~ T4)每个大级别内部再细分若干小级别.但不

编程世界经典秘籍:程序员的提问之道

本文节选于编程世界里非常经典的一份文档,该文档首发于 2001 年,已经过多次迭代更新,详细描述了程序员应该如何在网上有礼貌地.合理地向别人提问以及如何解读答案,比如自己先做足功课:搜索.读文档.读代码等.以下中文版节选是由 ryanhanwu 基于原文 3.10 版的最新翻译,全文较长,有兴趣的可跳转查看完整内容. 简介 在黑客的世界里,当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式.本指南将教你如何正确的提问以获得你满意的答案. 不只是黑客,现在开放源代码(

再次写给我们这些浮躁的程序员

2010年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条. 多做项目,多思考 不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户. 当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作

Code Review 程序员的寄望与哀伤

一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测试中很难被发现.毕竟想要在测试环境完美的复制生产环境的所有情况也是不太可能的,导致出现了疏漏.对于这类情况,我们在想是否可以通过在线下做一些 Code Review(代码审查)假想线上的环境差异,通过在头脑中的假想上线运行来获得一些概念验证,这样是否能够减少上线后出现 bug 的概率呢? 感性 Co

程序员如何提升自己的价值

不知道你有没有想过什么样的特质能够成就程序员的伟大?什么样的特质对程序员就职的公司最有价值? 尽管可以列举出很多很多条,但是我相信这一条绝对是雇主最为看重的,并且拥有该点特质能够提升你作为一名软件开发人员的价值. 那么,这条到底是什么特质呢? 如果你也是给别人打工的,那么有一件事是你必须铭记于心的.你工作的主要目的是为你的雇主创造价值. 虽然听上去很简单,但却是大多数开发人员的盲点.回想一下,你之所以发布新框架,是不是经常是因为这是一款新颖的,性感的JavaScript MVC框架?你挑选任务的

很认真的聊一聊程序员的自我修养

今天谈一谈,程序员提高自我修养是为了什么?     程序写的好有人崇拜,有妹子喜欢?还是到博客.论坛.社区发表文章进行分享获得成就?我想这是少数人的追求,也是更高的追求,在这之前 我认为,在中国,程序员提高自我修养的目的,是为了 1.更好的融入工作,减少困难,增加成就 2.稳步的提升能力,提高收入,达成财务自由 2.站在更高的层面看待自己的学习和工作,树立更加适合的人生观价值观,家庭幸福,生活愉快 说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入   说了这么多废话,进入正题 何为程

为什么程序员总被认为是屌丝群体?

本文纯属闲时娱乐,请勿当真,请勿较真. 1. 程序员都很穷吗? 其实,以我的经验来看,相同学历的毕业生的工资里面,程序员的工资绝对前三.但是可惜的是,程序员的主要发展地集中在京沪杭和广州一带,这一带本来就是有钱人的集中地,而且高房价高消费,让程序员那不算低的工资显得微不足道,只能望楼兴叹. 举个例子,比如你在北京开10w的车,那绝对是底层人民啊.你要是在一个二线城市开10w的车,那已经可以说混的不错了.如果是在小县城开10w的车,那你就算是有钱人啊. 解决方案:一线城市打拼,二线城市发展.当然,

JAVA程序员面试32问 选择自 liujun999999 的 Blog (本人做收藏)

程序|程序员 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统). 第四,&和&&的区别. 第五,HashMap和Hashtable的区别. 第六,Collection 和 Collec