RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 909782
Accepted
corocoto
corocoto
Asked:2020-11-22 01:06:47 +0000 UTC2020-11-22 01:06:47 +0000 UTC 2020-11-22 01:06:47 +0000 UTC

如何修复“对象引用不指向对象的实例”错误[重复]

  • 772
这个问题已经在这里得到了回答:
什么是 NullReferenceException,如何修复代码? (2 个回答)
3年前关闭。

调用Input方法时,出现“对象引用不指向对象的实例”的错误,它引用了一个数组。带有错误的代码和屏幕截图如下所示。

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

namespace CarAndBus
{
    class tCar
    {
        public double x { get; set; }
        public double y { get; set; }
        public double r { get; set; }
        public tCar(double x, double y)
        {
            this.x = x;
            this.y = y;
            //Output();
        }
        public virtual void Move(double ed, double a)
        {
            this.r = a * Math.PI / 180;
            this.x = this.x + ed * Math.Cos(r);
            this.y = this.y + ed * Math.Sin(r);
            Output();
        }
        public virtual void Output()
        {
            Console.WriteLine($"x= {this.x,2:f2} y= {this.y,2:f2}");
        }
    }
    class tBus : tCar
    {
        public string[] passengers { get; set; }
        public double money { get; set; }
        public double moneyPassengers { get; set; }
        public int capacity { get; set; }
        public tBus(double x, double y, int capacity) : base(x,y)
        {
            this.money = 0;
            this.capacity = capacity;
            string[] passengers = { };
        }
        public override void Move(double ed, double a)
        {
            this.r = a * Math.PI / 180;
            this.x = this.x + ed * Math.Cos(r);
            this.y = this.y + ed * Math.Sin(r);

            for (int i=0; i<this.passengers.Length; i++)
            {
                switch (this.passengers[i])
                {
                    case "обычный":
                        this.money+= 2*ed;
                        break;
                    case "студент":
                        this.money= 1.25*ed;
                        break;
                }

            }
            this.Output();

        }
        public override void Output()
        {
            Console.WriteLine($"x= {this.x,2:f2} y= {this.y,2:f2}\nКол-во пассажиров: {this.passengers.Length}\nКол-во полученных денег: {this.money,6:f2}\nВместимость автобуса: {this.capacity}");
        }
        public void Input(int people)
        {
            if (this.passengers.Length + people <= this.capacity)
            {
                for (int i = 0; i < people; i++)
                {
                    Console.Write($"Выберите тип {i + 1}-го вошедшего пассажира: 1-обычный 2-студент ");
                    int type = Convert.ToInt32(Console.ReadLine());
                    int countOfArr = this.passengers.Length;
                    switch (type)
                    {
                        case 1:
                            this.passengers[countOfArr] = "обычный";
                            break;
                        case 2:
                            this.passengers[countOfArr] = "студент";
                            break;
                    }
                }
                this.Output();
            }
            else
            {
                Console.Write("Недостаточно мест в автобусе");
            }
        }

        public void Exit(int passengers)
        {

            if (this.passengers.Length - passengers > 0)
            {
                for (int i = 0; i < passengers; i++)
                {
                    int []indexes = { this.passengers.Length - i };
                    this.passengers = (from x in this.passengers where !(from y in indexes select this.passengers.ElementAt(y)).Contains(x) select x).ToArray();
                }
                this.Output();
            }else
            {
                Console.Write("Количество человек в автобусе меньше, чем то значение, которое вы передаете в параметре");
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            tBus Bus = new tBus(0, 0, 50);
            Bus.Input(2);
            Bus.Move(20, 45);
            Bus.Exit(3);
            Bus.Exit(1);
            Bus.Move(20, 135);
            Bus.Move(20, 225);
            Bus.Move(20, 315);
            Console.ReadKey();
        }
    }
}

在此处输入图像描述

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Grundy
    2020-11-22T01:12:58Z2020-11-22T01:12:58Z

    在构造函数中,不是初始化字段,而是passengers初始化一个局部变量。

    该字段仍然存在null,因此当您尝试从中获取时Length,会发生指示的错误。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5