2013-07-05 2 views
0

저는 객체의 위치와 속도와 관련이 많은 프로젝트를 진행하고 있습니다. 물체의 속도를 작업하면서 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 Speed = new mpm{MetersPerMinute = 46,};

질문을 피하고자 :

  • 여전히 동안 접근이 매우 이식 할 수 있도록 더 나은 방법이 있나요?
  • 이것이 가능하고 합리적이라면 어떻게 구현합니까?
  • int, float 및 double "데이터 형식"과 같은 것을 호출 할 때 맞습니까?

답변

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, 플로트, 더블 '데이터 유형', 그러나 '값 유형'을 부르는 것이 더 정확하기 때문에 '객체'는 '데이터 유형'이지만 '참조 유형'입니다.

+0

답변 해 주셔서 감사합니다. – Oxymoron