首页 > 解决方案 > 错误:与 C# 代码中先前错误相关的符号位置

问题描述

using System;

public class Student 
{
  string name;         
  int age;   
  
  public string inputName()    
  {
    Console.WriteLine("Enter name :"); 
    string name= Console.Readline();
    return name;
  }
  
  public void showName(string name){
      Console.WriteLine(name);
  }
  
  static void Main(string[] args)
  {
    Student myObj = new Student();
    string name=myObj.inputName();
    myObj.showName(name);
  }
}

无法理解上述代码中的错误之处。我想通过 C# 类中的方法将学生的姓名和年龄作为输入,然后使用另一种方法进行打印。我在想我将在 main() 中创建一个对象并从 main 调用 getter 和 setter 函数。最初,我猜测是 Console.Readline() 导致了问题,因此尝试查看我是否忘记了要为 Readline() 导入的任何库,但无法成功获取此原因背后的原因。我对c#完全陌生,请帮忙。注意:我正在为上面的 C# 代码使用在线编译器,所以如果这个错误是特定于这种情况的,请告诉我。

标签: c#functionclassobjectoop

解决方案


main 方法不能在 Student 类中

public static void Main(string[] args)
{
    
}
public class Student 
{

}

以下错误:

Student myObj = new Student(); // is correct, creates an instance
string name=myObj.inputName(); // semantic error
myObj.showName(name);

在这里,您声明一个新字符串并为其分配输入名称函数。其中的 inputName() 本身是正确的,但您可能打算将名称分配给对象字段string name;

所以以下

public string inputName()
    {
        Console.WriteLine("Enter name :");
        string name = Console.Readline();
        return name;
    }

需要

public void inputName()
    {
        Console.WriteLine("Enter name :");
        string name = Console.ReadLine();
        this.name = name;
    }

返回类型从字符串更改为 void,因为它不需要返回值。this.name = name 将输入分配给对象上的名称字段。

功能

public void showName(string name)
    {
        Console.WriteLine(name);
    }

也是语义错误。没有功能错误,但您不需要参数。(string name) 是函数的输入,如果要显示对象的当前名称,则可以在此处使用不带任何参数的返回类型。

public string showName()
    {
        return name;
    }

所以最终的修订是

public class Program
{

public static void Main(string[] args)
{
    Student myObj = new Student();
    myObj.inputName();
    Console.WriteLine(myObj.showName());
}

public class Student
{
    string name;
    int age;
    public void inputName()
    {
        Console.WriteLine("Enter name :");
        string name = Console.ReadLine();
        this.name = name;
    }

    public string showName()
    {
        return name;
    }
}
}

推荐阅读