我有一个返回对象的方法。如果我返回一个对象,那么它将给出一个完全限定的类名。但我想返回对象的数据成员。
public GetDetails GetInfo()
{
GetDetails detail = new GetDetails("john", 47);
return detail;
}
public override string ToString()
{
return this.Name + "|" + this.Age;
}
我重写ToString()
方法以获取detail
对象的数据成员。但它没有用。我怎样才能做到这一点?
答案 0 :(得分:1)
您要求的内容不起作用,因为detail
是一个私有变量,并且在GetInfo()
方法的范围内。因此,无法从此方法外部访问它。
很难猜出这两种方法的背景是什么;但是,我认为您应该在班级中保持状态,以允许detail
方法呈现ToString()
。
此示例可能不是一个完美的解决方案,但它可以解决您的问题:
class MySpecialDetails
{
// declare as private variable in scope of class
// hence it can be accessed by all methods in this class
private GetDetails _details; // don't name your type "Get..." ;-)
public GetDetails GetInfo()
{
// save result into local variable
return (_details = new GetDetails("john", 47));
}
public override string ToString()
{
// read local variable
return _details != null ? _details.Name + "|" + _details.Age : base.ToString();
}
}
答案 1 :(得分:0)
您可以创建字符串扩展方法。
public static string StringExtension(this GetDetails input)
{
return input.Name + "|" + input.Age;
}
此静态方法通常位于静态类中。 然后你会这样称呼它
public string GetInfo()
{
GetDetails detail = new GetDetails("john", 47);
return detail.ToString();
}