无法指定公共变量类

时间:2011-08-28 09:27:06

标签: c# .net

我对var关键字

有疑问

我已经在表单加载

中定义了它
public partial class form1 :form
{
    public var a;


    private void form1_load(object sender, eventargs e)
    {
        // i have used "a" like this....
        a = abc.members blahhhh blahhhhh
        bindingsource1.datasource = a;
        datagridview1.datasource = bindingsource1;

    }
}

但是我在这一行得到了错误

  

public Var a;

无法定义类型或命名空间名称'var'

我可以定义公共类变量,以便我可以访问该类中的所有方法吗?

5 个答案:

答案 0 :(得分:3)

C#中的{p> var与其他语言中的var不同;在C#中,您使用var让编译器为您确定某个局部变量的类型,但您不能使用它来声明字段/属性。

您必须指定实际类型。我不知道a是什么,所以我不能告诉你使用什么类型。

答案 1 :(得分:2)

您必须使用具体类型而不是var - 例如“string”,“int”,...

这是因为“var”只是句法上的含糖。 compliler干扰混凝土类型并插入而不是var。在你的情况下,这是不可能的,因为编译器看起来不会像form_load那样 - 它只是查看“=”之后的表达式

作为旁注:您不应将字段定义为公共字段。将它们设为私有,并为它们定义公共访问者或公共财产。通过这种方式,您不会将内部实现细节泄露给外部世界,如果您想稍后更改此实现细节,则不会出现任何问题。

答案 2 :(得分:0)

如果要将其设置为公共(而不是本地)变量,则必须将其声明为特定类型,例如“string”,“int”或自写类

答案 3 :(得分:0)

具有隐式类型var的变量必须在方法范围内声明。

答案 4 :(得分:0)

public int a;就足够了,我想。

按照, http://msdn.microsoft.com/en-us/library/bb383973.aspx

  

只有在方法范围声明的变量才能具有隐式类型var

当您需要这个linq查询时,您可以在运行查询的任何地方(在函数内)分配显式类型的公共变量。例如,

func()
 {
 var results = from p1 in phones where p1.name="abc";
 MyPublicVariable = results;
 }

MyPublicVariable 可以是可枚举的。