01/10/2018, 11:26

Hỏi về ý nghĩa của dòng code số 38, link em để ở dưới

https://codeshare.io/an463n
mọi người vô coi giúp e dòng code 38 có ý nghĩa là gì ạ ,sao phai tạo ra dòng đó ạ

Dark.Hades viết 13:39 ngày 01/10/2018

Vì hàm Main() là static, dù nó có thuộc class nào đi nữa nó cũng không thể trực tiếp gọi thuộc tính/phương thức của class đó, nó là 1 mình 1 địa chỉ, chạy xuyên suốt cả chương trình, không liên quan tới class nó nằm trong.
Vậy nên, để khởi tạo 1 đối tương từ 1 class bất kì trong Main, ta buộc phải dùng new để khởi tạo nó.

// Nếu bạn code C++ trước sẽ thấy C#/Java khá dị đoạn này, tuy nhiên sẽ hiểu rõ đang code cái gì hơn.

Vinh viết 13:31 ngày 01/10/2018

1 mình 1 địa chỉ là sao ạ

Dark.Hades viết 13:33 ngày 01/10/2018

Tức là bạn không thể tạo 1 hàm Main thứ 2 trong toàn chương trình.

Tương tự C++

#include <iostream>
#include <string>
using namespace std;

class person
{
  public:
    string name;
    int age;
};

int main()
{
  person a, b;
  a.name = "Calvin";
  b.name = "Hobbes";
  a.age = 30;
  b.age = 20;
  cout << a.name << ": " << a.age << endl;
  cout << b.name << ": " << b.age << endl;
  return 0;
}
Trần Hoàn viết 13:33 ngày 01/10/2018

Nói chung là trong C# thì nó phân biệt rõ khai báo và khởi tạo.

MyClass A;

Dòng này có nghĩa là khai báo biến A là đối tượng thuộc lớp MyClass

A = new MyClass();

Đây là khởi tạo. Đến lúc này chương trình mới được cấp bộ nhớ cho biến A. Một biến có thể khởi tạo nhiều lần, mỗi lần khởi tạo thì lại được cấp 1 vùng nhớ mới. Và nếu vùng nhớ cũ không còn được biến nào trỏ đến thì sẽ được tự động giải phóng, không như C++ phải delete.

Bài liên quan
0