在公共静态中将字符串转换为int

本文关键字:字符串 转换 int 静态 | 更新日期: 2023-09-27 18:03:14

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在私人void它工作得很好,但后来我试图转换它在公共全局它显示错误,任何想法如何修复它?

DB2.Form2.global。A '由于其保护级别

而无法访问

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

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

在公共静态中将字符串转换为int

aglobal类之外不可见,您应该将其设置为public:

public int a  = Convert.ToInt32(str);

由于global类没有标记为static,您可以将其设置为静态或创建global的实例。

private static class global
{
    public static int a = ...
}

或者当它不是静态的(但a必须是公共的):

var myGlobal = new global();
int x = myGlobal.a;

此外:

  • 类必须大写

    public class Global { ... }
    
  • 同样适用于公共属性/字段:

    public int A = 1;
    public string Str = "";
    

a没有被定义为全局静态变量。

重新定义为public static int a;

如果不首先实例化对象,则不能从类中访问字段,除非该字段是静态的并且该字段是可访问的。

你的int是私有的int是你的全局类。

将其改为public和static。

a不是静态的和公共的。因此,要么将其设置为公共静态,要么将类实例化并使用实例访问a。

私有字段不能在类外访问

变量a是私有的,因此不能在类外访问,而且它被声明为实例成员而不是静态成员。

您需要根据您发布的代码使用将其声明为public static int a

你的类定义应该像
private class global
{
    public static string str = label4.Text;
    public static int a;
    a = Convert.ToInt32(str);
}

第一个错误是is inaccessible due to its protection level,因为您将a声明为私有。

第二个错误An object reference is required for the non-static field, method, or property,因为您试图访问一个实例成员作为静态成员。