C# 在公共静态文件中将字符串转换为int
大家好,我这里有一些问题,然后我在private void中将string转换为int它工作得很好,但是我尝试在public global上转换它,它显示错误,有什么办法可以修复它吗 “DB2.Form2.global.a”由于其保护级别而不可访问 非静态字段、方法或属性“DB2.Form2.global.a”需要对象引用 非静态字段、方法或属性“DB2.Form2.label4”需要对象引用C# 在公共静态文件中将字符串转换为int,c#,C#,大家好,我这里有一些问题,然后我在private void中将string转换为int它工作得很好,但是我尝试在public global上转换它,它显示错误,有什么办法可以修复它吗 “DB2.Form2.global.a”由于其保护级别而不可访问 非静态字段、方法或属性“DB2.Form2.global.a”需要对象引用 非静态字段、方法或属性“DB2.Form2.label4”需要对象引用 a未定义为全局静态变量 重新定义为公共静态int a如果不先实例化对象,就无法从类访问字段,除非该字段
a
未定义为全局静态变量
重新定义为
公共静态int a代码>如果不先实例化对象,就无法从类访问字段,除非该字段是静态的,并且该字段是可访问的。您的int在全局类中是私有的
将其更改为public和static a不是静态的和公共的。因此,要么将其公开为静态,要么实例化该类并使用该实例访问
无法在类外访问专用字段。a
在类外不可见global
,您应该将其公开:
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 );
}
由于global
类未标记为static
,因此您可以将其设置为static或创建global
的实例
public int a = Convert.ToInt32(str);
或者当不使其成为静态时(但a
必须是公共的):
此外:
- 类别应该大写
var myGlobal = new global();
int x = myGlobal.a;
- 公共属性/字段也是如此:
public class Global { ... }
变量a
是私有的,因此不能在类外访问,而且它被声明为实例成员而不是静态成员
您需要根据您发布的代码使用情况将其声明为publicstaticinta
您的类定义应该如下所示
public int A = 1;
public string Str = "";
第一个错误由于其保护级别不可访问
原因,因为您将a
声明为private
第二个错误非静态字段、方法或属性需要对象引用
,原因是您试图以静态成员身份访问实例成员。要实现什么dpo?您的int a=private。公开。你需要回到起点,了解类和对象、访问修饰符以及static
的含义。这里没有一个答案可以教你这一点(不管他们是否让你的代码编译)。你不能从类的外部访问私有类私有元素…它是私有的。public static只应用于字符串,而不应用于类级别private的int。这段代码有很多问题,转换只是其中之一。为什么你认为你可以从一个叫做label
的任意变量中分配public static string str
?它是一个静态类,所以他不需要实例化它。它不是一个静态类,变量a
肯定不是静态的……你是对的。它是唯一一个静态变量。在我看来,这两个类都应该是变量。是的,这个类还有其他问题,但这是一个单独的问题。@SriramSakthivel很好。删除了那个部分。总的来说,OOP的概念在这里被忽略了,甚至我也忽略了c的概念#
public int A = 1;
public string Str = "";
private class global
{
public static string str = label4.Text;
public static int a;
a = Convert.ToInt32(str);
}