• Visual Studio 2008新特性【转】


    1、自动属性。

    2、初始化器。

    3、匿名类型。

    4、扩展方法。

    5 、Lambda表达式。

    6、简单的Linq。


    一、自动属性。

             先看一个framework 2.0的里属性:
     1         int m_nID;
     2        string m_strSex;
     3        string m_strName;
     4        int m_nAge;
     5
     6        public int ID
     7        {
     8            get
     9            {
    10                return m_nID;
    11            }

    12
    13            set
    14            {
    15                m_nID = value;
    16            }

    17        }

    18
    19        public string Sex
    20        {
    21            get
    22            {
    23                return m_strSex;
    24            }

    25
    26            set
    27            {
    28                m_strSex = value;
    29            }

    30        }

    31
    32        public string Name
    33        {
    34            get
    35            {
    36                return m_strName;
    37            }

    38
    39            set
    40            {
    41                m_strName = value;
    42            }

    43        }

    在回头看看framework 3.5里的属性:

    1        public int ID getset; }//也可给set加修饰符如:public int ID{get;private set;}
    2        public string Sex getset; }
    3        public string Name getset; }
    4        public int Age getset; }

    比较一下两段代码段,是不是简明多了。你是不是开始兴趣了。。。。。呵呵

    2、初始化器。
          初始化器从字面意思就能看出来它是初始化对象用的。。。。。

    先把上面的属性封装到名为Student类中。现在你就可以这样的去给属性给值啦。注如果刚刚在写属性时间给它加上了public int ID{get; private set ;},在这里初始化肯定会报错的啦,应该原因SB都知道吧。以前我们在C#2.0中可能要写在构造函数中才能这样给值。

    framework 2.0

     public Student(int id,string name)
     {
          id
    =this.id;
          name 
    = this.name;
     }

    framework 3.5

    Student stu = new Student { ID = 1, Name = "Jely", Sex = "未知", Age = 23 };

    初始化集合
    framework 2.0
                List<Student> listStu = new List<Student>();
                listStu.Add(
    new Student { ID = 1, Name = "Jely", Sex = "未知", Age = 23 });
                listStu.Add(
    new Student { ID = 2, Name = "Jim", Sex = "未知", Age = 24 });
                listStu.Add(
    new Student { ID = 3, Name = "Petter", Sex = "未知", Age = 25 });
                
    foreach (Student item in listStu)
                {
                    Console.Write(
    "ID:" + item.ID + "\nName:" + item.Name+"\n");
                }

    framework 3.5
                List<Student> listStu = new List<Student>
                {
                    
    new Student { ID = 1, Name = "Jely", Sex = "未知", Age = 23 },
                    
    new Student { ID = 2, Name = "Jim", Sex = "未知", Age = 24 },
                    
    new Student { ID = 3, Name = "Petter", Sex = "未知", Age = 25 },
                };
                
    foreach (var item in listStu) //var和javascript中一样的用法,称为匿名类型
                {
                    Console.Write(
    "ID:" + item.ID + "\nName:" + item.Name + "\n");
                }

    3、匿名类型。

    实其这个东西我们自一开始在javascript中就以经用过了,只是MS现在给它取了个名字罢了,它就是Var,
    大家看到这个不是像看到亲娘啊,呵呵,开玩笑的啦!像VB中的Dim也跟它差不多吧
    var i=1;
    var name
    ="Jely"
    这样的声明变量,可以称作为匿名类型,在编辑时,它会根据变量值自动识别此变量的数据类型。
    像上面的
    foreach (var item in listStu) //var和javascript中一样的用法,称为匿名类型
                {
                    Console.Write(
    "ID:" + item.ID + "\nName:" + item.Name + "\n");
                }

    4、扩展方法。

    扩展方法指给X一个对象增加一个方法。

    即然是对象增加一个方法,那么定义一个方法先。。。
    public static class ExternMothod
        {
            
    #region 扩展方法
            
    /// <summary>
            
    /// 判断是否是偶数
            
    /// </summary>
            
    /// <param name="num"></param>
            
    /// <returns>是则返回true,不是则返回false</returns>
            public static bool IsEven(this int num)
            {
               
    bool flag=false;
                
    if(num % 2==0)
                {
                    flag
    =true;
                }
                
    return flag;
            }
            
    #endregion
        }
    调用:
    var i=1;
    Console.write(i.IsEven)
    在没有定义IsEven这个方法之前,变量i是没有的。就像每个对象都有一个.ToString()方法是一样的原理。

    5、Lambda表达式
    Lambda表达式其实在C#2.0中是用委托来实现的,在C#3.5中就很简单了。。。
       List<Student> listStu = new List<Student>
                {
                    
    new Student { ID = 1, Name = "Jely", Sex = "未知", Age = 23 },
                    
    new Student { ID = 2, Name = "Jim", Sex = "未知", Age = 24 },
                    
    new Student { ID = 3, Name = "Petter", Sex = "未知", Age = 25 },
                };
                IEnumerable
    <Student> result = listStu.Where(s => s.Age == 23);
                Double a 
    = listStu.Average(s => s.Age);//求平均数
                int sum=listStu.Sum(s => s.Age);//求和
                
                
    //遍历输入所过滤的结果
                foreach (var item in result)
                {
                    Console.Write(
    "\nName:"+item.Name+"   Average: "+a.ToString()+"  SumAge:"+sum);
                }

    6、Linq
    我个人理解Linq就是.NET中的ORM,有点像Hibneter。MS把Linq作为framework 3.x的重点对象。上面的所有一切其实都是为Linq做准备的。它可以在.NET中像SQL一样操作数据。但写法不同于SQL。

    下面我们来看一段代码吧
                List<Student> listStu = new List<Student>
                {
                    
    new Student { ID = 1, Name = "Jely", Sex = "未知", Age = 23 },
                    
    new Student { ID = 2, Name = "Jim", Sex = "未知", Age = 24 },
                    
    new Student { ID = 3, Name = "Petter", Sex = "未知", Age = 25 },
                };
                
    //select * from Student where Age=25
                IEnumerable<Student> result = from s in listStu where s.Age == 25 select s;

                
    //select * from Student Order by Age DESC
                IEnumerable<Student> result1 = from s1 in listStu orderby s1.Age descending select s1;
                
    foreach (var item in result1)
                {
                    Console.Write(
    "\nName:"+item.Name);
                }
    //select * from Student where Age=25
    IEnumerable<Student> result = from s in listStu where s.Age == 25 select s;

    //select * from Student Order by Age DESC
    IEnumerable<Student> result1 = from s1 in listStu orderby s1.Age descending select s1;
    上面这两句子就是Linq的用法了。是不是和SQL很像。只是把select 放到最后,我们习惯就好了。
    Linq有跟SQL一样强大的查询功能。它也有join等一系列的操作。
  • 相关阅读:
    MyEclipse 2015 Stable 2.0破解方法
    GeoGlobe Server运维
    GeoGlobe Server运维
    Silverlight用户无法注册之MySql.Data.dll不一致
    Photoshop影像匀色技术
    GeoGlobe Server使用问题收集
    Windows Server 2008 R2中无法使用360免费Wifi的解决方案
    吉奥平台软件安装经验分享
    U盘中毒后变为快捷方式的解决方法
    主机访问虚拟机中新建的网站
  • 原文地址:https://www.cnblogs.com/cxd4321/p/1033973.html
Copyright © 2020-2023  润新知