通过构造函数修改enum



在我的应用程序中,我目前正在处理以下问题。在Program类中,我定义了TradeType枚举。我通过构造函数将它传递给ExecutionClass。这个类将做一些工作并修改这个枚举。工作完成后,我想在我的Program类中打印出修改过的这个修改过的枚举。有什么办法可以做到吗?

非常感谢!

class Program
{
static void Main(string[] args)
{
TradeType tradeType = new TradeType();
ExecutionClass ex = new ExecutionClass(ref tradeType);

ex.Run();// here the output is BUY, but I would like SELL to be returned

Console.WriteLine(tradeType);

Console.ReadKey();
}
}
public class ExecutionClass
{
private TradeType TradeType { get; set; }
public ExecutionClass(ref TradeType someValue)
{
TradeType = someValue;
}
public void Run()
{
TradeType = TradeType.SELL;
}
}
public enum TradeType
{
BUY,
SELL
}

一种选择是将枚举包装在一个类中,并将一个实例传递给构造函数(这是一个引用),然后类中的任何更改将反映在

之外。
class Program
{
static void Main(string[] args)
{
TradeTypeWrapper tradeType = new TradeTypeWrapper(TradeType.BUY);
ExecutionClass ex = new ExecutionClass(tradeType);

ex.Run();

Console.WriteLine(tradeType.Value); // will output SELL

Console.ReadKey();
}
}
public class ExecutionClass
{
private TradeTypeWrapper tradeType{ get; set; }
public ExecutionClass(TradeTypeWrapper someValue) // no need for ref - class instances are references
{
tradeType = someValue;
}
public void Run()
{
tradeType.Value = TradeType.SELL;
}
}
public class TradeTypeWrapper
{
public TradeTypeWrapper(TradeType initialValue)
{
Value = initialValue;
}
public TradeType Value { get; set; }
}
public enum TradeType
{
BUY,
SELL
}

另一种选择是通过ref将枚举值传递给Run方法本身,这就不需要包装器类,可能更适合您。

public class Program
{
public static void Main()
{
ExecutionClass ex = new ExecutionClass();

var tradeType = TradeType.BUY;
ex.Run(ref tradeType);

Console.WriteLine(tradeType); // will output SELL
}
}

public class ExecutionClass
{
public ExecutionClass()
{
}
public void Run(ref TradeType someValue)
{
someValue = TradeType.SELL;
}
}
public enum TradeType
{
BUY,
SELL
}

最后一个选项是将TradeTypeenum(如您所拥有的,但没有ref)传递到您的类中,并让Run酌情返回TradeType的更新值

相关内容

  • 没有找到相关文章

最新更新