thể trùng lặp:
C# generic constraint for only integersCó ràng buộc chung về C# đối với các loại "số thực" không?
Greets!
Tôi đang cố gắng thiết lập hệ tọa độ Descartes trong C#, nhưng tôi không muốn giới hạn bản thân mình với bất kỳ loại số nào cho giá trị toạ độ của mình. Đôi khi chúng có thể là số nguyên và những lần khác chúng có thể là số hữu tỉ, tùy thuộc vào ngữ cảnh.
Điều này hét lên "lớp chung chung" với tôi, nhưng tôi stumped như thế nào để hạn chế loại cho cả tích phân và điểm nổi. Tôi dường như không thể tìm thấy một lớp học bao gồm bất kỳ khái niệm về số thực ...
public class Point<T> where T : [SomeClassThatIncludesBothIntsandFloats?] {
T myX, myY;
public Point(T x, T y) {
myX = x;
myY = y;
}
}
Point<int> pInt = new Point<int>(5, -10);
Point<float> pFloat = new Point<float>(3.14159, -0.2357);
Nếu tôi muốn mức độ tự do, tôi bầu cho một "typeof (T)" cơn ác mộng khi nói đến tính toán bên trong lớp học của tôi, loại bỏ bools, dây, đối tượng, vv? Hay tệ hơn, tôi có chọn làm một lớp cho từng loại số mà tôi muốn làm việc, mỗi loại có cùng một công thức toán học nội bộ không?
Mọi trợ giúp sẽ được đánh giá cao. Cảm ơn!
Đây là một tính năng khá thường xuyên được yêu cầu. Chúng tôi đang xem xét nó như là một _possibility_ cho một bản phát hành giả định trong tương lai của trình biên dịch/thời gian chạy, nhưng nó không phải là siêu cao trong danh sách ưu tiên, vì vậy tôi sẽ không hiểu điều này như bất kỳ loại lời hứa nào. Hãy nhớ rằng, chúng tôi có hàng trăm tính năng có thể và bất kỳ bản phát hành cụ thể nào chỉ nhận được một số ít các tính năng đó. Nó chắc chắn trên radar của chúng tôi mặc dù. –
Điều đó rất tốt để biết, Eric. Tôi rất mới với C#, nhưng tôi có nguồn gốc trong Java, vì vậy nó rất giống như kích thước nhảy ... tương tự, nhưng khác nhau, đủ để làm cho bạn đi "huh?" một lần trong một thời gian. ;) – Syndog
Đối với những người khác, cảm ơn rất nhiều cho tất cả các câu trả lời của bạn. Các bạn là tất cả những điều này! Không có thắc mắc bất cứ lúc nào tôi Google một câu hỏi C#, stackoverflow.com xếp hạng rất nổi bật trong các kết quả. – Syndog