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

Đề tài: cho mình hỏi về từ khóa "this" trong C#

  1. #1
    Ngày gia nhập
    02 2013
    Nơi ở
    TP HCM
    Bài viết
    0

    Mặc định cho mình hỏi về từ khóa "this" trong C#

    Mình đang tập tành với môn C#, nhưng vì mới làm quen nên có nhiều thứ không giải thích được, mong các đàn anh trong diễn đàn chỉ giúp.
    Tình hình là mình có đoạn code về đọc file sử dụng OpenFileDialog, nhưng chỉ thấy đoạn code, mình còn nhập nhằng giữa tạo project với Console và Winform. Mình đã thử tạo project bằng cả 2 cái, nhưng bên nào cũng báo lỗi "Keyword 'this' is not valid in a static property, static method, or static field initializer". Mình search google về từ khóa này đọc không hiểu lắm, mong các bạn giúp mình giải thích lỗi ở đoạn code này là gì. Mình thực sự mới làm quen nó được 2 ngày, nếu hỏi điều gì quá ngớ ngẩn thì mọi người đừng trách nhé.
    Đoạn code thế này :
    using System;
    using System.IO;
    using System.Text;
    class Test
    {
    public static void Main()
    {
    // Create a temporary file, and put some data into it.
    string path = this.openFileDialog1.FileName;
    // Open the stream and read it back.
    using (FileStream fs = File.Open(path, FileMode.Open))
    {
    byte[] b = new byte[1024];
    UTF8Encoding temp = new UTF8Encoding(true);
    while (fs.Read(b,0,b.Length) > 0)
    {
    Console.WriteLine(temp.GetString(b));
    }
    }
    }
    }
    Cùng trèo lên đỉnh núi cao vời vợi
    Để Ta khắc tên mình trên đời...

  2. #2
    Ngày gia nhập
    10 2009
    Nơi ở
    gầm cầu
    Bài viết
    156

    ngửi chuột vào chữ this đi bạn . bạn sẽ biết nó thay thế cho cái gì

  3. #3
    Ngày gia nhập
    01 2012
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    68

    Từ khóa this dùng để trỏ đến các biến ở phạm vi class (biến toàn cục). Nếu sử dụng this trong biến, method... là static sẽ gây ra lỗi.
    Giúp đỡ người khác cũng là giúp đỡ chính mình
    Administrator of http://techlife.com.vn

  4. #4
    Ngày gia nhập
    08 2012
    Bài viết
    574

    Hiểu một cách đơn giản là this cũng là một trường (biến) như các trường khác thôi và nó trỏ đến đối tượng của lớp hiện tại. Nó là trường không tĩnh (non-static) nên nó không dùng ở nhũng phương thức (method) hoặc thuộc tính (property) tĩnh (static) được.
    Trong đoạn mã trên thì bạn dùng từ khóa this trong một phương thức tĩnh (public static void Main() ) nên gây lỗi.

  5. #5
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    this tham chiếu đến đối tượng mà bạn đang viết code cho nó chạy
    thường bạn chỉ phải dùng this trong trường hợp trùng tên hoặc để truyền tham số

    private int a;
    public int add(int a) {return this.a + a}

    class Number
    {
    public static Number Add(Number a, Number b) {return a + b;}
    public Number Add(Number b) { return Number.Add(this,b);}
    }

Các đề tài tương tự

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 2
    Bài viết cuối: 02-09-2017, 06:36 PM
  2. ADO.NET Lấy object từ 1 chuỗi string "sTableName" và 1 khóa chính "iID"
    Gửi bởi babylovehack trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 14-08-2013, 04:53 PM
  3. Khai báo "Biến" trong lớp với từ khóa static, thì đó có phải là thuộc tính không?
    Gửi bởi phngcngtn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 20-04-2012, 10:12 PM
  4. Problems : " recover tree " with input as " preorder" and "inorder"
    Gửi bởi HoangManhHa1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 13-04-2011, 10:19 PM
  5. Khóa học Photoshop CS4-Để trở thành chuyên gia "Ps Designer" chỉ trong 1,5 tháng
    Gửi bởi itmantb trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 06-08-2010, 03:38 PM

Tags của đề tài này

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