C# 由于int数据类型的初始化,在运行时显示内存问题
在运行程序后,我只能插入第一个学生的数据,然后它只显示我应该插入的内容,但没有给我这样做的权利。没有编译错误。虽然我认为问题是当我分配变量时,这可能是一个问题,因为我不知道我是否应该用0初始化int。如果我不初始化变量,我会得到很多编译错误。另外,在我的例子中,为什么它会显示带有随机数字“48”的学生电话号码C# 由于int数据类型的初始化,在运行时显示内存问题,c#,scope,console.writeline,variable-initialization,unassigned-variable,C#,Scope,Console.writeline,Variable Initialization,Unassigned Variable,在运行程序后,我只能插入第一个学生的数据,然后它只显示我应该插入的内容,但没有给我这样做的权利。没有编译错误。虽然我认为问题是当我分配变量时,这可能是一个问题,因为我不知道我是否应该用0初始化int。如果我不初始化变量,我会得到很多编译错误。另外,在我的例子中,为什么它会显示带有随机数字“48”的学生电话号码 using System; using System.Collections; using System.Collections.Generic; using System.Linq; u
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
在四个不同的位置定义了名为
studentNumber
、studentName
、age
和phoneNumber
的变量。在不同方法中具有相同名称的局部变量并不表示相同的存储。为了让enterData()
读取的值能够被displayData()
访问,您需要将它们作为参数传递,或者将它们存储在类级别而不是本地变量中;后者需要对代码进行最少的更改
在做了这些改变之后
static
修饰符添加到字段中,以便可以从static
方法访问它们studentNumber
和age
字段的类型从string
更改为int
,因为您正在将它们解析为int
enterData()
、displayData()
和Main()
方法中删除本地studentNumber
、studentName
、age
和phoneNumber
变量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();
}
}
…这对我来说很有效。您在四个不同的位置定义了名为
studentNumber
、studentName
、age
和phoneNumber
的变量。在不同方法中具有相同名称的局部变量并不表示相同的存储。为了让enterData()
读取的值能够被displayData()
访问,您需要将它们作为参数传递,或者将它们存储在类级别而不是本地变量中;后者需要对代码进行最少的更改
在做了这些改变之后
static
修饰符添加到字段中,以便可以从static
方法访问它们studentNumber
和age
字段的类型从string
更改为int
,因为您正在将它们解析为int
enterData()
、displayData()
和Main()
方法中删除本地studentNumber
、studentName
、age
和phoneNumber
变量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();
}
}
…这对我来说就像预期的一样。您已经在四个不同的地方定义了同名的同一组变量。我对其中的两对进行了注释,并让这对变量初始化,我得到了相同的错误。即使如此,我也不认为我应该通过多次定义变量来获得运行时错误。您已经在四个不同的地方定义了同名的同一组变量。我对其中的两对进行了注释,并让这对变量初始化,我获得了相同的错误。即便如此,我不认为我应该通过多次定义变量来获得运行时错误。我完全按照你说的做了,我得到了相同的错误:输入学号:2输入姓名:seli输入年龄:22输入电话号码:072222316学号:0学名:学龄:0学生电话号码:0在我按run键后,我完成了第一个学生,但我不能添加第二个学生。它只允许我填写一名学生的数据,然后显示学生编号:0,后面是学生姓名:后面是学生年龄:0,后面是学生电话号码:0。在这之后,我需要按任意键就完成了。如果没有某种循环,你的代码只会提示输入一个学生,然后退出。它似乎正在打印这些变量的默认值。它们只被定义为字段,而不是这三种方法中的任何一种,对吗?是的,我按你说的做了,从所有这些方法中删除它们,并在内部类程序中的任何方法之前使用static编写它们。我已使用适用于我的完整代码更新了我的答案。我完全按照你说的做了,我得到了相同的错误:输入学号:2输入姓名:seli输入年龄:22输入电话号码:072222316学号:0学生姓名:学生年龄:0学生电话号码:0在我按run后,我完成了第一个学生的数据,但我无法添加第二个学生。它只允许我填写一名学生的数据,然后显示学生编号:0,后面是学生姓名:后面是学生年龄:0,后面是学生电话号码:0。在这之后,我需要按任意键就完成了。如果没有某种循环,你的代码只会提示输入一个学生,然后退出。它似乎正在打印这些变量的默认值。它们只定义为字段,不在这三个方法中的任何一个中,对吗?是的,我按照你的要求做了,从所有这些方法中删除了它们,并在内部类程序中的任何方法之前用static编写它们。我已经用适用于我的完整代码更新了我的答案。