我正在开发一个与对象的位置和速度有很大关系的项目。在处理物体的速度时,我能够转换为M / M,F / M,M / H,Km / H,Knots和Mach。现在我注意到很多代码复制正在发生,我开始怀疑对我来说是否有用继续创建类似于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 Speed = new mpm{MetersPerMinute = 46,};
问题:
答案 0 :(得分:1)
1)我认为这将是一个很好的方法
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是'数据类型',但更准确地称它们为'值类型',因为'对象'也是'数据类型'但是'引用类型'。