1. Làm cách nào tôi có thể diễn giải lại một phao lên một int (hoặc gấp đôi thành một khoảng thời gian dài)?Làm cách nào để diễn giải lại việc truyền phao sang int? Có toán tử chuyển đổi không tĩnh hoặc toán tử gán do người dùng xác định cho chuyển đổi trên 'this' không?
float f = 2.0f;
int i = (int)f; // causes conversion
Tôi chỉ muốn sao chép mẫu bit từ f
thành i
. Điều này có thể giải quyết như thế nào?
2. Các nhà khai thác ngầm và rõ ràng trong C# sử dụng một đối tượng trung gian bởi vì các chức năng điều hành là tĩnh
public static implicit operator MyClass(double s)
{
return new MyClass(s);
}
..
..
MyClass m = 2.2; // this code uses 'm' and one intermediate object.
Điều này là tốt với nhiều loại tài liệu tham khảo, nhưng đối với giá trị các loại mà là lớn (nói 20- 30 byte), điều này sẽ gây ra sao chép dữ liệu không cần thiết. Tôi hiểu có đúng không? Và nếu có, thì tại sao C# không có toán tử chuyển đổi không tĩnh hoặc toán tử gán do người dùng định nghĩa để chuyển đổi/chuyển nhượng diễn ra trên 'this'? Nếu có, làm cách nào để làm điều đó?
Trong tương lai xin vui lòng gửi hai câu hỏi riêng biệt. –
và không viết tất cả văn bản trong dòng tiêu đề. – shoosh