gpt4 book ai didi

c# - 使用舒适的代码为结构上的数组赋值

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

这个想法很简单。为商店的“部门”创建一个结构,为其提供一个用于命名的变量(一个名为“部门”的字符串)和一个数组以保存在该部门完成的所有购买。

现在,我希望每次我要保存对特定部门的购买时,它都会根据部门名称和购买金额自动应用折扣。

现在,示例类:

class Program
{
struct Departments
{
public string Department;
private double[] _buys;

public double[] Buys
{
get { return _buys; }
set
{
if (value > 100)
{
if (Department == "CLOTH")
_buys = value * .95;
if (Department == "FOOD")
_buys = value * .90;
if (Department == "OTHER")
_buys = value * .97;
}
_buys = value;
}
}
}

static void Main()
{
var departments = new Departments[3];
departments[0].Department = "CLOTH";
departments[1].Department = "FOOD";
departments[2].Department = "OTHER";
departments[0].Buys = new double[5];
departments[0].Buys[0] = 105;
}
}

请注意 departments[0].Buys[0] = 105 这行,这就是我想要保存购买的东西的方式,“代码简单”...

现在,请注意该结构的属性 Buys,它是一个“数组属性”。然后,当我使用 value > 100 条件时,它给出了一个明显的错误,无法从 double 转换为 double[]

问题...我如何为 value > 100 编写正确的条件,为了实现此目的还必须在结构上添加什么?

我尝试过使用“Indexers”,但只要我尝试过,我就无法通过右侧的 departments[0].Buys[0] = 105 进行分配方式。

请注意,我想保留此模式,特别是为了便于简单地说 departments[0].Buys[0] = 105 来购买

编辑:

前面的结构“部门”仅用于示例目的。我不会回答关于通过另一种方式使它拥有正确的“部门”的问题,我想要一个关于如何使 set 参数在数组的各个元素上工作的答案

最佳答案

另一个可能的解决方案是为 _buys 数组创建另一个类:

class Buys
{
private double[] _buys;

public Buys (int capacity)
{
_buys = new double[capacity];
}

public double this[int index]
{
get { return _buys; }
set
{
if (value > 100)
{
if (Department == "CLOTH")
value = value * .95;
if (Department == "FOOD")
value = value * .90;
if (Department == "OTHER")
value = value * .97;
}
_buys = value;
}
}
}

struct Departments
{
public string Department;
public Buys Buys;
}

static void Main()
{
var departments = new Departments[3];
departments[0].Department = "CLOTH";
departments[1].Department = "FOOD";
departments[2].Department = "OTHER";
departments[0].Buys = new Buys(5);
departments[0].Buys[0] = 105;
}

关于c# - 使用舒适的代码为结构上的数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021995/

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