说明使用类变量?

问题描述:

我一直在浏览一些关于属性和类变量的教程,我明白如果你设置了一个类变量(在下面的例子中,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

您已经编写了代码。为什么不尝试运行它? – 2012-07-12 15:50:07

不,不是。不知道你的意思是“类变量” - 你在这里有两个局部变量,类型Fooobject。第二种方法不能访问它们,因为它们是第一种方法的本地方法。如果您希望第二种方法有权访问,则必须执行以下两项操作之一:将一个参数作为参数传递给第二种方法(例如,将其定义为void genericMethod(Foo foo)),或将其中一个变量声明为取而代之的是在课程级别的两种方法之外的字段

您的代码将被编译,但在运行时会在线路bar = (Foo)ok处失败。虽然在原则上有可能投的objectFoo(因为Fooobject),在实践中object没有了,转换失败。

+0

啊,这有助于清理很多东西,谢谢! – Ari 2012-07-12 15:54:21

它会抛出一个运行时异常事件,虽然它编译。阅读更多关于casting and type conversions