C#的一些基础知识

最近在看大学的一些技术文档,其中有一个PPT是讲的C# 的一些基础知识,做一整理,以后可以温习。

一、自动属性

  普通类:

    class Person
    {
        private string firstName;
        private string lastName;
        private int id;
        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; }
        }
        public int ID
        {
            set { id= value; }
        }
    }
    

   使用自动属性的类:

    class Person
    {
        private int id;
        private int age;

        public string FirstName
        {
            get;
            set;
        }
        public string LastName
        {
            get ;
            set ;
        }
        public int Age
        {
            get { return age; }
        }
        public int ID
        {
            set { id= value; }
        }
    }
    

      自动属性的典型适用场合:在属性代码中只包含基本的赋值取值功能简单的实体类

  对于自动属性,这里不多说神马,主要是有几个要注意的地方:

  1. 自动属性不能实现只读或者是只写属性。

  2. 因为没有声明私有变量,在使用自动属性时只能直接使用属性进行引用。

二、对象初始化器及集合初始化器

  首先看下对象初始化器,  

//传统的初始化对象及赋值
Person lincoln = new Person();
lincoln.FirstName = "Lincoln";
lincoln.LastName = "Burrows";
lincoln.Age = 30;

//使用对象初始化器
Person scofield = new Person 
{ 
    FirstName = "Michael", 
    LastName = "Scofield", 
    Age = 20 
};

  要说明的是对象初始化器是可嵌套的,即对一个对象初始化的时候可以内嵌另一个类的对象,如下面的Person对象中内嵌了Address对象:

//可嵌套的对象初始化器
Person tbag = new Person
{
    FirstName = "Theodore ",
    LastName = "Bagwell",
    Age = 32,
    Address = new Address
    {
        Street = "Prison SONA",
        Country = "Panama"
    }
};

  集合初始化器和对象初始化器相同:

//传统的方式
List<string> foxRiver8 = new List<string>();
foxRiver8.Add("Michael");
foxRiver8.Add("Lincoln");
foxRiver8.Add("Sucre");
foxRiver8.Add("Abruzzi");

//使用集合初始化器
List<string> foxRiver8 = new List<string>{
    "Michael",
    "Lincoln",
    "Sucre",
    "Abruzzi",
};

三、扩展方法

   首相先来看一个例子:

string sqlStr = "SELECT * FROM table_A WHERE ID = 1";
sqlStr.ExcuteSql();

Class Utilily
{
    public static void ExcuteSql(this string str)
    {
        Console.WriteLine(str + " 这个扩展方法输出的字符串");        
    }
}

  这里只是一个简单的对字符串进行扩展,使每个字符串类型都有了一个ExcuteSql方法,当然你也可以对其他类型进行扩展。
  扩展方法的语法:

  不带参数的扩展方法:  static 方法名 (this 目标类型 参数名)

  带参数的扩展方法:   static 方法名 (this 目标类型 参数名,参数类型1 参数名1,… …. ) 

  使用扩展方法时,需要注意以下几点:

  1. 扩展方法允许我们对已存在类型的行为进行扩展
  2. 扩展方法是一种特殊的静态方法
  3. 扩展方法必须在静态类中定义
  4. 扩展方法的优先级低于同名的类方法
  5. 扩展方法只在特定的命名空间内有效
  6. 除非必须不要滥用扩展方法
          /////////////////////////////////////////////////////////////////////////////
          ///排版真心烂,看着都受不了,Please喷死这个菜鸟!!!鄙视。///
          ////////////////////////////////////////////////////////////////////////////
posted @ 2013-04-20 16:00  菜鸟_飞飞  阅读(534)  评论(0编辑  收藏  举报