private class global
{
public static string str = label4.Text;
int a = Convert.ToInt32(str);
}
private void button8_Click(object sender, EventArgs e)
{
string myString = label4.Text;
int Val = Int32.Parse(myString);
dataGridView1.Rows.Add(label2.Text, Val * global.a );
}
大家好,我在这里有一些问题,然后我将字符串转换为int在私有空它工作正常,但后来我尝试在公共全局转换它显示错误,任何想法如何解决它?
DB2.Form2.global.a'由于其保护级别而无法访问非静态字段,方法或属性'DB2.Form2.global.a需要对象引用非静态需要对象引用字段,方法或属性'DB2.Form2.label4
6 回答
变量
a
是私有的,因此无法在类外部访问,而且它被声明为实例成员而不是静态成员 .您需要根据发布的代码使用情况将其声明为
public static int a
你的类定义应该是这样的
第一个错误
is inaccessible due to its protection level
原因是因为您将a
声明为私有 .由于您尝试以静态成员身份访问实例成员而导致的第二个错误
An object reference is required for the non-static field, method, or property
.a
在类global
之外是不可见的,你应该公开它:由于
global
类未标记为static
,因此您可以将其设置为静态或创建global
的实例 .或者当不使它静止时(但
a
必须公开):此外:
a
未定义为全局静态变量 .将其重新定义为
public static int a;
如果没有首先实例化对象,则无法从类访问字段,除非该字段是静态的并且该字段是可访问的 .
你的int是你的全局类的私有int .
将其更改为public和static .
a不是静态和公开的 . 因此要么将其设为公共静态,要么实例化该类并使用该实例来访问 .
私人领域不能在课外访问 .