//作者:杨卫国
//时间:2008年2月21日
//说明:C#语法新特型示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace C3
{
    class Program
    {
        //新特性1:简单属性,无需另外多写一个私有字段,比较适合于定义实体类
        public class GsunisMan
        {
            //传统写法,属性必须有一个私有字段
            private int age;
            public int Age
            {
                get
                {
                    return age;
                }
                set
                {
                    age = value;
                }
            }

            //3.5写法,直接定义即可;
            public string Name { get; set; }
            public Int64 ID { get; private set; }
        }

        static void Main(string[] args)
        {
            //新特性2:隐式类型,隐式类型化本地变量,但必须赋初值,编译器通过初值推导出变量类型
            var i = 10; //相当于 int i=10;
            var s = "甘肃紫光软件研发部"; //s为String类型; 
            var arrNums = new int[] { 3,6,9 };


            //新特性3:初始化数组的简写方式:new[],可以回忆一下1.1、2.0怎么定义?
            int[] arrNums2 = new[] { 1, 2, 43 };//当然也可以写成:var arrNums2 = new[] { 1, 2, 43 };


            /**//**//**////新特性4:匿名类型,在2.0中有个匿名方法,很容易混淆
            var book1 = new { BookName = "《紫光人2007纪念版》", BookNumber = 150,BookPublisher = "甘肃紫光企划部" };
            MessageBox.Show(string.Format("书名:{0},数量:{1},出版:{2}" ,book1.BookName , book1.BookNumber , book1.BookPublisher));

            /**//**//**////新特性5:对象构造者(实例化时,构造函数后面跟大括号,可直接初始化对象属性),在1.1、2.0中必须先定义,然后初始化
            GsunisMan aMan = new GsunisMan() {Name = "杨卫国", Age = 100 };
            MessageBox.Show(string.Format("编号:{0},姓名:{1},年龄:{2}", aMan.ID,aMan.Name,aMan.Age));

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

            //新特性7.2,请首先看看下面的新特性7.1;
            string str = "123";
            bool isNum = str.IsAllNumber();
            MessageBox.Show(isNum.ToString());

            //新特性8:Linq,作用就不多说了,用法太多,自己找资料看;
            //从一个集合中找出所有年龄大于55岁的人;
            List<GsunisMan> men=new List<GsunisMan>();            
            men.Add(new GsunisMan{Name="刘备",Age=65});
            men.Add(new GsunisMan { Name = "关羽", Age =60 });
            men.Add(new GsunisMan { Name = "张飞", Age = 50 });
            var man= from m in men where m.Age>55 select m; //使用Linq,前面几行在准备数据,感觉有些像Sql语句,呵呵
            MessageBox.Show(man.First<GsunisMan>().Name);     //在此仅显示第一个人姓名

            //新特性9:Lambda表达式"=>",一个简单的例子,用法太多,自己找资料看;
            int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
            int oddNumbers = numbers.Count(n => n % 2 == 1);    //找出奇数的个数
            MessageBox.Show(oddNumbers.ToString());
           
        }

       
    }
    static public class ExpandClass
    {
        //新特性7.1:扩展方法。可在类的外部扩展已有的类,如下是扩展string类,为String类增加一个IsAllNumber方法
        //!!!此特性在.NET 2.0下不可用!!!
        public static bool IsAllNumber(this string str)
        {
            foreach (var ch in str)
            {
                if (!char.IsNumber(ch))
                {
                    return false;
                }
            }
            return true;
        }
       
    }
   
}

转载于:https://www.cnblogs.com/craig/archive/2009/05/13/1455651.html

