Tôi đã không sử dụng generics nhiều và do đó không thể tìm ra nếu nó có thể biến ba phương pháp sau đây thành một bằng cách sử dụng generics để giảm trùng lặp. Trên thực tế mã của tôi hiện đang có sáu phương pháp nhưng nếu bạn có thể giải quyết nó cho ba thì phần còn lại chỉ nên làm việc dù sao với cùng một giải pháp.Làm thế nào để biến 3 phương thức này thành một phương pháp bằng cách sử dụng C# generics?
private object EvaluateUInt64(UInt64 x, UInt64 y)
{
switch (Operation)
{
case BinaryOp.Add:
return x + y;
case BinaryOp.Subtract:
return x - y;
case BinaryOp.Multiply:
return x * y;
case BinaryOp.Divide:
return x/y;
case BinaryOp.Remainder:
return x % y;
default:
throw new ApplicationException("error");
}
}
private object EvaluateFloat(float x, float y)
{
switch(Operation)
{
case BinaryOp.Add:
return x + y;
case BinaryOp.Subtract:
return x - y;
case BinaryOp.Multiply:
return x * y;
case BinaryOp.Divide:
return x/y;
case BinaryOp.Remainder:
return x % y;
default:
throw new ApplicationException("error");
}
}
private object EvaluateDouble(double x, double y)
{
switch (Operation)
{
case BinaryOp.Add:
return x + y;
case BinaryOp.Subtract:
return x - y;
case BinaryOp.Multiply:
return x * y;
case BinaryOp.Divide:
return x/y;
case BinaryOp.Remainder:
return x % y;
default:
throw new ApplicationException("error");
}
}
Tôi đang xây dựng một phân tích cú pháp biểu hiện đơn giản mà sau đó cần phải đánh giá các hoạt động nhị phân đơn giản như phép cộng/trừ vv Tôi sử dụng các phương pháp trên để có được những toán thực tế thực hiện bằng cách sử dụng các loại có liên quan. Nhưng phải có một câu trả lời tốt hơn!
Trái với suy đoán phổ biến, Marc và tôi thực sự là hai người riêng biệt. Chúng tôi dường như đôi khi chia sẻ một tâm trí. –
Có lẽ chúng ta chỉ * nghĩ * rằng ... có bao giờ gặp Fight Club không? –
Bộ não có thể thay đổi? Mát mẻ. – EricSchaefer