gpt4 book ai didi

c# - 如何防止默认参数覆盖分配的值?

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:48 26 4
gpt4 key购买 nike

这是我的代码:一种更改 PC 部件的方法。

internal void ModifyPC(double CPU_Clockspeed = 0, int RAM = 0, int storage = 0, int graphicsMemory = 0)
{
this.CPU_Clockspeed = CPU_Clockspeed;
this.RAM_capacity = RAM;
this.storage = storage;
this.graphicsCardCapacity = graphicsMemory;
}

如何只更改单个变量值而不用默认值覆盖其他值?

例如,我创建了一台配备 4.0 Ghz CPU、16GB RAM、250GB 存储空间和 8GB 显卡的 PC。 台式电脑 = new Desktop(4.0, 16, 250, 8);

例如,如果我尝试将 CPU 更改为 4.5 Ghz:PC.ModifyPC(CPU_Clockspeed: 4.5);,这会将所有其他属性覆盖为 0。

最佳答案

默认全部为Nullable<>并且只在不为空时赋值

internal void ModifyPC(
double? CPU_Clockspeed = null, int? RAM = null, int? storage = null, int? graphicsMemory = null)
{
this.CPU_Clockspeed = CPU_Clockspeed.GetValueOrDefault(this.CPU_Clockspeed);
this.RAM_capacity = RAM.GetValueOrDefault(this.RAM_capacity);
this.storage = storage.GetValueOrDefault(this.storage);
this.graphicsCardCapacity = graphicsMemory.GetValueOrDefault(this.graphicsCardCapacit);
}

现在只有传递值的参数才会被设置

关于c# - 如何防止默认参数覆盖分配的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56453145/

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