System.NullReferenceException:'你调用的对象是空的。'

合法模因

成员
已加入
五月5,2019
留言内容
13
编程经验
Beginner
对不起,如果我很傻,我只是福彩12选5走势图初学者。

我正在尝试制作福彩12选5走势图简单的程序,它真的没有用吗?如果我运行该应用程序,但它只会显示并停止:
System.NullReferenceException
HResult=0x80004003
Message=你调用的对象是空的。
Source=ConsoleApp1
StackTrace:
在C:\ Users \ Gebruiker \ source \ repos \ ConsoleApp1 \ ConsoleApp1 \ Program.cs:Line 61的ConsoleApp1.Program.CarMakerMaker(Int32插槽)处
在C:\ Users \ Gebruiker \ source \ repos \ ConsoleApp1 \ ConsoleApp1 \ Program.cs:line 44中的ConsoleApp1.Program.CarMakerMenu()中
在C:\ Users \ Gebruiker \ source \ repos \ ConsoleApp1 \ ConsoleApp1 \ Program.cs:Line 14的ConsoleApp1.Program.Main(String [] args)中

这是代码:
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        private static bool display = true, slotsChanged = false;
        static void Main(string[] args)
        {
            CarMakerMenu();
        }

        public static void CarMakerMenu()
        {
            string[] availible = new string[10];
            if (slotsChanged == false)
            {
                availible[0] = "availible";
                availible[1] = "availible";
                availible[2] = "availible";
                availible[3] = "availible";
                availible[4] = "availible";
                availible[5] = "availible";
                availible[6] = "availible";
                availible[7] = "availible";
                availible[8] = "availible";
                availible[9] = "availible";
            }
            while (display == true)
            {
                Console.WriteLine("Welcome to car manager!");
                Console.WriteLine("\nPick a slot \n1 {0}, \n2 {1}, \n3 {2}, \n4 {3}, \n5 {4}, \n6 {5}, \n7 {6}, \n8 {7}, \n9 {8}, \n10 {9}\nOr type 0 to exit\n",
                    availible[0], availible[1], availible[2], availible[3], availible[4], availible[5], availible[6], availible[7], availible[8], availible[9]);
                int chosenSlot = Convert.ToInt32(Console.ReadLine());

                if (chosenSlot >= 1 || chosenSlot <= 10)
                {
                    slotsChanged = true;
                    chosenSlot = chosenSlot - 1;
                    CarMakerMaker(chosenSlot);
                    chosenSlot = 0;
                }
                if (chosenSlot == 0)
                {
                    break;
                }
                else
                {
                    Console.WriteLine("Please enter a valid number");
                    return;
                }
            }
        }
        public static void CarMakerMaker(int slot)
        {
            Car[] myCar = new Car[10];
            myCar[slot].Make = "test";
            myCar[slot].Model = "test";
            myCar[slot].Year = 1043;
            myCar[slot].Color = "test";

            Console.WriteLine("{0}\n{1}\n{2}\n{3}", myCar[slot].Make, myCar[slot].Year, myCar[slot].Model, myCar[slot].Color);
            Console.ReadLine();
        }

    }

    class Car
    {
        public string Make { get; set; }
        public string Model { get; set; }
        public int Year { get; set; }
        public string Color { get; set; }

    }
}

谢谢你的帮助!
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
您必须先创建并分配Car对象,然后才能使用它。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
不,这里您要创建福彩12选5走势图数组,该数组可以容纳10个Car对象。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
行时不要创建新的Car对象
C#:
Car[] myCar = new Car[10];
gets executed?
我有点困惑。
如果您制作福彩12选5走势图鸡蛋纸箱,是否意味着它装满了鸡蛋?
 

合法模因

成员
已加入
五月5,2019
留言内容
13
编程经验
Beginner
如果您制作福彩12选5走势图鸡蛋纸箱,是否意味着它装满了鸡蛋?
不,这里您要创建福彩12选5走势图数组,该数组可以容纳10个Car对象。
这些是我收到的最模糊的答复,请您解释一下您的意思吗?

编辑:
我不是在这里开车吗?
C#:
            myCar[slot].Make = "test";
            myCar[slot].Model = "test";
            myCar[slot].Year = 1043;
            myCar[slot].Color = "test";

我正在尝试学习课程,但我并不真正理解某些部分。您能否详细解释一下,我将不胜感激。
 
Last edited:

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
就像创建新数组一样,使用new关键字创建福彩12选5走势图新的Car对象。在这里,您可以将阵列视为可以在其中停放汽车的车库 :)
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,567
地点
悉尼,澳大利亚
编程经验
10+
这些是我收到的最模糊的答复,请您解释一下您的意思吗?
您现在可能已经明白了我的意思,但是,以防万一,我是说拥有福彩12选5走势图鸡蛋纸箱并不意味着您里面有鸡蛋,就像拥有福彩12选5走势图Car阵列并不意味着您里面有Cars。就像福彩12选5走势图鸡蛋纸箱一样,数组只是福彩12选5走势图容器,上面有放置特定数量对象的位置。您仍然必须将那些对象放在那里。

您基本上可以将数组的每个元素都视为福彩12选5走势图变量。就像Car变量默认情况下为Nothing一样,您将必须使用New关键字来创建要分配给它的汽车,因此您需要对数组的每个元素都这样做。
 
最佳 底部