C# 在公共静态文件中将字符串转换为int

C# 在公共静态文件中将字符串转换为int,c#,C#,大家好,我这里有一些问题,然后我在private void中将string转换为int它工作得很好,但是我尝试在public global上转换它,它显示错误,有什么办法可以修复它吗 “DB2.Form2.global.a”由于其保护级别而不可访问 非静态字段、方法或属性“DB2.Form2.global.a”需要对象引用 非静态字段、方法或属性“DB2.Form2.label4”需要对象引用 a未定义为全局静态变量 重新定义为公共静态int a如果不先实例化对象,就无法从类访问字段,除非该字段

大家好,我这里有一些问题,然后我在private void中将string转换为int它工作得很好,但是我尝试在public global上转换它,它显示错误,有什么办法可以修复它吗

“DB2.Form2.global.a”由于其保护级别而不可访问

非静态字段、方法或属性“DB2.Form2.global.a”需要对象引用

非静态字段、方法或属性“DB2.Form2.label4”需要对象引用


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);
}