程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 深入理解C# 3.0的五項主要改進(2)

深入理解C# 3.0的五項主要改進(2)

編輯:關於C語言

在一個類中導入這個extension方法時,開發者就能夠對這個類包含的任何字符串調用NoSapces()方法。

extension方法的第一個參數決定extension方法的有效類型。在這種情況下,“這個字符串數據”(this string data)表明extension方法適用於字符串類;如果extension方法以“這個對象數據”(this object data)為第一個參數,則說明這個方法對每個對象有效。

要表明您希望導入extension方法,只需在它們的命名空間中包括一個using指令。例如,要應用上面說明的方法,需要在類文件中包括一個using MyExtensionMethods指令:(列表B)

列表B

usingMyExtensionMethods;
namespace MyNamespace
{
 public class MyClass
 {
  public MyClass()
  {
   string data = "this is my data";
   //nospaces will contain "thisismydata".
   string nospaces = data.NoSpaces();
  }
 }
}

注意extension方法的優先度比instance方法低。因此如果instance方法和extension方法有同樣的簽名,則應執行instance方法。

3.對象初始化器

在C# 2.0中,開發者認為建立許多構造器來設定某個屬性值為對象初始化過程。下面是一個例子: 類訪問Customer方法:

Customer myCustomer = new Customer("Zach", "Smith");

Customer類構造器:

public Customer(string firstName, string lastName) : this()
{
 this.FirstName = firstName;
 this.LastName = lastName;
}
public Customer()
{}

C# 3.0介紹了一個初始化對象的新方法,它允許您在初始化對象時設定任何屬性值。例如,在C# 3.0中,上面的代碼塊可以寫成:

類訪問Customer方法:

Customer myCustomer = new Customer{FirstName = "Zach", LastName = "Smith" };

Customer類構造器:

public Customer()
{}

在C# 3.0代碼中,沒有與初始化對象對應的構造器。這樣,開發者就不用為每組需要設定的屬性建立不同的構造器。

這樣產生的另外一個效果是:代碼變得更容易閱讀了。例如,雖然我們清楚知道下面的代碼對一個Car對象進行了初始化,但我們並不清楚其中變量的作用:

Car car = new Car(18, 10, 550);

一眼看來,下面這行代碼更易閱讀,盡管我們必須輸入更多代碼:

Car car = new Car { WheelDiameter = 18, WheelWidth = 10, Horsepower = 550 };

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved