0

我有以下代码。我们曾经争论过哪种方法更适合于内存性能。如果我们不使用单独的变量并使用它,它会有所作为吗?它会影响到那么这是可能的解决方案?内存性能的最佳实践

/// <summary> 
    /// Treatment Point Types 
    /// </summary> 
    public string DWTreatment 
    { 
     get 
     { 
      StringBuilder sbStatus = new StringBuilder(); 
      ......... 

     } 

     set 
     { 
      chkTreatSR.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.SR).ToString()); 
      chkTreatIT.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.IT).ToString()); 
      chkTreatEP.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.EP).ToString()); 
      chkTreatWW.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.WW).ToString()); 
      chkTreatQC.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.QC).ToString()); 

      isSelectionSetByPage = true; 
     } 
    } 

OR

/// <summary> 
    /// Treatment Point Types 
    /// </summary> 
    public string DWTreatment 
    { 
     get 
     { 
      StringBuilder sbStatus = new StringBuilder(); 
      ......... 

     } 

     set 
     { 
      var values = value.Split(','); 
      chkTreatSR.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.SR).ToString()); 
      chkTreatIT.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.IT).ToString()); 
      chkTreatEP.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.EP).ToString()); 
      chkTreatWW.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.WW).ToString()); 
      chkTreatQC.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.QC).ToString()); 

      isSelectionSetByPage = true; 
     } 
    } 

感谢。

+3

测试,测试,基准测试。这是唯一的你会得到一个具体的答案。除此之外,最佳实践问题在这里脱离主题。 – DavidG

+0

如果你编写“字符串类型”的代码,一般来说,担心性能通常有点太早了...通常,人们会期望不同的属性 - 'x.p = v; AssertTrue(x.p == v)'表示所有'v'与代码中显示的代码之间存在一些奇怪的转换,很少满足设置属性更改其值的条件。 –

+1

在我看来,第二个片段是一个不容忽视的内容。以同样的方式分割相同的字符串5次而不是1次对我来说似乎很荒谬。 – itsme86

回答

0

第二个例子的内存分配会更少,因为每次调用string.Split(,)都会分配一个新的字符串数组。

如果这是您的代码中的“热点”,您可能会考虑不调用string.Split,而是使用Regex来搜索您的枚举。