C#3.0语法简介

本文详细介绍了C# 3.0版本中引入的多种新特性,包括简化属性声明、隐式类型化局部变量、数组初始化的简化语法、匿名类型、对象初始化器、集合初始化器以及扩展方法等,旨在帮助读者快速掌握这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值