由于 int 数据类型的初始化,在 运行 时间显示的内存问题

Memory problems shown at run time because of the initialisation of an int data type

在运行程序之后我只能为第一个学生插入数据,之后它只显示我应该插入的内容,但不给我这样做的权利。没有编译错误。虽然我认为问题出在我分配变量时,但这可能是一个问题,因为我不知道是否应该用 0 初始化 int。如果我不初始化变量,我会得到很多编译错误。另外,为什么它显示带有随机数的学生 phone 号码,在我的例子中是“48”?

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

namespace CustomCollections
{
    internal class Program
    {
        string studentNumber;
        string studentName;
        string age;
        int phoneNumber;

        public static void enterData()
        {
            int studentNumber, age, phoneNumber;
            string studentName;

            Console.WriteLine("Enter Student Number:");
            studentNumber = int.Parse(Console.ReadLine());

            Console.WriteLine("Enter Name:");
            studentName = Console.ReadLine();

            Console.WriteLine("Enter Age:");
            age = int.Parse(Console.ReadLine());

            Console.WriteLine("Enter phone number:");
            phoneNumber = int.Parse(Console.ReadLine());
        }

        public static void displayData()
        {
            string studentNumber=null;
            string studentName=null;
            string age=null;
            int phoneNumber=0;

            Console.WriteLine("Student Number:{0}",studentNumber);
            Console.WriteLine("Student Name:{0}",studentName);
            Console.WriteLine("Student Age:{0}", age);
            Console.WriteLine("Student phone number:{0}",phoneNumber);
            Console.ReadKey();


        }

        public static void Main(String[] args)
        {
            string studentNumber;
            string studentName;
            string age;
            int phoneNumber;
            enterData();
            displayData();
        }

    }
}

我也会在这里显示结果:

Enter Student Number:
2
Enter Name:
seli
Enter Age:
22
Enter phone number:
2207885
Student Number:
Student Name:
Student Age:
Student phone number:48

您在四个不同的地方定义了名为 studentNumberstudentNameagephoneNumber 的变量。不同方法中同名的局部变量不代表同一个存储。为了让 enterData() 读取的值能够被 displayData() 访问,您需要将它们作为参数传递或将它们存储在 class 级别的变量中,而不是本地变量;后者将需要对您的代码进行最少的更改。

进行这些更改后...

  1. static 修饰符添加到您的字段中,以便您可以通过 static 方法访问它们。
  2. studentNumberage 字段的类型从 string 更改为 int,因为您正在将它们解析为 int
  3. enterData()displayData()、[=]中删除局部studentNumberstudentNameagephoneNumber变量30=] 方法。

...导致此代码...

internal class Program
{
    static int studentNumber;
    static string studentName;
    static int age;
    static int phoneNumber;

    public static void enterData()
    {
        Console.WriteLine("Enter Student Number:");
        studentNumber = int.Parse(Console.ReadLine());

        Console.WriteLine("Enter Name:");
        studentName = Console.ReadLine();

        Console.WriteLine("Enter Age:");
        age = int.Parse(Console.ReadLine());

        Console.WriteLine("Enter phone number:");
        phoneNumber = int.Parse(Console.ReadLine());
    }

    public static void displayData()
    {
        Console.WriteLine("Student Number:{0}", studentNumber);
        Console.WriteLine("Student Name:{0}", studentName);
        Console.WriteLine("Student Age:{0}", age);
        Console.WriteLine("Student phone number:{0}", phoneNumber);
        Console.ReadKey();
    }

    public static void Main(String[] args)
    {
        enterData();
        displayData();
    }
}

...这对我来说按预期工作。