C#上全局变量的使用

本文关键字:全局变量 | 更新日期: 2023-09-27 18:27:55

所以我不知道C#的术语。我想做的是我有2个静态空隙

    static void SelectProduct() {
        double moneyamount = 0;
        int selection = int.Parse(Console.ReadLine());
        if (selection == 1) {
            moneyamount = 1.50;       
        }
        else {
            Console.WriteLine("Wrong Selection");
        }
        Console.WriteLine("Your drink costs $" + moneyamount);
        InsertCoin();
    }
    static void InsertCoin() {
        Console.WriteLine("Balance of cost $" + moneyamount);
    }

我的问题是我想在InsertCoin void中使用moneyamount。当我在下课后分配双倍金额时,会出现错误。我不能退还金额,因为它是静态的。我必须使用静态,因为我需要回忆它。那么在这种情况下我该怎么办呢?

C#上全局变量的使用

也许也可以让你的moneyamount保持静态。

static double moneyamount = 0;
static void SelectProduct() {
    moneyamount = 0;
    int selection = int.Parse(Console.ReadLine());
    if (selection == 1) {
        moneyamount = 1.50;       
    }
    else {
        Console.WriteLine("Wrong Selection");
    }
    Console.WriteLine("Your drink costs $" + moneyamount);
    InsertCoin();
}
static void InsertCoin() {
    Console.WriteLine("Balance of cost $" + moneyamount);
}

您有两个选项

选项1:将moneyAmount作为参数传递给InsertCoin(),即

static void InsertCoin(double moneyAmount)...

然后从SelectProduct将其称为

InsertCoin(moneyAmount);

选项2:简单地将全局变量声明为静态,即

static double moneyAmount = 0;
static void SelectProduct()...
static void InsertCoin()...

这里有两个选项。您可以将moneyamount定义为2个方法之外的全局变量,并使其可用于两个方法,也可以像以前一样声明它,然后将其传递给InsertCoin方法。

场景1:

static double moneyamount = 0;
static void SelectProduct()
{
     int selection = int.Parse(Console.ReadLine());
     if (selection == 1)
     {
          moneyamount = 1.50;
     }
     else
     {
          Console.WriteLine("Wrong Selection");
     }
     Console.WriteLine("Your drink costs $" + moneyamount); 
}
static void InsertCoin()
{
     Console.WriteLine("Balance of cost $" + moneyamount);
}

场景2:

static void SelectProduct()
{
     double moneyamount = 0;
     int selection = int.Parse(Console.ReadLine());
     if (selection == 1)
     {
          moneyamount = 1.50;
     }
     else
     {
          Console.WriteLine("Wrong Selection");
     }
     Console.WriteLine("Your drink costs $" + moneyamount);
     InsertCoin(moneyamount);
}
static void InsertCoin(double moneyamount)
{
     Console.WriteLine("Balance of cost $" + moneyamount);
}

我希望这能有所帮助。如果你需要更多的帮助,就大声喊。

您可以将参数传递给方法。请在谷歌上搜索"c#函数语法"

 static void InsertCoin(double moneyAmount) 
 {          
   Console.WriteLine("Balance of cost $" + moneyamount);     
 } 

在类中而不是在类方法中声明moneyamount,并使其成为static。这样,同一类中的静态方法就可以访问静态变量moneyamount

将该方法声明为static意味着该方法是一个类的一部分,并且可以直接从另一个类访问。如果没有static,它们将成为对象实例的一部分,并且可以通过对象进行访问。因此,一个静态方法访问一个静态变量:

static string fooString;
static void FooMethod()
{
    fooString = "foo"
}

您可以创建MoneyAmount 的静态属性

static double MoneyAmount
{get; set;}
static void SelectProduct() 
{
    MoneyAmount= 0;
    int selection = int.Parse(Console.ReadLine());
    if (selection == 1) {
        MoneyAmount = 1.50;       
    }
    else {
        Console.WriteLine("Wrong Selection");
    }
    Console.WriteLine("Your drink costs $" + MoneyAmount);
    InsertCoin();
}
static void InsertCoin() 
{
    Console.WriteLine("Balance of cost $" + MoneyAmount);
}

或者您可以将参数设置为InsertCoin()

static void SelectProduct() 
{
    double moneyamount = 0;
    int selection = int.Parse(Console.ReadLine());
    if (selection == 1) {
        moneyamount = 1.50;       
    }
    else {
        Console.WriteLine("Wrong Selection");
    }
    Console.WriteLine("Your drink costs $" + moneyamount);
    InsertCoin();
}
static void InsertCoin(double moneyamount) 
{
    Console.WriteLine("Balance of cost $" + moneyamount);
}

另一方面;

我无法返回moneyamount,因为它是静态

你为什么不能那样做?

static double SelectProduct()
{
...
return moneyamount;
}