Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以classname作为返回类型的方法_C#_Methods - Fatal编程技术网

C# 以classname作为返回类型的方法

C# 以classname作为返回类型的方法,c#,methods,C#,Methods,我是c#或任何编程语言的新手。 当我看到c语言中的代码时,我发现这里有很多混淆。我想从这里澄清其中一个问题。 方法采用通用结构 <modifier><return type><method name>() { //do any thing return <abc which should same as return type which declared above>; } 在GetStockData方法中,返回类型为StockData,即必须

我是c#或任何编程语言的新手。 当我看到c语言中的代码时,我发现这里有很多混淆。我想从这里澄清其中一个问题。 方法采用通用结构

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

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

所以如果我们有一个
三角形
和一个方法
GetTriangle
,它有参数
是蓝色的

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;
}
我们可以使用参数
true
false
调用
GetTriangle
,如下所示:

Triangle blueTriangle = GetTriangle(true);

Triangle redTriangle = GetTriangle(false);
GetTriangle
的两个结果都是
Triangle
s,即使它们包含不同的数据(在本例中是不同的
颜色


就像儿童的木块玩具一样,编译器检查数据的“形状”,而不是它的颜色。因此,如果你试图从一个返回三角形的方法中返回一个正方形,那么编译器就会抛出一个错误,就像你不能把一个正方形块放入三角形孔一样。

我不明白?您能澄清一下吗?请添加您不清楚的特定代码示例。不确定这是否是您要问的,但我认为您的困惑在于泛型如何工作。一个方法只能有一个返回类型<代码>字符串
是一种类型<代码>列表
完全是另一种类型<代码>列表是另一种类型,依此类推。因此,不应在方法定义中再次标记泛型类型,因为它们已经创建了一个类型。您的方法
public stockData getStockData(string Symbol)
正常。您将其定义为返回
stockData
,因此只需返回
stockData
对象即可。例如:
publicstockdata getStockData(stringsymbol){stockData thing=newstockdata();thing.stockName=Symbol;returnthing;}
no,这实际上不是。我修改了我的问题。也许很容易让我感到困惑。
Triangle blueTriangle = GetTriangle(true);

Triangle redTriangle = GetTriangle(false);