2011-07-15 30 views
2

我有一个类:ç性能#返回串联

public class LabOccurrenceForm 
{   
    public DateTime Occurrence_Date { get; set; } 
    public string Cup_Type { get; set; } 
    public string Analytical_Testing_Phase { get; set; } 
    public string Area { get; set; } 
    public string Preanalytical_Before_Testing { get; set; } 
    public string Postanalytical_After_Testing { get; set; } 
    public string Other { get; set; } 
    public string Practice_Code { get; set; } 
    public string Comments { get; set; } 
} 

我想补充的类中的方法,将串联所有的变量是这样的:

public string AllData 
{ 
    return Occurrence_Date.ToString() + " " + 
    Cup_Type + " " + 
    Analytical_Testing_Phase + " " + 
    Area + " " + 
    Preanalytical_Before_Testing + " " + 
    Postanalytical_After_Testing + " " + 
    Other + " " + 
    Practice_Code + " " + 
    Comments; 
} 

这不起作用因为它想要获得或设置。我究竟做错了什么?我怎样才能解决这个问题?

+0

错误 get或set访问预计\t它不会建立 –

回答

11

因此,使它成为一个属性,并给它一个get ...

public string AllData 
{ 
    get 
    { 
     return Occurrence_Date.ToString() + " " + 
     Cup_Type + " " + 
     Analytical_Testing_Phase + " " + 
     Area + " " + 
     Preanalytical_Before_Testing + " " + 
     Postanalytical_After_Testing + " " + 
     Other + " " + 
     Practice_Code + " " + 
     Comments; 
    } 
} 

或使其方法...

public string AllData() 
{ 
    return Occurrence_Date.ToString() + " " + 
    Cup_Type + " " + 
    Analytical_Testing_Phase + " " + 
    Area + " " + 
    Preanalytical_Before_Testing + " " + 
    Postanalytical_After_Testing + " " + 
    Other + " " + 
    Practice_Code + " " + 
    Comments; 
} 

或覆盖ToString(),而不是(这有点有道理在这种情况下)

public override string ToString() 
{ 
    return Occurrence_Date.ToString() + " " + 
    Cup_Type + " " + 
    Analytical_Testing_Phase + " " + 
    Area + " " + 
    Preanalytical_Before_Testing + " " + 
    Postanalytical_After_Testing + " " + 
    Other + " " + 
    Practice_Code + " " + 
    Comments; 
} 
+0

+1很好的答案。只是为了澄清,'AllData'不是一种方法 - 它是一个属性。 http://msdn.microsoft.com/en-us/library/x9fsa0sw(v=vs.80).aspx – Milimetric

+3

@Milimetic - 它可以在这一点上做成。用户现在什么也没有,因为它甚至没有有效的代码。 –

2
public string AllData 
{ 
    get 
    { 
     return Occurrence_Date.ToString() + " " + 
     Cup_Type + " " + 
     Analytical_Testing_Phase + " " + 
     Area + " " + 
     Preanalytical_Before_Testing + " " + 
     Postanalytical_After_Testing + " " + 
     Other + " " + 
     Practice_Code + " " + 
     Comments; 
    } 
} 

您需要在班级中使用返回。它不能单独存在。

+0

您需要在答案编辑器中使用格式代码示例按钮,以便您的代码正确显示。 –

1

如果你正在尝试创建一个方法,你必须声明它是一个方法:public string AllData()你声明它的方式,编译器认为你正在尝试创建一个属性,因此它希望你提供一个方法get{}声明。

在任何一种情况下,这只是一个小小的改变 - 创建一个方法,只需在方法名称末尾加上括号即可。如果你想要一个属性,只需在开头添加get{,在实际代码的末尾添加},这样你就可以很好地完成任务。

用法不远处不同的两种:方法:string allData = lab.AllData()或财产string allData = lab.AllData

您也可以考虑只是在你的类中重写的ToString()。

1

您应该添加只读字段是这样的:

public string AllData 
{ 
    get 
    { 
     return Occurrence_Date.ToString() + " " + 
       Cup_Type + " " + 
       Analytical_Testing_Phase + " " + 
       Area + " " + 
       Preanalytical_Before_Testing + " " + 
       Postanalytical_After_Testing + " " + 
       Other + " " + 
       Practice_Code + " " + 
       Comments; 
    } 
} 
2

获得更好的性能,请尝试:

public string AllData 
{ 
    get 
    { 
     return string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8}", 
      Occurrence_Date.ToString(), 
      Cup_Type, 
      Analytical_Testing_Phase, 
      Area, 
      Preanalytical_Before_Testing, 
      Postanalytical_After_Testing, 
      Other, 
      Practice_Code, 
      Comments); 
    } 
} 

public string AllData 
{ 
    get 
    { 
     StringBuilder sb = new StringBuilder(); 

     sb.AppendFormat({0} ", Occurrence_Date.ToString()); 
     sb.AppendFormat({0} ", Cup_Type); 
     sb.AppendFormat({0} ", Analytical_Testing_Phase); 
     sb.AppendFormat({0} ", Area); 
     sb.AppendFormat({0} ", Preanalytical_Before_Testing); 
     sb.AppendFormat({0} ", Postanalytical_After_Testing); 
     sb.AppendFormat({0} ", Other); 
     sb.AppendFormat({0} ", Practice_Code); 
     sb.AppendFormat({0}", Comments); 

     return sb.ToString(); 
    } 
} 
5

既然你想所有性能 - 更多使用反射简洁:

public string GetAllData() 
{ 
    return string.Join(" ", typeof(LabOccurrenceForm).GetProperties().Select(x => x.GetValue(this, null))); 
} 
+1

适用于LINQ解决方案 –