Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法指定公共变量类_C#_.net - Fatal编程技术网

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
,我想他没有意识到。