2011-08-28 193 views
0

我有不能指定公共变量类

我有这样定义它的形式加载

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; 

    } 
} 

,但我得到了这条线的误差var关键字的问题

public Var a;

类型或命名空间名称“变种”无法定义

我可以界定公共类varaible,这样我可以访问该类这一切的方法呢?

回答

3

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

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

+0

其变化如int a; –

+1

那么为什么不直接声明'int a;'呢? – BoltClock

+0

不,我想从linq查询中获取数据...所以结果会像这样.. var a =从xyz到aks.members那样...所以我想我们可以改变这种类型的操作...... –

2

你必须改用具体类型变种 - 例如“字符串”,“INT”,...

这是因为“VAR”只是语法suggar。 compliler干涉具体类型并插入它而不是var。在你的情况下,这是不可能的,因为编译器看起来不像form_load - 它只是查看“=”后面的表达式作为一个方面说明:你不应该定义字段为公共的。将它们设为私有,并为它们定义公共访问者或公共属性。通过这种方式,您不会将内部实现细节泄露给外部世界,如果您稍后想要更改此实现细节,则不会遇到任何问题。

0

如果你想它,你必须将其声明为特定类型的公众(而不是局部)变量,例如“串”,“廉政”或selfwritten类有一个隐含的

0

变量类型var必须在方法范围声明。

0

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

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

只有在方法范围内声明的变量可以有一个隐式类型变种

当你需要这个LINQ查询,您可以指定显式类型公共变量(在函数内部)运行查询的地方。例如,

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

MyPublicVariable可能是一个枚举。

+0

我的不好。请参阅编辑的答案。 – loxxy