@Nikita07

Почему появлется ошибка «Ссылка на объект не указывает на экземпляр объекта.»?

Добрый вечер, подскажите пожалуйста в чем ошибка, по заданию надо создать два класса (все поля и конструкторы созданы по заданию, большее количество не допускается) и вывести всю информацию на экран
using System;
class Person
{
    private string _name;
    private string _surname;
    private string _patronymic;
    private int _age;

    // Конструктор по умолчанию
    public Person()
    {
        _name = null; _surname = null; _patronymic = null; _age = 0;
    }

    // Конструктор с 4 параметрами
    public Person(string n, string s, string p, int a)
    {
        _name = n; _surname = s; _patronymic = p; _age = a;
    }

    // Установка возраста
    public int Age
    {
        set
        {
            if (value >= 0 & value <= 200) _age = value;
            else Console.WriteLine("Ошибка при вводе возроста");
        }
        get { return _age; }
    }

    // Установка имени
    public string Name
    {
        set
        {
            if (value.Length < 20) _name = value;
            else Console.WriteLine("Длина строки должна быть меньше 20 символов");
        }
        get { return _name; }
    }

    // Установка фамилии
    public string Surname
    {
        set
        {
            if (value.Length < 20) _surname = value;
            else Console.WriteLine("Длина строки должна быть меньше 20 символов");
        }
        get { return _surname; }
    }

    // Установка отчества
    public string Patronymic
    {
        set
        {
            if (value.Length < 20) _patronymic = value;
            else Console.WriteLine("Длина строки должна быть меньше 20 символов");
        }
        get { return _patronymic; }
    }

    // Метод для вывода информации
    public void Person_Info()
    {
        Console.WriteLine("Фамилия: {0} \nИмя: {1} \nОтчество: {2} \nВозраст: {3}", Surname, Name, Patronymic, Age);
    }
}
using System;
// Перечисление
enum Brand_Car { Ford }

class Car
{
    private Person driver;
    private Brand_Car brand;
    private string number;

    // Конструктор по умолчанию
    public Car()
    {
        driver = null; brand = 0; number = null;
    }

    // Конструктор с 2 параметрами
    public Car(Brand_Car b, string n)
    {
        brand = b;
        number = n;
    }

    // Вывод марки автомобиля
    public Brand_Car BrandCar
    {
        get { return brand; }
    }

    public Person PR { get; set; }

    // Вывод номера автомобиля
    public string Number_Car
    {
        get { return number; }
    }

    // Установка данных водителя
    public string Driver_Info(string name_driver, string surname_driver, string patronymic_driver)
    {
        string Full_Name_Driver;
        driver.Name = name_driver; driver.Surname = surname_driver; driver.Patronymic = patronymic_driver;

        Full_Name_Driver = driver.Name + driver.Surname + driver.Patronymic;
        return Full_Name_Driver;
    }

    // Установка возроста водителя
    public int Driver_Age(int DriverAge)
    {
        if (DriverAge >= 18) driver.Age = DriverAge;
        else
        {
            Console.WriteLine("Ошибка, водитель не может быть младше 18 лет");
            return 0;
        }
        return driver.Age;
    }

    // Метод для вывода информации
    public void Full_Driver_Info()
    {
        Console.WriteLine("Марка автомобиля: {0} \nНомер автомобиля: {1} \n\nФИО водителя: {2}", BrandCar, Number_Car, Driver_Info("ИМЯ","ФАМИЛИЯ","ОТЧЕСТВО"));
    }
    static void Main()
    {
        Person OBJ_Person = new Person();
        Person OBJ_Person2 = new Person("ИМЯ","ФАМИЛИЯ","ОТЧЕСТВО",25);
        OBJ_Person2.Person_Info();

        Car OBJ_Car = new Car(Brand_Car.Ford, "A123BB");
        OBJ_Car.Full_Driver_Info();
    }
}

Но после выполнения программа выдает такую ошибку5c51c73ae694b325778755.png

При откладке ошибка возникает в этом кусоке кода
public string Driver_Info(string name_driver, string surname_driver, string patronymic_driver)
{
string Full_Name_Driver;
driver.Name = name_driver;
типа driver.Name имеет значение null
  • Вопрос задан
  • 2623 просмотра
Решения вопроса 1
типа driver.Name имеет значение null

А типа где-то в приведенном коде выставляется другое значение?
Неуд только лишь за инициализацию переменных null'ом. Используйте String.Empty. Проверяйте значение переменных на нулл до попыток произвести какие-то действия с ними. Значение переменной == null - исключительная ситуация.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы