网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C#教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.C#学习笔记(4).
.数据结构与算法(C#实现)系列---树.
.C#基础—关于类 .
.C#中的“装箱”(boxing)与“拆.
.数据结构与算法(C#实现)系列---N.
.C#,深入浅出全接触(五).
.C#中方法参数的四种类型.
.C#的多线程机制初探(2).
.关于C#的问答.
.C#正则表达式应用范例.
.C#的多线程机制初探(4).
.数据结构与算法(C#实现)系列---广.
.数据结构与算法(C#实现)系列---演.
.C# 2.0 套接字编程实例初探.
.C# 2.0与泛型.
.基于C#的接口基础教程之七.
.C#的四个基本技巧 .
.C#,深入浅出全接触(四).
.请教如何改善C#中socket通信机客.
.基于C#的接口基础教程之六.

C# 3.0新特性初步研究 Part4:使用集合类型初始化器

发表日期:2006-6-11


集合类型初始化器(Collection Initializers)

想看一段“奇怪”的代码:
 1class Program
 2    {
 3        static void Main(string[] args)
 4        {
 5            var a = new Point { x = 10, y = 13 };
 6            var b = new Point { x = 33, y = 66 };
 7
 8            var r1 = new Rectangle { p1 = a, p2 = b };
 9            Console.WriteLine("r1: p1 = {0},{1}, p2 = {2},{3}",
10                    r1.p1.x, r1.p1.y, r1.p2.x, r1.p2.y);
11
12            var c = new Point { x = 13, y = 17 };
13            var r2 = new Rectangle { p2 = c };
14
15            Console.WriteLine("r2: p1 == {0}, p2 = {1}, {2}",
16                        r2.p1, r2.p2.x, r2.p2.y);
17        }          
18    }
19
20    public class Point
21    {
22        public int x, y;
23    }
24    public class Rectangle
25    {
26        public Point p1, p2;
27    }
注意到集合类型的初始化语法了吗?直截了当!
这也是C# 3.0语法规范中的一个新特性。

也许下面的例子更能说明问题:
这是我们以前的写法:
 1class Program
 2    {
 3        private static List<string> keywords = new List<string>();
 4
 5        public static void InitKeywords()
 6        {
 7            keywords.Add("while");
 8            keywords.Add("for");
 9            keywords.Add("break");
10            keywords.Add("switch");
11            keywords.Add("new");
12            keywords.Add("if");
13            keywords.Add("else");
14        }
15
16        public static bool IsKeyword(string s)
17        {
18            return keywords.Contains(s);
19        }
20        static void Main(string[] args)
21        {
22            InitKeywords();
23            string[] toTest = { "some", "identifiers", "for", "testing" };
24
25            foreach (string s in toTest)
26                if (IsKeyword(s)) Console.WriteLine("'{0}' is a keyword", s);
27        }
28    }
这是我们在C# 3.0中的写法:
 1class Program
 2    {
 3        private static List<string> keywords = new List<string> {
 4                            "while", "for", "break", "switch", "new", "if", "else"
 5                            };
 6
 7        public static bool IsKeyword(string s)
 8        {
 9            return keywords.Contains(s);
10        }
11
12        static void Main(string[] args)
13        {
14            string[] toTest = { "some", "identifiers", "for", "testing" };
15
16            foreach (string s in toTest)
17                if (IsKeyword(s)) Console.WriteLine("'{0}' is a keyword", s);
18        }
19    }是不是变得像枚举类型的初始化了?
个人觉得这对提高代码的阅读质量是很有帮助的,
否则一堆Add()看上去不简洁,感觉很啰嗦。

http://zc1984.cnblogs.com/archive/2006/06/10/422705.html

上一篇:C# 3.0新特性初步研究 Part3:使用拉姆达表达式 人气:11015
下一篇:C# 3.0新特性初步研究 Part5:匿名类型 人气:10268
浏览全部C# 3.0的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