我是stackoverflow的新手,可以在这里学习。
如果它们的数据类型不同,如何将运算符'> ='应用于C#中的If语句?
MyClass usingMyClass = ...; // (instance variable)
if (usingMyClass.MyClass >= price) // price is a float
任何解决方案?
针对您的特定问题的正确解决方案-如何将银行帐户余额与价格进行比较? -请勿将银行帐户与价格进行比较。正确的解决方案是在帐户对象上创建属性Balance
,并将that与价格进行比较。
旁听:“银行帐户”是一种常见的初学者练习,但我希望不是,因为它对银行帐户软件的实际工作方式提供了完全错误的想法。在现实世界的银行帐户软件中,确定是否有足够的余额来支持特定购买的逻辑发生在多个阶段。提议的工作流程(确定帐户是否有足够的资金,如果可以的话,执行交易)存在缺陷,因为可能发生的是[[two交易在进行中,有足够的现金来单独支付这两项费用,但不能同时使用这两种方法,两种检查都会成功,两种交易都会发生,并且帐户最终透支。设计一个高性能的现实系统并避免该问题是困难的,而不是初学者。
此外,正如我在评论中提到的那样,真实的银行帐户软件永远都不会有“可变余额”。相反,它是自帐户开始以来所有交易的仅写终了分类账,可以从中计算余额。您永远不需要银行帐户中的任何[[mutable,因为这样很容易造成欺诈。此外,如注释中所述,切勿使用浮点或双精度表示货币。使用 物理量decimal
。它是为该任务而设计的。使用浮点和双精度表示
很容易弄错,特别是对于比较运算符
。对于实现比较逻辑的初学者和专家,我的建议是实现one method进行all比较,然后从every重载运算符call进行该方法。我在这里举例说明如何正确执行此操作:https://ericlippert.com/2013/10/07/math-from-scratch-part-six-comparisons/注意,有一项工作要做[[lot]]。您需要重载<
,<=
,>
,>=
,==
,!=
,Equals
和GetHashCode
才能正确执行此操作。