在c#中通过对象列表修改变量的最佳方法

本文关键字:变量 修改 最佳 方法 列表 对象 | 更新日期: 2023-09-27 18:08:45

我正试图用c#为一个项目构建一个升级系统,并且想知道什么可能是修改变量的最佳方法,通过一组自定义对象(大小可能不同),这些对象具有变量应该改变多少的信息。

一些想法突然出现在脑海中,但这是我的关注点:

  1. 第一个是通过使用属性:

    public float SomeStat{
         get{
            float modStat = 0;
            foreach(StatChanger Stat in StatChangers){
               modStat += Stat.valueChange;
            }
            return modStat;
          }
    }
    

    这将非常干净地解决我的问题,但我担心的是,当属性被访问时,例如每一帧,将有一个性能下降的项目在列表

  2. 第二个是调用一个函数来更新变量并将其存储在另一个变量中,以便每帧使用而不会导致性能下降:

    public float someStat = 10;
    public float someStatModifed;
    void UpdateStat(){
         someStatModifed = someStat;
         foreach(StatChanger Stat in StatChangers){
            someStatModifed += Stat.valueChange;
         }
    }
    

    这个可以工作,但是我可能会忘记调用它,当有多个变量需要更改时,它会变得更加混乱。

我应该使用这两者的组合还是有更好的方法?

在c#中通过对象列表修改变量的最佳方法

我不能说性能将是什么,相对于其他任何东西,但你可以使用LINQ:

someStatModifed += StatChangers.Sum(stat => stat.valueChange);

另外,在出现问题之前,不要过于担心优化它。尝试打破它,但不要修复它,除非它是明显的,即使是大数据集。