我在使用 VBA 多年后才开始学习 C#,我不是专业人士,这是我在闲暇时做的事情。我希望复制使用可以从方法访问的公共变量的逻辑,每次单击按钮 cmdPublicVartest 时都会增加一个,以下是我到目前为止的代码,但出现错误 publicvar 类中的非静态字段、方法或属性需要对象引用,它看起来是因为它是一个静态类,但是如果我从一个静态类,我必须在按钮 cmdPublicVartest 上调用该类的实例。有没有办法让 publicvar 保持静态类,这样我就不必在按钮上创建类的实例?
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();
}
}
}
答案 0 :(得分:1)
您不能从静态方法访问非静态字段,因为它们属于类的一个实例,并且在调用静态方法时您没有实例。
您可以像这样将字段设为静态
if ($result->num_rows > 0)
while($guest = $result->fetch_assoc()) {
{?>
<div class="posts-container">
<div class="post-header">
<div class="user-details">
<div class="user-name"><?php echo $guest["firstName"] ?></div>
<div class="user-email"></div>
</div>
<div class="time"></div>
</div>
<div class="post-message">
<h3></h3>
<p></p>
</div>
</div>
<?php } ?>
或者像这样使方法非静态
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();
}
}
答案 1 :(得分:0)
只需将您的代码修改为:
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();
}
}
}
答案 2 :(得分:-1)
虽然 PublicVar()
是静态的,但它引用的字段 (publictest
, pUblicint
) 不是。您也必须将它们设为静态或将 PublicVar()
设为非静态。