vs2008学习之路

[1]新的C#语言特性:自动属性(Automatic Properties)
public class Person {
        public string FirstName {
            get; set;
        }
        public string LastName {
            get; set;
        }   
        public int Age {
            get; set;
        }
    }
可以通过上面的代码来代替之前的:
public class Person {

        private string _firstName;
        private string _lastName;
        private int _age;
       
        public string FirstName {

            get {
                return _firstName;
            }
            set {
                _firstName = value;
            }
        }

        public string LastName {

            get {
                return _lastName;
            }
            set {
                _lastName = value;
            }
        }       
       
        public int Age {

            get {
                return _age;
            }
            set {
                _age = value;
            }
        }
    }

新C#编译器通过一个叫“自动属性(automatic properties)”的

语言特性提供了一个优雅的方式来使得你的编码更加简洁,同时

还保持属性的灵活性。自动属性允许你避免手工声明一个私有成

员变量以及编写get/set逻辑,取而代之的是,编译器会自动为

你生成一个私有变量和默认的get/set 操作。
譬如,使用自动属性


public class Person {
        public string FirstName { get; set; }
        public string LastName { get;set; }  
        public int    Age       { get; set; }
    }
[2]C#语言的新特性:对象初始化器(Object Initializers)
以前申请对象,初始化对象需要这样:
Person person = new Person();
   person.FirstName = "Scott";
   person.LastName = "Guthrie";
   person.Age = 32;

而今只需要:
Person person = new Person { FirstName="Scott",

LastName="Guthrie", Age=32 };

同时不需要类提供带参数的构造函数.
再如类对象嵌套初始化:
Person person = new Person {
      FirstName = "Scott",
      LastName = "Guthrie"
      Age = 32,
      Address = new Address {
         Street = "One Microsoft Way",
         City = "Redmond",
         State = "WA",
         Zip = 98052
      }
   };

[3]C#语言的新特性:集合初始化器(Collection Initializers)
对象初始化器很棒,它极大地简化了把对象添加到集合的做法。

譬如:
List<Person> people = new List<Person>();
           
people.Add( new Person { FirstName = "Scott", LastName

= "Guthrie", Age = 32 } );
people.Add( new Person { FirstName = "Bill", LastName

= "Gates", Age = 50 } );
people.Add( new Person { FirstName = "Susanne",

LastName = "Guthrie", Age = 32 } );

[4]新C#语言特性:匿名类型
[5]利用var关键词,这个新关键词在声明局部变量时可用于替代

类型名。
除了使用var这个关键词替代内置的数据类型外,很明显地,你

也可以将它用于你定义的任何自定义类型。

[6]新C#语言特性:扩展方法
比如:
string email = Request.QueryString["email"];
if ( EmailValidator.IsValid(email) ) {
   DO();
}

而使用C#中的新“扩展方法”语言特性的话,则可以添加一个有

用的“IsValidEmailAddress()”方法到string类本身中去,该

方法返回当前字符串实例是否是个合法的字符串。然后我可以把

我的代码重写一下,使之更加干净,而且更具描述性,象这样:


string email = Request.QueryString["email"];
if ( email.IsValidEmailAddress() ) {
   DO();
}
我们是怎么把这个新的IsValidEmailAddress()方法添加到现有

的string类里去的呢?我们是通过定义一个静态的类型,带有我

们的“IsValidEmailAddress”这个静态的方法来实现的,象下

面这样:


public static class ScottGuExtensions
{
    public static bool IsValidEmailAddress(this string

s)
    {
        Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+

[\w-]{2,4}$");
        return regex.IsMatch(s);
    }
}
上面的静态方法在第一个类型是string的参数变量前有个“this

”关键词,这告诉编译器,这个特定的扩展方法应该添加到类型

为“string”的对象中去。然后在IsValidEmailAddress()方法

实现里,我可以访问调用该方法的实际string实例的所有公开属

性/方法/事件,取决于它是否是合法电子邮件地址来返回

true/false。
在我的代码里把这个特定的扩展方法的实现添加到string实例,

我只要使用标准的“using”语句来引入含有该扩展方法的实现

的命名空间:
using ScottGuExtensions;


利用扩展方法这个新特性来给个别类型添加方法给开发人员开辟

了许多有用的扩展性使用场景。但使得扩展方法非常强有力的是

,它们不仅能够应用到个别类型上,也能应用到.NET框架中任何

基类或接口上。这允许开发人员建立种种可用于整个.NET框架的

丰富的可组合的框架层扩展。

using System;
using System.Collection;

namespace YourNamespace{
   public static class TestClass{
      public static bool In(this object o,IEnumerable

c){
          foreach(object i in c){
             if(i.Equals(o))
                  return true;
          }
          return false;
       }
    }
}

注意上面我是如何声明扩展方法的第一个参数的:“this

object o”。这表明,这个扩展方法应该适用于继承于基类

System.Object的所有类型,这意味著我可以在.NET中的每个对

象上使用它。

上面这个“In”方法的实现允许我检查一个指定的对象是否包含

在作为方法参数传入的一个IEnumerable序列中。因为所有

的.NET集合和数组都实现了IEnumerable接口,现在我拥有了一

个有用的,描述性强的方法来检查一个任意的对象是否属于任何

.NET集合或数组。

在给类库中添加方法时,需要另外新建一个类用来建立方法.
方法中第一个参数为该方法的对象.第二参数以后的为方法自带

参数.

[7]在以往的CODING中,当使用自能提示时,发现此时也需要查看

该行代码的下面代码.而自能提示的不透明性给编码带来了麻烦.

如今VS2005中,当你在使用自能提示时,如果需要查看下面代码,

只需要按住CTRL键就可以使自能提示框透明50%.就可以清楚看到

下面是什么样的代码,以此来选择你所需要的方法或属性.

原文地址:https://www.cnblogs.com/di305449473/p/1236116.html