Я знаю, что оператор =
не может быть перегружен, но должна быть способом сделать то, что я хочу здесь:Перегрузка оператора присваивания в C#
Я просто создание классов для представления количественных единиц, так как я я делаю немного физики. По-видимому, я не могу просто наследовать от примитива, но я хочу, чтобы мои классы вели себя точно так же, как примитивы - я просто хочу, чтобы они набрали по-другому.
Так что я был бы в состоянии идти,
Velocity ms = 0;
ms = 17.4;
ms += 9.8;
т.д.
Я не знаю, как это сделать. Я решил, что просто напишу несколько таких классов:
class Power
{
private Double Value { get; set; }
//operator overloads for +, -, /, *, =, etc
}
Но, по-видимому, я не могу перегрузить оператор присваивания. Есть ли способ получить такое поведение?
Вы просмотрели функцию единиц измерения F #? он знает стандартные (ISO) единицы, такие как M, KG и M/S, и он также может рассчитывать с помощью единиц. –
абсолютно, я использую его сейчас. Он не знает единицы ИСО, вы сами определяете единицы, например '[] тип m; [] type s', а затем использовать такие вещи, как 'let a = 9.8 /4.3
', который дает 'val a: float = 2.279069767' –
К сожалению, я хотел сказать единицы СИ, которые предопределены в Microsoft. FSharp.Math.SI'. См.: Http://blogs.msdn.com/b/andrewkennedy/archive/2008/09/02/units-of-measure-in-f-part-two-unit-conversions.aspx –