澄清使用类变量?

时间:2012-07-12 15:47:23

标签: c# class variables

我一直在阅读有关属性和类变量的一些教程,我理解如果你设置一个类变量(在下面的例子中,bar),那么你可以调用一个类型来将这个对象强制转换为一个特定的变量(我在下面的例子中没有这样做,只是为了澄清)。但是,如果您使用同一个类变量,并且已经存储了一个对象来调用方法,会发生什么?参考下面的例子,将“ok”传递给方法,还是简单地忽略它?我尝试运行这个虽然这个编译器,但它似乎没有问题,但我不确定它是否实际上做任何与对象栏设置为。谢谢你的帮助!

public class Foo
{

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

    public void genericMethod()
    {
    }

}

2 个答案:

答案 0 :(得分:5)

不,不是。不确定“类变量”的含义 - 这里有两个局部变量,类型Fooobject。第二种方法既不能访问它们,也不能访问第一种方法。如果您希望第二种方法具有访问权限,则必须执行以下两种操作之一:将一个参数作为参数传递给第二个方法(因此将其定义为void genericMethod(Foo foo)),或者声明其中一个方法变量作为字段,而不是在类级别的两个方法之外。

您的代码将编译,但在运行时将在bar = (Foo)ok行失败。虽然原则上可以将object转换为Foo(因为Foo object),但在实践中 object不是,并且演员表失败。

答案 1 :(得分:1)

它将抛出一个运行时异常,虽然它编译了事件。详细了解casting and type conversions