从一种方法访问字符串变量到另一种方法

时间:2017-04-06 11:08:16

标签: c#

    public static void Introduction{

        Console.WriteLine("Welcome");

        string MyName = "";

        Console.Write("What's your name ? : ");
            MyName = Console.ReadLine();
        Console.WriteLine("Hey {0},welcome to the quiz! ", MyName);

        Console.ReadLine();
     }
    //Quiz introduction

public static void FstQuestion(){

     //code

    if(...)
     {
     Console.WriteLine(" That's correct,{0} ! ",MyName);
     }

     else
        Console.WriteLine(" Keep trying,{0} ",MyName);

}

所以我想在c#中进行测验,但是,我希望问题有不同的方法。正如你所看到的,我想用一个用户的名字保存一个变量,并在需要的时候使用它。问题是我不知道如何从另一种方法调用/使用字符串。任何提示都有帮助!谢谢!

5 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题。根据您的示例技术,您将编程程序。 (这是一个好的开始)

您可以从第一种方法返回名称并将其传递给另一种方法。

所以我们从容易开始:

 public static void Main()
 {
    Console.WriteLine("Welcome");

    // ask for the name and assign the return value to the local variable `myName`  
    string myName = AskName();

    Console.WriteLine("Hey {0},welcome to the quiz! ", myName);

    // enter the first question, pass the variable `myName` as parameter.
    FstQuestion(myName);
 }

 public static string AskName()  // <- notice the return type `string` instead of `void`
 {
    Console.Write("What's your name ? : ");
    string myName = Console.ReadLine();

    // this will return the value of `myName` to the caller.
    return myName;
 }

 //Quiz introduction

public static void FstQuestion(string myName)  // <-- notice the parameter
{
     //code

    if(...)
     {
     Console.WriteLine(" That's correct,{0} ! ",myName);
     }

     else
        Console.WriteLine(" Keep trying,{0} ",myName);
}

下一课:课程和字段

答案 1 :(得分:0)

请查看“Variable types and scopes

我建议您在编程之前阅读C#教程。这将帮助你掌握基本的东西..

答案 2 :(得分:0)

您的问题可以通过以下方式解决(其中一些可能在乍看之下显得讽刺):

  1. 将您的变量作为参数发送到您的方法(标准的,广泛使用的,通用解决方案)。
  2. 使用在任何方法之外声明的全局变量,因此所有方法都可以访问。
  3. 将变量值保存到磁盘文件/系统注册表/应用程序设置。从每个方法中读取。
  4. 写入和阅读剪贴板。
  5. 使用在线备份服务将其存储在云中。使用他们的API来获取每种方法中的值。
  6. 在每种方法中询问用户名。

答案 3 :(得分:0)

MyName提取为静态字段(在您当前的代码MyName中是本地变量,这就是为什么超越FstQuestion())中的范围

 private static string MyName = "";

 ...

 public static void Introduction{
    Console.WriteLine("Welcome");

    Console.Write("What's your name ? : ");

    MyName = Console.ReadLine();

    Console.WriteLine("Hey {0},welcome to the quiz! ", MyName);

    Console.ReadLine();
 }

 ...

 public static void FstQuestion() {
   //code

   if (...) {
     Console.WriteLine(" That's correct,{0} ! ",MyName);
   }
   else
     Console.WriteLine(" Keep trying,{0} ",MyName);
   ... 

答案 4 :(得分:0)

在您的Program.cs中,您将拥有:

public class Program{

    public static void main(){
        /*...*/
    }
}

您想要在您的班级中添加一个实例变量,以便在您的班级实例存在的时间内,您可以从班级内部(或从班级外部访问),但我等待那个)所以:

    public class Program{

        private static string MyName;

        public static void main(){
            /*...*/
            MyName = Console.ReadLine()
        }

        public static void FstQuestion(){

        //code

        if(...)
        {
            Console.WriteLine(" That's correct,{0} ! ", MyName);
        }

        else
        {
            Console.WriteLine(" Keep trying,{0} ", MyName);
        }
    }