Tôi thực sự thích kiểu số chung như tham số kiểu chung thứ hai của số Func<TInput, THere, TResult>
được đưa ra dưới đây để tôi có thể cung cấp số nguyên hoặc số double hoặc số thập phân và khi tôi muốn.Có loại số chung trong C# không?
var _resultSelectors = new Dictionary<string, Func<DateTime, /*here*/ double, DateTime>>();
// so I can do
_resultSelector.Add("foo", (DateTime dt, int x) => ...);
_resultSelector.Add("bar", (DateTime dt, double d) => ...);
_resultSelector.Add("gar", (DateTime dt, float f) => ...);
_resultSelector.Add("har", (DateTime dt, decimal d) => ...);
ngắn của:
- làm kiểu của riêng tôi; hoặc
- sử dụng đối tượng và đấm bốc một loại giá trị và bỏ hộp đó; hoặc
- Sử dụng từ khóa
dynamic
,
Có một cách thích hợp để làm điều đó trong C#?
Tôi đoán Java có một lớp học Number
có thể phù hợp với yêu cầu của tôi nhưng tôi đã tự hỏi liệu C# có bất kỳ điều gì tương tự không.
Tôi đoán không có bất kỳ điều nào trong C# nhưng tôi nghĩ rằng tôi sẽ yêu cầu chắc chắn.
Nếu bạn có thể có tất cả 4, tôi khuyên bạn nên chọn một 'double' hoặc 'decimal' (tùy thuộc vào trường hợp sử dụng của bạn, tức là dấu phẩy động) và chuyển phần còn lại thành số đó. –
@CharlesMager Đó là một ý tưởng hay. –
Không có giao diện chung nhưng bạn vẫn gặp sự cố khi tìm các func chính xác để gọi dựa trên kiểu thời gian chạy của giá trị. Giá trị số cụ thể đến từ đâu? – Lee