C# 从 public 静态 class 调用 public 字段
C# calling public fields from a public static class
我使用VBA多年后才开始学习C#,我不是专业人士,这是我闲暇时做的事情。我正在寻找复制使用 public 变量的逻辑,该变量可以从方法访问并在每次单击按钮 cmdPublicVartest 时递增 1,下面是我到目前为止的代码,但出现错误
非静态字段、方法或publicvar 属性、需要对象引用class,它看起来是因为它是静态 class,但是如果我从静态 class 中删除它,我将不得不在按钮 cmdPublicVartest 上调用 class 的实例。有没有办法让 publicvar 保持静态 class,这样我就不必在按钮上创建 class 的实例?
namespace testDB
{
public partial class Database : Form
{
public string publictest = "public test";
public int pUblicint = 0;
public static void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
testDB.Database.PublicVar();
}
}
}
虽然 PublicVar()
是静态的,但它引用的字段(publictest
、pUblicint
)不是。您还必须使它们成为静态的或使 PublicVar()
不是静态的。
只需将您的代码修改为:
namespace testDB
{
public partial class Database : Form
{
public string publictest = "public test";
public int pUblicint = 0;
public void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
PublicVar();
}
}
}
您不能从静态方法访问非静态字段,因为它们属于 class 的一个实例,并且在调用静态方法时您没有实例。
您可以像这样将字段设为静态
public partial class Database : Form
{
public static string publictest = "public test";
public static int pUblicint = 0;
public static void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
testDB.Database.PublicVar();
}
}
或者像这样使方法成为非静态方法
public partial class Database : Form
{
public string publictest = "public test";
public int pUblicint = 0;
public void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
PublicVar();
}
}
我使用VBA多年后才开始学习C#,我不是专业人士,这是我闲暇时做的事情。我正在寻找复制使用 public 变量的逻辑,该变量可以从方法访问并在每次单击按钮 cmdPublicVartest 时递增 1,下面是我到目前为止的代码,但出现错误 非静态字段、方法或publicvar 属性、需要对象引用class,它看起来是因为它是静态 class,但是如果我从静态 class 中删除它,我将不得不在按钮 cmdPublicVartest 上调用 class 的实例。有没有办法让 publicvar 保持静态 class,这样我就不必在按钮上创建 class 的实例?
namespace testDB
{
public partial class Database : Form
{
public string publictest = "public test";
public int pUblicint = 0;
public static void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
testDB.Database.PublicVar();
}
}
}
虽然 PublicVar()
是静态的,但它引用的字段(publictest
、pUblicint
)不是。您还必须使它们成为静态的或使 PublicVar()
不是静态的。
只需将您的代码修改为:
namespace testDB
{
public partial class Database : Form
{
public string publictest = "public test";
public int pUblicint = 0;
public void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
PublicVar();
}
}
}
您不能从静态方法访问非静态字段,因为它们属于 class 的一个实例,并且在调用静态方法时您没有实例。
您可以像这样将字段设为静态
public partial class Database : Form
{
public static string publictest = "public test";
public static int pUblicint = 0;
public static void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
testDB.Database.PublicVar();
}
}
或者像这样使方法成为非静态方法
public partial class Database : Form
{
public string publictest = "public test";
public int pUblicint = 0;
public void PublicVar()
{
MessageBox.Show(publictest + pUblicint);
pUblicint++;
}
private void cmdPublicVartest_Click(object sender, EventArgs e)
{
PublicVar();
}
}