30/09/2018, 18:16

Con trỏ this trong C# dùng để làm gì?

Con thỏ this để làm gì nhĩ ?
Em có thể code như thế này nhưng ko hiểu rõ

public Window(int top, int left)
{
this.top = top;
this.left = left;
}

đoạn đó có cũng được mà ko có cũng được à ? và nếu có thì sẽ làm gì ?

Nguyễn Văn Tâm viết 20:29 ngày 30/09/2018

this để trỏ tới chính lớp đó thôi

Lê Huy viết 20:24 ngày 30/09/2018

bạn có thể nói có ích gì dc ko bạn

Nguyễn Văn Khoa viết 20:29 ngày 30/09/2018

Bạn có thể bỏ this ra thì kết quả cũng như nhau.

... viết 20:32 ngày 30/09/2018

Bạn thử xóa this với dấu chấm đi đoạn code nó thành
public Window(int top, int left)
{
top = top;
left = left;
}
nó sẽ báo lỗi: Assignment made to same variable; did you mean to assign to something else ?. Muốn không bị lỗi bạn phải đổi tên đối số trong hàm nó khác với tên thuộc tính của class. Ví dụ top thành top1, left thành left_abc:
public Window(int top1, int left_abc)
{
top = top1;
left = left_abc;
}
…Mà để nghĩ ra cái tên đối số sao cho đẹp và dễ hiểu thì rắc rối quá thế là chúng ta có this, vừa nhanh, đẹp, lại dễ gợi nhớ cho người viết code. Có gì thiếu sai sót mong các bạn bổ sung nhé.

Văn Dương viết 20:26 ngày 30/09/2018

Chức năng thứ nhất là để phân biệt tài sản của lớp với các thông số truyền vào hàm, index… khi nó trùng tên.
Chức năng này nằm trong đoạn code ở #1.

Chức năng thứ 2 là để truyền chính nó vào trong một delegate hoặc event. Khi đó this đại diện cho chính nó.

public delegate void Delegate(object sender);

class MyClass{
    public Delegate MyDelegate;
    public event MyEvent;
    private void SendDelegate(){
        if(MyDelegate!=null) MyDelegate(this); // truyền chính nó vào một delegate.
    }

    private void ShotEvent(){
        if(MyEvent!=null) MyEvent(this); // truyền chính nó vào một event.
    }
}

Những chức năng khác để anh em liệt kê them.

Trần Hoàn viết 20:33 ngày 30/09/2018

Trong C#, this không phải là con trỏ mà là đối tượng, nó mang đầy đủ đặc tính của một đối tượng.

Bài liên quan
0