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

时间:2013-04-10 21:23:33

标签: c# list variables object

我正在尝试与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;
         }
    }
    

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

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

1 个答案:

答案 0 :(得分:0)

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

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

另外,在出现问题之前,不要过于担心优化它。 尝试来破解它,但不要修复它,除非它对大数据集显而易见。