C# 3.0/3.5语法新特性示例汇总[转]相关推荐

  1. Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结

    Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结 1.1. C# 1.0-纯粹的面向对象 1.2. C# 2.0-泛型编程新概念 1.3. ...

  2. java 7.0 特性_JDK7.0语法新特性

    JDK7.0语法新特性 1,菱形语法(泛型实例化类型自动推断) List list = new ArrayList<>(); // <>这个真的很像菱形 2,在目前版本中,不可 ...

  3. c#3.0加入的一些新特性——泛型集合

    c#3.0加入的一些新特性 1.泛型集合 2.隐式类型 3.自动实现属性 3.匿名方法 4.扩展方法 5.Lambda表达式 1.泛型集合 在.NET2.0中没有泛型集合定义集合用ArrayList定 ...

  4. mysql+8.0+新特性_MySQL 8.0备受瞩目的新特性大放送!

    原标题:MySQL 8.0备受瞩目的新特性大放送! 作者介绍 杨奇龙,目前就职于有赞科技,负责数据库运维工作,熟悉MySQL性能优化.故障诊断.性能压测. MySQL于 2016-09-12正式发布8 ...

  5. C# 6.0语法新特性体验(二)

    之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性,现在随着Visual Studio 14 CTP3的发布,又陆续可以体验一些新的特性了,这里简单的介绍一下之前没 ...

  6. C#3.0语法新特性集合

    隐式类型局部变量 C#3.0提供了一个新的关键字var,使用该关键字,编译器会根据用于初始化局部变量的初始值推断出变量的数据类型. 示例代码: using System; using System.C ...

  7. Angular4.0.0正式发布,附新特性及升级指南

    作者|孙薇编辑|尾尾经历了6个RC版本之后,Angular项目组终于在今天发布了新版,即 正式版 Angular 4.0.0.新版的 Angular 有哪些值得关注的点,究竟带来了哪些新特性?如何升级 ...

  8. .NET Core 3.0 正式公布:新特性详细解读

    点击蓝字"dotNET匠人"关注我哟 加个"星标★",每日 7:15,好文必达! 作者丨Richard Lander 译者丨核子可乐 策划丨赵钰莹 近日,.NE ...

  9. 【JDK8语法新特性】:超全总结{lamda,stream,optional,新日期类API},JDK8对策略模式支持,可以直接贴代码运行测试。

    文章目录 Java8新特性 速度快 代码更少(增加了新的语法,lamda表达式)(主要) 强大的Stream API(主要) 便于并行 最大减少空指针异常(Optional API) 提供了线程安全的 ...

最新文章

  1. 软件开发环境-环境信息库
  2. 16S+功能预测也能发Sciences:尸体降解过程中的微生物组
  3. linux 脚本判断一个目录不存在
  4. 栈的应用就进匹配_笔记
  5. iOS-MVVM架构优化
  6. [Qt入门]QMainWindow创建
  7. 前端电子表数字字体_爬虫:如何优雅应对字体反爬
  8. 操作系统 cpu调度_CPU调度| 操作系统
  9. Java 泛型完全解读
  10. 随笔记:实现HTML页面局部滚动及自定义滚动条样式
  11. CCW:浪潮云+智能协同云平台获评“用户首选品牌”
  12. 花嫁之容氏浅浅最后怎么样了_花嫁之容氏浅浅小说
  13. marvin java_Java开源图像处理框架Marvin介绍
  14. weboffice控件接收html文件,WebOffice 文档控件API
  15. 如何用计算机设计班牌,班牌设计
  16. Postman--使用
  17. C语言+EasyX实现数字雨
  18. 无线路由登不上服务器怎么办,登录不了无线路由器的管理界面怎么办?
  19. cmd下使用命令切换目录
  20. Linux配置系统网络(动态)

热门文章

  1. float最大值_float.h库
  2. java 默认数据库创建路径_无法创建数据库路径文件:/ user / hive /仓库错误
  3. python入门必备10个坑_适合 Python 初学者的一些技巧和坑
  4. linux内核远程漏洞,CVE-2019-11815:Linux内核竞争条件漏洞导致远程代码执行
  5. java把图片写入excel_使用POI向excel中写入图片的java代码
  6. ryu和mysql实现控制_openflow的初步认识及RYU控制器实践
  7. IDEA配置NodeJS项目遇到问题及解决
  8. 数字图像处理:(5)非微分算子在数字图像处理中的应用
  9. Halcon与QT的联合编程(2)
  10. 和12岁小同志搞创客开发:如何驱动LED点阵模块?