Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Con trỏ this trong C#, công dụng và cách sử dụng?

  1. #1
    Ngày gia nhập
    07 2008
    Bài viết
    30

    Smile Con trỏ this trong C#, công dụng và cách sử dụng?

    có phải con trỏ this trong C# nó khác trong C++ ko vậy
    Code:
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace class_this_ex
    {
        class Program
        {
            int m;
            public Program ex()
            {
                m = 2;
                return this; // return *this la sai
            }
            public void hienthi()
            {
                Console.WriteLine("{0}",m);
            }
            static void Main(string[] args)
            {
                Program t = new Program();
                Program k = new Program();
                k = t.ex();
                k.hienthi();
    		
    
            }
        }
    }

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    C# đã che giấu gần hết khái niệm con trỏ. Dấu * ko còn là khai báo con trỏ nữa. Bạn cứ return this là được.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Nói đơn giản dễ hiểu hơn this ko phải là con trỏ, this là đối tượng.

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Hix,thế mà một số sách C# tiếng việt vẫn cứ gọi this là con trỏ vào chính đối tượng đó anh HuyNguyen
    Cánh Chym ứ mỏi

  5. #5
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Hix,thế mà một số sách C# tiếng việt vẫn cứ gọi this là con trỏ vào chính đối tượng đó anh HuyNguyen
    Sai bét.
    Không phải con trỏ đâu.
    Nó là đối tượng xác định (instance) khác với đối tượng chung (object)
    Sách tiếng việt đọc làm gì
    None!

  6. #6
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Mặc định Con trỏ this trong C#, công dụng và cách sử dụng?

    The this keyword refers to the current instance of the class.

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Do mấy ông viết sách cứ mang quan điểm C++ OOP vào C# nên sai lầm hết.
    OOP thuần khiết ko hề có 1 khái niệm nào gọi là con trỏ.

  8. #8
    Ngày gia nhập
    09 2008
    Nơi ở
    Ở nhà chứ đâu... nhìn cái gì?!?!
    Bài viết
    218

    _ C# vẫn có thể dùng con trỏ được mà (nhưng khuyến cáo là không nên).
    _ Lý do vẫn có người sử dụng ngôn ngữ "con trỏ" trong lập trình OOP là do thói quen mà thôi.

    ví dụ:
    this = null; // cái này có một vài người gọi là trỏ null.

    keyword this có nghĩ là truy xuất tới chính instance của đối tượng đang sử dụng.

    ví dụ:

    Visual C# Code:
    1. {
    2.     public void DoStuff()
    3.     {
    4.          this.GoToLittleBox(); // this ở đây là một instance của MyCat
    5.          this.PlayToy();        // Lưu ý rằng MyCat phải có những phuơng thức
    6.          this.MeoMeo();        // GoToLittleBox(), PlayToy(), MeoMeo() thì instance this mới "trỏ" tới được :D
    7.     }
    8. }

    ngoài this thì còn một keyword khác là base dùng để trỏ tới instance mà đối tượng hiện tại đang kế thừa

    ví dụ:

    Visual C# Code:
    1. {
    2.     public void Do()
    3.     {
    4.     }
    5. }
    6.  
    7. {
    8.     public void GetBaseMethod()
    9.     {
    10.         base.Do();
    11.     }
    12. }

    một số ví dụ khác về cách sử dụng 2 keyword this và base:

    Visual C# Code:
    1. {
    2.     protected string mName;
    3.  
    4.     public MyPet() : this("")
    5.     { }
    6.  
    7.     public MyPet(string name)
    8.     {
    9.          mName = name;
    10.     }
    11. }
    12.  
    13. public class MyCat : MyPet
    14. {
    15.     private int mAge;
    16.    
    17.     public MyCat() : base()
    18.     {
    19.          mAge = 0;
    20.     }
    21.  
    22.     public MyCat(string name) : base(name)
    23.     {
    24.          mAge = 0;
    25.     }
    26.  
    27.     public MyCat(string name, int age) : this(name)
    28.     {
    29.          mAge = age;
    30.     }
    31.  
    32.     public int Age
    33.     {
    34.          get { return mAge; }
    35.          set
    36.          {
    37.               if (value > 0)
    38.                    mAge = value;
    39.               else
    40.                    throw new Exception("Age must be greater than zero.");
    41.          }
    42.      }
    43. }

    Có gì sai sót mong các bạn góp ý dùm
    Quá nản cái viễn cảnh hiện tại. Nhiều "thanh niên" sống "ảo" quá. Thời nào rồi mà còn hỏi WinForms + ADO.NET

  9. #9
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Thực ra bạn thay thế con trỏ trong C thành tham chiếu trong C# là đươc. Tất cả các biến đối tượng đều thực chất là con trỏ hết, nó không phải là đối tượng, mà là reference refer tới đối tượng (instance) (vùng lưu trữ) trên heap. Chỉ có kiểu value type mới thực sự là vùng lưu trữ thôi.

    vd:
    String s = new String("123");
    s là 1 reference (thực chất là con trỏ bên dưới).
    còn new String("123") mới là object (gọi là O1) lưu trên heap.

    ta gán s = new String("234"), đâu phải là thay đổi vùng giá trị O1. mà là sửa lại giá trị reference s, bây giờ s refer tới O2 (là "234").

    Chúng ta chỉ làm việc với reference của object mà thôi chứ không làm trực tiếp với Object.

    Xét ra Java hay C# chưa phải thuần OOP, chỉ có Smalltalk mới gọi là gần nhất với OOP.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn