首页 文章

从public static中的字符串转换为int [关闭]

提问于
浏览
-4
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 回答

  • 0

    变量 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 .

  • 0

    a 在类 global 之外是不可见的,你应该公开它:

    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 = "";
    
  • 0

    a 未定义为全局静态变量 .

    将其重新定义为 public static int a;

  • 0

    如果没有首先实例化对象,则无法从类访问字段,除非该字段是静态的并且该字段是可访问的 .

  • 0

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

    将其更改为public和static .

  • 2

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

    私人领域不能在课外访问 .

相关问题