在C#中创建一个类,使用未分配的变量

时间:2011-04-11 18:52:00

标签: c#

我收到了“在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);
        }
    }

10 个答案:

答案 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”您必须从类

实例化对象