Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 速度数据类型和转换_C#_Types_Physics - Fatal编程技术网

C# 速度数据类型和转换

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

我正在做一个与物体的位置和速度有很大关系的项目。在研究物体的速度时,我可以转换成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; //马赫数大致取决于温度或压力。 马赫声速=速度。托马赫(温度);

我说的是模特儿还是别的什么?有点想避免整个
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是“数据类型”,但更准确的说法是“值类型”,因为“对象”也是“数据类型”,而不是“引用类型”。

    非常感谢您的回答