我一直在阅读有关属性和类变量的一些教程,我理解如果你设置一个类变量(在下面的例子中,bar),那么你可以调用一个类型来将这个对象强制转换为一个特定的变量(我在下面的例子中没有这样做,只是为了澄清)。但是,如果您使用同一个类变量,并且已经存储了一个对象来调用方法,会发生什么?参考下面的例子,将“ok”传递给方法,还是简单地忽略它?我尝试运行这个虽然这个编译器,但它似乎没有问题,但我不确定它是否实际上做任何与对象栏设置为。谢谢你的帮助!
public class Foo
{
public static void Main()
{
Foo bar = new Foo();
object ok = "ok";
bar = (Foo)ok;
bar.genericMethod();
}
public void genericMethod()
{
}
}
答案 0 :(得分:5)
不,不是。不确定“类变量”的含义 - 这里有两个局部变量,类型Foo
和object
。第二种方法既不能访问它们,也不能访问第一种方法。如果您希望第二种方法具有访问权限,则必须执行以下两种操作之一:将一个参数作为参数传递给第二个方法(因此将其定义为void genericMethod(Foo foo)
),或者声明其中一个方法变量作为字段,而不是在类级别的两个方法之外。
您的代码将编译,但在运行时将在bar = (Foo)ok
行失败。虽然原则上可以将object
转换为Foo
(因为Foo
是 object
),但在实践中此 object
不是,并且演员表失败。
答案 1 :(得分:1)
它将抛出一个运行时异常,虽然它编译了事件。详细了解casting and type conversions。