-4

我有一个返回对象的方法。如果我返回一个对象,那么它将给出类的完全限定名称。但我想返回对象的数据成员。

public GetDetails GetInfo()
{
    GetDetails detail = new GetDetails("john", 47);
    return detail;
}

public override string ToString()
{
    return this.Name + "|" + this.Age;
}

我重写了ToString()获取detail对象数据成员的方法。但它不起作用。我怎样才能做到这一点?

4

2 回答 2

1

你所要求的不起作用,因为detail它是一个私有变量并且在GetInfo()方法的范围内。因此,无法从该方法外部访问它。

很难猜测这两种方法的上下文是什么;但是,我假设您应该在类中保留状态以允许detailToString()方法中呈现。

这个例子可能不是一个完美的解决方案,但它会解决你的问题:

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();
    }
}
于 2015-03-05T23:32:17.890 回答
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();
}
于 2015-03-05T04:53:22.530 回答