嗨,我对C#和一般编程非常陌生。我试图将基于文本的冒险游戏作为我的第一个非制导项目。我正在将所有攻击/伤害卷分类为函数。但我无法获得修改变量的功能。
有谁知道我如何能够获得一个全局修改变量的功能。
示例代码
class Program
{
public static int var = 10;
static void Main(string[] args)
{
Maths();
Console.WriteLine(var);
}
static void Maths()
{
int var = 12;
}
}
在这个例子中,我想要修改" var"打印为12但是#34; var"打印为10。
这是我想要在这个原则中使用的实际代码。
class Program
{
//Char Stats
static int playerMaxHealth = 50;
static int playerHealth = 40;
static int playerAttack = 10;
static int playerLevel = 1;
//Temp Stats
public static int attackRoll;
//Enemy Stats
static int enemyMaxHealth;
static int enemyHealth;
static int enemyAttack;
//Declar Random
static Random randomObject = new Random();
static void Main(string[] args)
{
attackRollFunc();
Console.WriteLine(attackRoll);
while(true)
{
if (playerHealth <= 0)
death();
}
}
public static int attackRollFunc()
{
int attackRoll = randomObject.Next(playerAttack);
Console.WriteLine(attackRoll);
return attackRoll;
}
答案 0 :(得分:7)
在代码中
static void Maths()
{
int var = 12;
}
您正在声明名为var
的新本地变量。这与您尝试修改的var
字段无关。
如果您从方法中移除int
部分,它将执行您期望的操作:
static void Maths()
{
var = 12;
}
答案 1 :(得分:4)
此代码:
static void Maths()
{
int var = 12;
}
声明一个名为var
的新整数仅在此方法中可见。这里的var
与此处声明的var
不同:
public static int var = 10;
如果您从int
方法中移除Maths
,则您将有效地使用在班级顶部声明的var
。
答案 2 :(得分:3)
您的方法是创建一个新的局部变量,该变量恰好与静态字段具有相同的名称,并将其初始化为值。您需要简单地访问现有字段而不声明新值。这样做就像从方法体中删除int
并编写var = 12;
。