【问题标题】:Beginner: C# input output program issues初学者:C#输入输出程序问题
【发布时间】:2013-06-28 12:15:43
【问题描述】:

我是 C# 新手,我正在尝试让一个基本的 I/O 程序工作,以询问用户的姓名和年龄。该程序不允许我运行,因为“static void GetUserData()”部分,给出了这个错误:

Expected class, delegate, enum, interface, or struct. 
It does not like the void keyword.

GetUserData() 方法也给出错误Does not exist in current context。据我所知,这遵循 C# 中的规则,我声明了一个稍后使用的方法,并且声明是在一个类中进行的,所以应该可以吗?

谢谢大家,我把它整理好了。我完全按照书上所说的方式输入了程序,无论如何这是一个教训。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BasicConsoleIO
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("basic input output");
            GetUserData();
            Console.ReadLine();
        }
    }

    static void GetUserData()
    {
    Console.Write("please enter your name: ");
    string userName = Console.ReadLine();
    Console.Write("please enter your age: ");
    string userAge = Console.ReadLine();

    //changes echo colour
    ConsoleColor prevColor = Console.ForegroundColor;
    Console.ForegroundColor = ConsoleColor.red;

    //echo to console
    Console.WriteLine("hello {0}! Your are {1} years old.", userName, userAge);

    //Restore previous color
    Console.ForegroundColor = prevColor;
    }   
}

【问题讨论】:

  • 类方法必须定义在内部 er...类。

标签: c# input output


【解决方案1】:

GetUserData() 放入一个类中,例如你目前拥有的那个;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("basic input output");
        GetUserData();
        Console.ReadLine();
    }

    static void GetUserData()
    {
        Console.Write("please enter your name: ");
        string userName = Console.ReadLine();
        Console.Write("please enter your age: ");
        string userAge = Console.ReadLine();

        //changes echo colour
        ConsoleColor prevColor = Console.ForegroundColor;
        Console.ForegroundColor = ConsoleColor.red;

        //echo to console
        Console.WriteLine("hello {0}! Your are {1} years old.", userName, userAge);

        //Restore previous color
        Console.ForegroundColor = prevColor;
    }   
}

此外,由于它们位于相同的命名空间和类中,如果您只需要从那里使用它们,则无需将您的方法设置为静态,这完全取决于您希望如何访问它们,或者更多,你想从哪里访问它们

【讨论】:

    【解决方案2】:

    您的方法需要在一个类中,如下所示:

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("basic input output");
            GetUserData();
            Console.ReadLine();
        }
    
        static void GetUserData()
        {
            ...
        }
    }
    

    【讨论】:

    • 哦...一个放错位置的括号,因为我关闭了类并且方法必须在其中。书中的例子没有说明这一点。
    【解决方案3】:

    GetUserData() 方法超出类Program 的范围。应该是:

    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("basic input output");
                GetUserData();
                Console.ReadLine();
            }
    
            static void GetUserData() {/*code here*/}
        }
    

    【讨论】:

      【解决方案4】:

      在 C# 中,每个方法都必须一个类中。

      你已经定义了你的程序

      class Program
      {
          static void Main(string[] args)
          {
              Console.WriteLine("basic input output");
              GetUserData();
              Console.ReadLine();
          }
      }
      

      然后在右大括号之后定义GetUserData - 将其移到类定义中。

      【讨论】:

        【解决方案5】:

        方法必须在类中

        namespace BasicConsoleIO
        {
            class Program
            {
                static void Main(string[] args)
                {
                    Console.WriteLine("basic input output");
                    GetUserData();
                    Console.ReadLine();
                }
        
                static void GetUserData()
                {
                    Console.Write("please enter your name: ");
                    string userName = Console.ReadLine();
                    Console.Write("please enter your age: ");
                    string userAge = Console.ReadLine();
        
                    //changes echo colour
                    ConsoleColor prevColor = Console.ForegroundColor;
                    Console.ForegroundColor = ConsoleColor.Red;
        
                    //echo to console
                    Console.WriteLine("hello {0}! Your are {1} years old.", userName, userAge);
        
                    //Restore previous color
                    Console.ForegroundColor = prevColor;
                }
            }
        }
        

        【讨论】:

          【解决方案6】:

          基本上在 C# 中代码应该包含在一个类中。可以通过将 GetUserData() 移动到程序类来解决该错误

          class Program
          {
              static void Main(string[] args)
              {
               Console.WriteLine("basic input output");
               GetUserData();
               Console.ReadLine();
              }
          
           static void GetUserData()
            {
              Console.Write("please enter your name: ");
              string userName = Console.ReadLine();
              Console.Write("please enter your age: ");
              string userAge = Console.ReadLine();
          
              //changes echo colour
              ConsoleColor prevColor = Console.ForegroundColor;
              Console.ForegroundColor = ConsoleColor.red;
          
              //echo to console
              Console.WriteLine("hello {0}! Your are {1} years old.", userName, userAge);
          
              //Restore previous color
              Console.ForegroundColor = prevColor;
            }   
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-07
            • 1970-01-01
            • 1970-01-01
            • 2011-01-08
            • 1970-01-01
            相关资源
            最近更新 更多