首页 >> 文档 >> C#专题

C#3.0语法简介

发布日期:2008-05-10最近更新:2008-05-10来源:BHCODE作者:
using System;
using System.Collections.Generic;
using System.Windows.Forms;

static class Program
{
    [STAThread]
    static void Main()
    {
        TestCSharp3 testCSharp = new TestCSharp3();
        testCSharp.Do();
    }
}

public class TestCSharp3
{
    public TestCSharp3()
    {
    }

    // 新特性1:prop直接出来的是简单属性,无需另外多写一个私有字段
    // 关键代码:{ get; set; }
    public int Count { get; set; }

    // 同上,propg,利用private修饰set,仍然可以创建外部只读的属性
    public int LastNumber { get; private set; }

    public void Do()
    {
        MessageBox.Show(LastNumber.ToString());

        // 新特性2:var隐式类型化本地变量,但必须赋初值,编译器通过初值推导出变量类型
        var num = 10;  //var 相当与 int
        var strFirstBookName = "《当》";  //var 相当与 string
        var arrNums = new int[] { 1, 3, 4, 7 };
        foreach (var item in arrNums)
        {
            //item的类型为int
        }
        MessageBox.Show(strFirstBookName);

        ///新特性3:初始化数组的简写方式:new[]
        int[] arrNums2 = new[] { 1, 2, 43 };//当然也可以写成:var arrNums2 = new[] { 1, 2, 43 };

        ///新特性4:匿名类型
        var book1 = new { BookName = "《当》", BookNumber = 1, BookAuthor = "佚名" };
        MessageBox.Show(book1.BookName + book1.BookName + book1.BookNumber);

        ///新特性5:对象构造者(实例化时,构造函数后面跟大括号,可直接初始化对象属性)
        TestCSharp3 testCsharp3 = new TestCSharp3() { Count = 10, LastNumber = 9 };

        ///新特性6:集合构造者特性。允许List<>等自定义集合像数组一样用大括号赋初值
        List<int> listNums = new List<int>() { 1, 3, 54, 6, 78 };
        MessageBox.Show(listNums.Count.ToString());
    }
}

static public class ExpandClass
{
    // 新特性7:扩展方法。可在类的外部扩展已有的类,如下是扩展string类
    // !!!此特性在.NET 2.0下不可用!!!
    //public static bool IsAllNumber(this string str)
    //{
    //    foreach (var ch in str)
    //    {
    //        if (!char.IsNumber(ch))
    //        {
    //            return false;
    //        }
    //    }
    //    return true;
    //}
    //public void Do2()
    //{
    //    string str = "ABC";
    //    bool isNum = str.IsAllNumber();
    //    MessageBox.Show(isNum.ToString());
    //}

    //其他新特性如:Lambda表达式、LINQ查询等,请自行查找资料学习,这里就不讲了
    //相关链接:http://baike.baidu.com/view/1406676.htm
}
本周推荐
MORE
热点关注
MORE