Thứ Năm, 14 tháng 1, 2010

C#: Từ khoá new

1.       Toán tử new (new Operator)

Toán tử new dùng để khởi tạo giá trị cho biến hoặc đối tượng.

Ví dụ:

 

    public class MyClass

    {

        public class Customer

        {

            public string Name { get; set; }

            public string Address { get; set; }

        }

        public void Test()

        {

            //Khởi tạo đối tượng object

            object o = new object();

 

            //Khởi tạo đối tượng danh sach khách hàng

            List<Customer> customers = new List<Customer>();

 

            //Khởi tạo một đối tượng có kiểu vô danh

            var query = from cust in customers

                        select new { Name = cust.Name, Address = cust.Address };

 

        }

    }

Đối với các kiểu dữ liệu giá trị còn có thể dùng toán tử new để khởi tạo giá trị.

Ví dụ:

//2 câu lệnh dưới đây tương đương nhau

int a = new int();

int a = 0;

 

2.       Bổ nghĩa new (new Modifier)

Khi là bổ nghĩa, từ khoá new sẽ ẩn thành viên của lớp cơ sở (lớp được kế thừa). và tạo một thành viên với thay thế thành viên của lớp cơ sở.

Tức là, để có thể nạp chồng (ghi đè) phương thức không phải là abstract, override, virtual ta có thể dùng toán tử new.

Ví dụ:

 

    public class X

    {

        public string Name()

        {

            return "Class X";

        }

    }

 

    public class Y : X

    {

        public new string Name()

        {

            return "Class Y";

        }

    }

 

    public class TestNew

    {

        static void Main()

        {

            X o1 = new X();

            Y o2 = new Y();

 

            Console.WriteLine(o1.Name());   //Kết quả là Class X

            Console.WriteLine(o2.Name());   //Kết quả là Class Y

        }

    }

3.       Rằng buộc (new Constraint)

Chi tiết tham khảo thêm MSDN

Ví dụ:

    class Test

    {

        public class GenericClass where T : new()

        {

            public T DefaultValue

            {

                get

                {

                    return new T();

                }

            }

        }

 

        static void Main(string[] args)

        {

            GenericClass<int> Test = new GenericClass<int>();

 

            Console.WriteLine(Test.DefaultValue.ToString());

 

            Console.ReadLine();

 

 

        }

    }

Không có nhận xét nào:

Đăng nhận xét