我收到了“在InfoPeople中使用未分配的变量”。我不确定为什么,我的班级被设置为教科书中的例子。有人会对此有所了解吗?感谢。
class personInfo
{
public string fName;
public string lName;
public int personID;
}
class Program
{
static void Main(string[] args)
{
personInfo InfoPeople;
InfoPeople.fName = "jeff";
Console.WriteLine("the fName is: " + " " + InfoPeople.fName);
}
}
答案 0 :(得分:9)
您尚未初始化您的实例:
personInfo InfoPeople = new personInfo();
我会尝试遵循C#样式类型/外壳约定:
PersonInfo infoPeople = new PersonInfo();
答案 1 :(得分:5)
您需要new
像这样的对象实例:
personInfo InfoPeople = new personInfo();
这只是用于创建新对象实例的C#语法。
答案 2 :(得分:5)
它不起作用,因为InfoPeople
是一个包含对personInfo
的引用的变量,但您实际上从未创建过personInfo
。
通过说:
来修复它personInfo InfoPeople = new personInfo();
顺便说一下,你的命名惯例不是很传统。人们通常是 PascalCase 类名和 camelCase 变量。尝试遵循该约定,以便您的代码更容易理解。
答案 3 :(得分:4)
在C#中,必须在使用之前为本地变量赋值 - 局部变量不默认任何东西(甚至不是默认值)键入!)。
正如其他人所指出的那样,正确的解决方案可能会使用new personInfo()
。但是,只需将null
分配给InfoPeople
变量(使用它的上方)将消除编译时错误(并在运行时获得NullReferenceException
; - )< / p>
(也就是说,编译器错误与包含“无效”值的InfoPeople
无关 - 它只关心先前已分配某个值。)
快乐的编码。
额外提示:
// C# allows one to instantiate a new object
// and assign members at the same time.
personInfo InfoPeople = new personInfo {
fName = "jeff",
};
答案 4 :(得分:2)
在main()函数中更改第一行,如下所示。您使用“personInfo InfoPeople
”语句指定了对象类型,但未分配内存。使用'new()'关键字执行此操作时,它实际上会在内存中创建对象,这就是错误。
personInfo InfoPeople = new personInfo()
答案 5 :(得分:1)
您声明名为personInfo
的{{1}}类型的局部变量,但在尝试使用它之前,您不会为其指定值。编译器可以证明这一点,因此它会抱怨。很简单。
答案 6 :(得分:1)
必须实例化personInfo的实例
class personInfo
{
public string fName;
public string lName;
public int personID;
}
class Program
{
static void Main(string[] args)
{
personInfo InfoPeople = new personInfo();
InfoPeople.fName = "jeff";
Console.WriteLine("the fName is: " + " " + InfoPeople.fName);
}
}
答案 7 :(得分:0)
您没有将InfoPeople设置为personInfo的新实例:
personInfo InfoPeople = new personInfo();
答案 8 :(得分:0)
你不需要将其实例化为新的吗?
答案 9 :(得分:0)
“New personInfo”您必须从类
实例化对象