0

我一直在阅读一些关于属性和类变量的教程,我知道如果你设置一个类变量(在下面的例子中,bar)然后你可以调用一个类型来将该对象转换为一个特定的变量(我做了在下面的示例中不要这样做,只是为了澄清)。但是,如果您使用同一个类变量,其中已经存储了一个对象来调用方法,会发生什么?参考下面的示例,“ok”会被传递给方法,还是被忽略?我尝试通过这个编译器运行它,但它似乎没有问题,但我不确定它是否真的对对象栏设置为做任何事情。谢谢您的帮助!

public class Foo
{

    public static void Main()
    {
        Foo bar = new Foo();
        object ok = "ok";
        bar = (Foo)ok;
        bar.genericMethod();
    }

    public void genericMethod()
    {
    }

}
4

2 回答 2

5

不,这不对。不确定“类变量”是什么意思 - 你这里有两个局部变量,类型Fooobject. 第二种方法无法访问它们,因为它们对于第一种方法是本地的。如果您希望第二种方法具有访问权限,那么您必须执行以下两项操作之一:将其中一项作为参数传递给第二种方法(例如,将其定义为 as void genericMethod(Foo foo)),或者将其中一个变量声明为字段,在类级别的两种方法之外。

您的代码将编译,但会在运行时失败bar = (Foo)ok。尽管原则上可以将 an 强制object转换为 a Foo(因为 aFoo 是 an object),但实际上并非如此,并且强制强制转换失败 object

于 2012-07-12T15:51:28.847 回答
1

它会抛出一个运行时异常,尽管它可以编译。阅读有关强制转换和类型转换的更多信息。

于 2012-07-12T15:49:40.067 回答