Từ khóa dynamic được sử dụng để khai báo các kiểu dynamic. Các kiểu dynamic cho trình biên dịch rằng object được định nghĩa là dynamic và bỏ qua kiểu check tại thời điểm biên dịch; kiểu check bị trễ cho đến khi runtime. Tất cả các cú pháp được kiểm tra và lỗi được ném vào runtime. Chương trình dynamic được giới thiệu để cung cấp tài liệu tham chiếu chéo giữa NET và không .NET API như COM API, IronPython, và phiên bản COM của HTML Object Model (DOM).
Đoạn mã sau đây mô tả trường dynamic, thuộc tính dynamic, phương thức dynamic và biến dynamic.
// Define a dynamic field.
dynamic name;
// Define a dynamic property.
dynamic NameProperty { get; set; }
// Define a dynamic method with a dynamic parameter type.
public dynamic FullNameMethod(dynamic d)
{
name = "DOTNET";
dynamic firstname = name;
string lastname = "GROUP";
return firstname + lastname;
}
Như bạn có thể nhận thấy từ đoạn mã trên, biến dynamic có thể lưu trữ bất kỳ kiểu giá trị. Phương thức cũng có thể trả lại kiểu dynamic và cũng có thể chấp nhận các đối số dynamic.
Đây là ví dụ với biến dynamic có thể lưu trữ string, integer, double, và giá trị Boolean.
dynamic dyno = "DOTNET GROUP";
Console.WriteLine(dyno);
dyno = 38;
Console.WriteLine(dyno);
dyno = 44.95;
System.Console.WriteLine(dyno);
dyno = true;
System.Console.WriteLine(dyno);
Kiểu dynamic cũng có thể được chuyển đổi một cách rõ ràng với các kiểu khác và ngược lại. Đoạn mã sau đây chuyển đổi kiểu string, integer, và double thành kiểu dynamic bằng cách sử dụng từ khóa dynamic.
dynamic d;
string name = "Mahesh Chand";
d = (dynamic)name;
Console.WriteLine(d);
int age = 38;
d = (dynamic)age;
Console.WriteLine(d);
double price = 44.95d;
d = (dynamic)price;
Console.WriteLine(d);
Dynamic có thể được sử dụng với các lớp. Ví dụ sau định nghĩa lớp Author với phương thức dynamic FullNameMethod. Phương thức chính tạo ra kiểu dynamic của lớp Author và gọi phương thức dynamic của mình bằng cách thông qua đối số dynamic.
namespace DynamicProgSample
{
class Program
{
static void Main(string[] args)
{
dynamic lastName = "Chand";
dynamic dynAuthor = new Author();
Console.WriteLine(dynAuthor.FullNameMethod(lastName));
Console.ReadKey();
}
}
public class Author
{
// Define a dynamic field.
dynamic name;
// Define a dynamic property.
dynamic NameProperty { get; set; }
// Define a dynamic method with a dynamic parameter type.
public dynamic FullNameMethod(dynamic d)
{
name = "Mahesh";
dynamic firstname = name;
return firstname + " " + d;
}
}
}
Tóm tắt
Lập trình dynamic hiện nay được xem là hướng mới cho ngôn ngữ C#. Nó đóng vai trò quan trọng trong công nghệ chủ chốt như LINQ. Trong bài viết này, chúng ta đã được học về các từ khoá dynamic và làm thế nào để xác định các biến dynamic trong ngôn ngữ C#.