gpt4 book ai didi

.NET:bool vs enum 作为方法参数

转载 作者:行者123 更新时间:2023-12-04 10:31:48 25 4
gpt4 key购买 nike

每次我编写一个采用表示选项的 bool 参数的方法时,我发现自己在想:“我应该用一个枚举替换它,这样可以更容易地阅读方法调用吗?”。

考虑以下带有参数的对象,该参数告诉实现是否应该使用其线程安全版本(我不是在这里问这种方式是否是好的设计,只是使用 bool 值):

public void CreateSomeObject(bool makeThreadSafe);
CreateSomeObject(true);

当调用在声明旁边时,参数的目的当然很明显。当它在您几乎不知道的某个第三方库中时,与以下相比,很难立即看到代码的作用:
public enum CreationOptions { None, MakeThreadSafe }
public void CreateSomeObject(CreationOptions options);
CreateSomeObject(CreationOptions.MakeThreadSafe);

它更好地描述了意图。

当有两个 bool 参数表示选项时,情况会变得更糟。看看 ObjectContext.SaveChanges(bool) 发生了什么在框架 3.5 和 4.0 之间。它已经过时了,因为已经引入了第二个选项并且整个东西已经被转换为一个枚举。

虽然在存在三个或更多元素时使用枚举似乎很明显,但您对在这些特定情况下使用枚举而不是 bool 值有什么看法和经验?

最佳答案

.NET 4.0 在这里可能会有所帮助。您可以使用命名参数:

CreateSomeObject(makeThreadSafe : true);

对于旧版本,创建临时变量可能很有用。
bool makeThreadSafe = true;
CreateSomeObject(makeThreadSafe);

关于.NET:bool vs enum 作为方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com