如何使函数修改变量C#

时间:2014-09-24 18:00:08

标签: c# function variables scope

嗨,我对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;
    }

3 个答案:

答案 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;

一样简单