C#数字对象之间的加法

C#数字对象之间的加法,c#,object,C#,Object,我正试图找到做以下事情的最佳方法: 我有两个对象,对象A和B。在程序中的某个点上,我知道A和B的类型是int、double或float。我想对它们做一个加法,这样A+B=C。C将被键入,就像我们在整数、浮点和双精度之间进行加法时习惯的那样 例如,如果A是int,B是float。那么C将是浮动的。您可以到达的最近点是: dynamic a = ...; dynamic b = ...; dynamic c = a + b; 这将执行适当类型的加法,但直到执行时您才知道结果的类型。最接近的结果是:

我正试图找到做以下事情的最佳方法:

我有两个对象,对象A和B。在程序中的某个点上,我知道A和B的类型是int、double或float。我想对它们做一个加法,这样A+B=C。C将被键入,就像我们在整数、浮点和双精度之间进行加法时习惯的那样


例如,如果A是int,B是float。那么C将是浮动的。

您可以到达的最近点是:

dynamic a = ...;
dynamic b = ...;
dynamic c = a + b;

这将执行适当类型的加法,但直到执行时您才知道结果的类型。

最接近的结果是:

dynamic a = ...;
dynamic b = ...;
dynamic c = a + b;

这将执行适当类型的加法,但直到执行时,您才知道结果的类型。

我不知道是否理解您的问题,但我认为这有助于:

Object objectA, objectB, objectC; 
float objectFloatC;
// Your business logic here 

if((objectA is int) && (objectB is float))
{
   objectFloatC = (float)ObjectC; 
}

我不知道我是否理解你的问题,但我认为这有助于:

Object objectA, objectB, objectC; 
float objectFloatC;
// Your business logic here 

if((objectA is int) && (objectB is float))
{
   objectFloatC = (float)ObjectC; 
}

您要求C的编译时类型依赖于A和B的运行时类型?泛型类型可能会有所帮助。您能告诉我们您尝试了什么吗?泛型没有帮助,因为您需要约束类型,因为
必须有运算符+
,您不应该反对强类型化。这是.NET的一个重要特性。没有它,我们最终会遇到与PHP或JavaScript程序相同的问题:不要对抗它,接受它。它是你对付臭虫最强大的盟友之一。如果你甚至不知道变量的类型,那么你的整个设计似乎都有问题。您应该选择一个,或者让用户选择一个。此问题表示存在设计缺陷。我认为你应该重新考虑你的设计。你永远不应该像现在这样把一个正方形的木钉塞进一个圆形的孔里。你要求C的编译时类型依赖于a和B的运行时类型?也许泛型类型会有所帮助。您能告诉我们您尝试了什么吗?泛型没有帮助,因为您需要约束类型,因为
必须有运算符+
,您不应该反对强类型化。这是.NET的一个重要特性。没有它,我们最终会遇到与PHP或JavaScript程序相同的问题:不要对抗它,接受它。它是你对付臭虫最强大的盟友之一。如果你甚至不知道变量的类型,那么你的整个设计似乎都有问题。您应该选择一个,或者让用户选择一个。此问题表示存在设计缺陷。我认为你应该重新考虑你的设计。你不应该像现在这样把一个正方形的钉子塞进一个圆孔里。还应该注意的是,它完全破坏了类型。一个函数被交给一个动态函数,它也很容易返回一个动态函数——不管指定了哪种类型。把它想象成黑暗的一面:“如果你走这条路,它将永远主宰你的命运。”我真的想把它还给你。我知道我可以在这些方法的类型上做一个大的转换,我可以做所有27种情况,我如何才能对三个数字对象进行加法。但这感觉相当不清晰。还应该注意的是,它完全破坏了类型。一个函数被交给一个动态函数,它也很容易返回一个动态函数——不管指定了哪种类型。把它想象成黑暗的一面:“如果你走这条路,它将永远主宰你的命运。”我真的想把它还给你。我知道我可以在这些方法的类型上做一个大的转换,我可以做所有27种情况,我如何才能对三个数字对象进行加法。但这感觉相当不清楚。