Sự khác biệt giữa dynamic và object trong Dart

  • dynamic và object là hai định nghĩa sẵn trong dart.
  • dynamic là 1 loại định nghĩa động cho phép mọi loại kiểu khai báo biến, và bỏ kiểm tra kiểu khai báo.
  • object là khai báo chấp nhận khai báo mọi loại kiểu biến và loại trừ null
Biến khai báo dynamic có thể gán cho mọi loại giá trị và những biến được khai báo dynamic cũng có thể gán cho mọi kiểu biến
void main() {
  //dynamic variable assigned with string first
  dynamic name = "john";

// you can assign dynamic variable to any variable
  String fname = name;
}
Với một object, bạn có thể khai báo một biến dữ liệu bất kỳ.

Bạn cần ép kiểu khi sử dụng các biến khai báo object cho một loại biến khác

Ví dụ, vì một giá trị kiểu int là một kiểu con của một object, bạn có thể khai báo và gán một giá trị int. Vậy bạn muốn sử dụng một biến int, nhưng trước đó đã được khai báo bằng object thì bạn cần ép kiểu khi sử dụng như sau:

void main() {
  Object age = 25;
  int age1 = age as int;
}

Null values

Biến khai báo Dynamic có thể null, nhưng biến khai báo kiểu Object không cho phép null

main() {
  dynamic str = null; // no errors
  Object obj = null; // Compile time error
}

Truy vấn thuộc tính và phương thức

Khi bạn khởi tạo 1 instance của lớp Employee bằng kiểu dynamic, bạn có thể truy vấn đến các thuộc tính và phương thức của lớp Employee. Nhưng điều tương tự lại không được phép khi bạn sử dụng object

class Employee {
  printEmp() => print("Employee Object");
}

void main() {
  dynamic a = new Employee();
  Object b = new Employee();
  a.printEmp(); // No error
  b.printEmp(); // Compile error
}

Related Posts