gpt4 book ai didi

c# - 将 null 作为默认参数传递以避免使用参数

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:22 32 4
gpt4 key购买 nike

我创建了一个函数来一次设置一个对象的多个属性。如果某个参数未传递给函数,那么我想避免设置/更改它。我能想到的最干净的解决方案的一个简化示例是:

private void setObjectProperties(MyObject myObject, float param1, bool? param2 = null)
{
myObject.param1 = param1;
myObject.param2 = param2 != null ? (bool)param2 : myObject.param2;
}

正如您从这个方法中看到的,如果在没有传递 param2 的情况下调用该函数,那么它只会将 myObject.param2 设置为其自身。 (这意味着如果没有任何内容传递给 param2,那么 myObject.param2 属性将保持不变)

我所拥有的似乎有点乱。我不确定这是否是“正确”的做法。我考虑过方法重载,但我认为这会更加困惑;在现实世界的情况下,我传递了两个以上的要设置的参数,所以我最终可能会遇到很多重载。

我是否遗漏了 C# 中一些明显的功能,这些功能允许我说“如果没有向它的相应参数传递任何内容,则不要设置此参数”?

最佳答案

Am I missing some obvious functionality in C# that allows me to say "Don't set this parameter if nothing is passed to it's corresponding argument"?

不是一个圆滑的运算符(operator),但显然你可以做到

if(param2.HasValue) myObject.param2 = (bool)param2;

唯一真正的区别是,如果您的 setter 中有任何逻辑,那么在这种情况下,如果参数为 null,则不会调用它。

关于c# - 将 null 作为默认参数传递以避免使用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993335/

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