将类名作为返回类型的方法

时间:2014-02-10 10:32:30

标签: c# methods

我是c#或任何类型的编程语言的新手。 当我在c#中看到代码时,发现这里有很多混淆。其中一个我想从这里澄清一下。 方法常见的结构是

<modifier><return type><method name>()
{
//do any thing
return <abc which should same as return type which declared above>;
}

在上述示例中,我在<return type>使用<class name><dictionary>等时多次看到过。 但自然这些也是用户定义的类型。所以这也应该在这里。但是,当我们使用“类名”代替字符串或任何数据类型时,从来没有看到实际发生的事情?

请用简单的文字和简单的例子让我理解这一点。

class StockData
{
    public int StockID { get; set; };
    public double CurrentPrice { get; set; };
    public string StockName { get; set; };
}

class GetStock
{
    public StockData /*(this is the same name which is the class name above)*/ GetStockData(string symbol)
    {
        //something
        return /*(what will be the return type?)*/;
    }
}

2 个答案:

答案 0 :(得分:1)

GetStockData方法中,返回类型为StockData,即您必须返回StockData类的实例或从StockData继承的任何子类。这取决于您的代码是在GetStockData方法中创建该实例还是从其他方法获取,但实际上该实例的类型应为StockData或从StockData继承的任何子类类。

答案 1 :(得分:1)

因此,如果我们的 Triangle方法 GetTriangle具有参数 {{1 }}

isBlue

我们可以使用public class Triangle { public string Colour { get; set; } } public Triangle GetTriangle(bool isBlue) { Triangle resultTriangle; if (isBlue) { resultTriangle = new Triangle { Colour = "Blue" }; } else { resultTriangle = new Triangle { Colour = "Red" }; } return resultTriangle; } GetTriangle这样的参数调用true,如下所示:

false

Triangle blueTriangle = GetTriangle(true); Triangle redTriangle = GetTriangle(false); 的两个结果都是GetTriangle s,即使它们包含不同的数据(在这种情况下是不同的Triangle)。

与孩子的木块玩具一样,编译器会检查数据的“形状”,而不是它的颜色。因此,如果您尝试从返回Colour的方法返回Square,则编译器将抛出错误,就像您无法在三角形孔中放置方块一样。< / p>