Thursday, August 16, 2007

Những điểm mới trong CSharp 3.0

Sau đây tóm tắt những điểm chính của các tính năng được giới thiệu trong C# 3.0

Khai báo biến địa phương sử dụng kiểu 'var'

  • Các biến địa phương có thể được khai báo bằng kiểu 'var', khi đó trình biên dịch sẽ xác định kiểu được sử dụng dựa trên dữ liệu được khởi tạo.
var i = 10; // i được tạo ra với kiểu int var name = “MyName” ; // name được tạo ra có kiểu string
  • Chỉ có thể được sử dụng khi được khai báo và khởi tạo trong cùng một câu lệnh.
  • Không được khởi tạo giá trị null.
  • Không được sử dụng trong các trường dữ liệu của lớp.
  • Hầu hết được sử dụng để lưu các kiểu không xác định trong việc lập trình dựa trên LINQ.

Khởi tạo đối tượng và tập hợp

  • Cho phép xác định giá trị vào bất kỳ trường dữ liệu hoặc thuộc tính của một kiểu dữ liệu tại thời điểm khởi tạo mà không cần triệu gọi phương thức khởi tạo (constructor) với các tham số.
  • Phương thức constructor ngầm định được thực hiện trước khi xác định giá trị.
Ví dụ: Coordinate c1 = new Coordinate {x=1 , y=2};
  • Được sử dụng trong các biểu thức truy vấn của LINQ cùng với các kiểu không xác định.
  • Hàm khởi tạo tập hợp (collection) sử dụng hàm khởi tạo đối tượng để xác định các giá trị thành phần của tập hợp mà không cần gọi phương thức Add nhiều lần.

Các phương thức mở rộng

  • Cho phép thêm phương thức mới vào kiểu hiện có mà không phải thay đổi kiểu dữ liệu đó.
  • Là các phương thức tĩnh đặc biệt nhưng được gọi như là các phương thức của instance.
  • Tham số đầu tiên được truyền vào các phương thức mở rộng xác định kiểu mà chúng thao tác được xử lý bởi từ khóa 'this'.
  • Chúng không thể truy cập các biến riêng (private) của kiểu dữ liệu mà chúng được mở rộng.
  • Các phương thức mở rộng cần được định nghĩa trong lớp tĩnh dạng non-nested và non-generic.
  • Các phương thức của instance được ưu tiên hơn so với các phương thức mở rộng trong trường hợp chúng có cùng tên (signature).

Kiểu không xác định

  • Are of class types which can have only public read-only properties as their members. No other class members like methods are allowed.
  • They are of reference types and are derived from ‘Object’ class.
  • Internally compiler gives them the name but its not accessible by application code.
  • They have a method scope.
  • Can be initiated directly e.g. new { property1=1, property2=”Hello World”};

Lambda Expressions

  • Very similar to anonymous methods introduced in C# 2.0.
  • Its an inline expression or statement block which can be used to pass arguments to method call or assign value to delegate.
  • All lambda expression use lambda operator => where the left side denotes result and right contains statement block or expression.

Auto-Implemented Properties

  • Helps in simplifying property declaration in cases where there is no custom logic required in accessors methods.
  • E.g. public int Price {get; set;};
  • Internally compiler creates an anonymous field for assigning values.

In my next post on this i will demonstrate these using a code sample.

No comments:

Post a Comment