C# 无法指定公共变量类
我对C# 无法指定公共变量类,c#,.net,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.dat
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;
}
}
但我在这条线上发现了错误
公共Var a
无法定义类型或命名空间名称“var”
我可以定义公共类变量以便访问该类中的所有方法吗?var
在C#中不同于其他语言中的var
;在C#中,使用var
让编译器为您确定某个局部变量的类型,但不能使用它声明字段/属性
您必须指定实际的类型。我不知道什么是a
,所以我不能告诉你使用什么类型;在C#中,使用var
让编译器为您确定某个局部变量的类型,但不能使用它声明字段/属性
您必须指定实际的类型。我不知道
a
是什么,所以我不能告诉您使用什么类型。您必须使用具体类型而不是var-例如“string”、“int”
这是因为“var”只是语法上的suggar。编译器会干扰具体类型,并插入它而不是var。在您的情况下,这是不可能的,因为编译器不会像加载表单那样查看-它只查看“=”后面的表达式
作为旁注:您不应该将字段定义为公共字段。使它们私有,并为它们定义公共访问器或公共属性。通过这种方式,您不会将内部实现细节泄露给外部世界,并且如果以后要更改此实现细节,也不会遇到任何问题。您必须使用具体类型而不是var-例如“string”、“int” 这是因为“var”只是语法上的suggar。编译器会干扰具体类型,并插入它而不是var。在您的情况下,这是不可能的,因为编译器不会像加载表单那样查看-它只查看“=”后面的表达式
作为旁注:您不应该将字段定义为公共字段。使它们私有,并为它们定义公共访问器或公共属性。通过这种方式,您不会将内部实现细节泄露给外部世界,并且如果以后要更改此实现细节,也不会遇到任何问题。如果要使其成为公共(而不是本地)变量,则必须将其声明为特定类型,例如“string”,“int”或自写类如果要使其成为公共(而不是局部)变量,则必须将其声明为特定类型,例如“string”,“int”或自写类具有隐式类型var的变量必须在方法范围内声明。具有隐式类型var的变量必须在方法范围内声明。公共int a我想代码>就足够了 根据,, 只有在方法范围内声明的变量才能具有隐式类型var 对于linq查询,您需要这样做,因此可以在运行查询的任何位置(在函数内部)分配显式类型的公共变量。比如说,
func()
{
var results = from p1 in phones where p1.name="abc";
MyPublicVariable = results;
}
其中MyPublicVariable可以是可枚举的。
public int a我想代码>就足够了
根据,,
只有在方法范围内声明的变量才能具有隐式类型var
对于linq查询,您需要这样做,因此可以在运行查询的任何位置(在函数内部)分配显式类型的公共变量。比如说,
func()
{
var results = from p1 in phones where p1.name="abc";
MyPublicVariable = results;
}
其中MyPublicVariable可以是可枚举的。那么为什么不直接声明它inta代码>?不,我想从linq查询中获取数据…因此结果如下..var a=来自aks中的xyz。这样的成员…因此我想为这些类型的操作使用esame varaible…然后您可以将您的私有字段声明为IEnumerable@user899271:当您说“对这些类型的操作使用相同的变量”时你知道C#是静态类型的,对吗<代码>变量
与动态
不同var
仅用于类型可立即推断但类型仍然是静态的内联代码中。您不能将变量“声明”为var
,这只是声明类型的简写,当实现类型立即可用时(在同一语句中),编译器可以推断类型。@David:从他在这里使用var
开始,我想他没有意识到。那么为什么不直接声明int a代码>?不,我想从linq查询中获取数据…因此结果如下..var a=来自aks中的xyz。这样的成员…因此我想为这些类型的操作使用esame varaible…然后您可以将您的私有字段声明为IEnumerable@user899271:当您说“对这些类型的操作使用相同的变量”时你知道C#是静态类型的,对吗<代码>变量
与动态
不同var
仅用于类型可立即推断但类型仍然是静态的内联代码中。您不能将变量“声明”为var
,这只是声明类型的简写,当实现类型立即可用时(在同一语句中),编译器可以推断类型。@David:从他在这里使用var
,我想他没有意识到。