C# 速度数据类型和转换
我正在做一个与物体的位置和速度有很大关系的项目。在研究物体的速度时,我可以转换成m/m,F/m,m/H,Km/H,节数和马赫数。现在我注意到大量代码复制正在发生,我开始怀疑继续创建类似于double、float或int的新数据类型是否有用。如果是这样,我计划将它们称为mpm、fpm、kmph等。。。出现这种情况的原因是由于转换,虽然我可以创建一个静态类或类似的东西,然后放入一堆方法来为我进行转换,但我想知道它是否在数据类型中组织得更好 比如: mpm Speed = 45; knot Knots = Speed.ToKnot(); double Temperature = 32; // Mach is loosely dependent on temperature or pressure. mach SoundSpeed = Speed.ToMach(Temperature); mpm速度=45; 结结=速度。ToKnot(); 双温=32; //马赫数大致取决于温度或压力。 马赫声速=速度。托马赫(温度); 我说的是模特儿还是别的什么?有点想避免整个C# 速度数据类型和转换,c#,types,physics,C#,Types,Physics,我正在做一个与物体的位置和速度有很大关系的项目。在研究物体的速度时,我可以转换成m/m,F/m,m/H,Km/H,节数和马赫数。现在我注意到大量代码复制正在发生,我开始怀疑继续创建类似于double、float或int的新数据类型是否有用。如果是这样,我计划将它们称为mpm、fpm、kmph等。。。出现这种情况的原因是由于转换,虽然我可以创建一个静态类或类似的东西,然后放入一堆方法来为我进行转换,但我想知道它是否在数据类型中组织得更好 比如: mpm Speed = 45; knot K
mpm速度=新的mpm{MetersPerMinute=46,}代码>
问题:
- 有没有更好的方法来实现这一点,同时仍然允许它非常便携
- 如果这是可能和合理的,我将如何实施它
- 当我调用int、float和double之类的“数据类型”时,我对吗
我认为这将是一个很好的方法
public struct Velosity
{
private double _value; // Value in m/s (SI system, use yours most frequently used)
public Velosity(double value)
{
_value = value;
}
public double GetMS()
{
return _value;
}
public double GetKmH()
{
return _value*3.6;
}
//Other Get conversions...
public static Velosity FromMS(double value)
{
return new Velosity(value);
}
public static Velosity FromKmH(double value)
{
return new Velosity(value/3.6);
}
//Other From conversions...
public static implicit operator Velosity(double value)
{
return new Velosity(value);
}
public static implicit operator double(Velosity velosity)
{
return velosity._value;
}
}
static void Main(string[] args)
{
var v = Velosity.FromMS(10) + Velosity.FromKmH(10);
Velosity velosity = v;
Console.WriteLine(v);
Console.WriteLine(velosity.GetKmH());
Console.WriteLine(velosity.GetMS());
velosity += 10;
Console.WriteLine(velosity.GetMS());
Console.ReadKey();
}
2) 是的,int、float和double是“数据类型”,但更准确的说法是“值类型”,因为“对象”也是“数据类型”,而不是“引用类型”。非常感谢您的回答