将classname作为返回类型的方法

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

() { //do any thing return ; } 

在上面的例子中,我多次在使用等,但很自然这些也是用户定义的类型。 所以这也应该在这里。 但是,当我们使用“类名”代替字符串或任何数据类型时,从来没有站在这里发生的事情?

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

 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?)*/; } } 

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

所以如果我们有一个Triangle 和一个方法 GetTriangle ,它有参数 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; } 

我们可以使用truefalse的参数调用GetTriangle ,如下所示:

 Triangle blueTriangle = GetTriangle(true); Triangle redTriangle = GetTriangle(false); 

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

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