Bạn có thể khai báo toán tử chuyển đổi trên lớp của mình bằng cách sử dụng từ khóa explicithoặc implicit.
Theo nguyên tắc chung, bạn chỉ nên cung cấp implicittoán tử chuyển đổi khi chuyển đổi không thể không thành công. Sử dụng explicittoán tử chuyển đổi khi chuyển đổi có thể không thành công.
public class MyClass
{
private byte[] _bytes;
// change explicit to implicit depending on what you need
public static explicit operator MyClass(byte[] b)
{
MyClass m = new MyClass();
m._bytes = b;
return m;
}
// change explicit to implicit depending on what you need
public static explicit operator byte[](MyClass m)
{
return m._bytes;
}
}
Việc sử dụng explicitcó nghĩa là người dùng trong lớp của bạn sẽ cần thực hiện chuyển đổi rõ ràng:
byte[] foo = new byte[] { 1, 2, 3, 4, 5 };
// explicitly convert foo into an instance of MyClass...
MyClass bar = (MyClass)foo;
// explicitly convert bar into a new byte[] array...
byte[] baz = (byte[])bar;
Sử dụng implicitcó nghĩa là người dùng trong lớp của bạn không cần thực hiện chuyển đổi rõ ràng, tất cả đều diễn ra minh bạch:
byte[] foo = new byte[] { 1, 2, 3, 4, 5 };
// imlpicitly convert foo into an instance of MyClass...
MyClass bar = foo;
// implicitly convert bar into a new byte[] array...
byte[] baz = bar;