C#如果返回类型是" object"?如何知道方法返回什么?

时间:2018-02-24 13:46:08

标签: c# object

那么我怎么知道具有对象返回类型的方法会发生什么。 例如:

START:M

此方法被标记为返回对象的方法。但在其中你可以看到它返回一个字符串文字。 IntelliSense甚至不会显示它返回字符串它只知道该方法正在返回一个对象。在这种情况下你做了什么?

字符串文字来自哪里?它们来自System.Object还是来自" System.String"?因为返回System.Object没有的东西似乎不合逻辑。 (在这种情况下为字符串文字)

3 个答案:

答案 0 :(得分:2)

当方法返回object时,您无法对返回值的类型做出任何假设。即使您知道当前实现返回string,也无法在没有强制转换的情况下在返回结果上调用string方法。

如果你想对作为对象返回的字符串进行操作,请在检查后强制转换它们,比如

object obj = ReturnSth();
string str = obj as string;
if (str != null) {
    Console.WriteLine(str.Length);
}

在C#7中,您还可以在类型上使用模式匹配:

switch (ReturnSth()) {
    case string str:
        Console.WriteLine(str.Length);
    break;
    ...
}

答案 1 :(得分:1)

  

我如何知道具有对象返回类型的方法会发生什么。

您希望它返回类型object以及类型提供的

这是"表面合同"您定义的返回值。

在您的情况下,这意味着您无法使用任何string特定的返回值方法,而无需明确的向下转发。

答案 2 :(得分:0)

您是否尝试过在Visual Studio中编写代码? IDE会在编译时为您提供错误。