Абстрактный класс. Object reference not set to an instance of an object. - C#
Формулировка задачи:
Не работает поиск по заданной дате... Ругается вот на эту строчку:
в main()
Пишет вот это:
прикладываю текстовый файл, который считывается в программе
foreach (klient kl in res)
Object reference not set to an instance of an object.
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Text.RegularExpressions; namespace ConsoleApplication15 { class Program { static void Main(string[] args) { klient[] k = read(); foreach (klient kl in k) { kl.show(); Console.WriteLine("-----------------------"); } klient[] res = null; Console.WriteLine("Введите нужную вам дату:"); string b = Console.ReadLine(); foreach (klient kl in res) { kl.show(); Console.WriteLine("-----------------------"); } Console.ReadKey(); } static klient[] read() { StreamReader fr = new StreamReader("file.txt", Encoding.GetEncoding(1251)); string str = fr.ReadToEnd(); string[] s = str.Split('\n'); klient[] kl = new klient[s.Length / 2]; Regex r1=new Regex("vklad"); Regex r2 = new Regex("kredit"); Regex r3 = new Regex("organiz"); for(int i=0; i<s.Length; i+=2) { if (r1.IsMatch(s[i])) kl[i / 2] = new vklad(s[i + 1]); if (r2.IsMatch(s[i])) kl[i / 2] = new kredit(s[i + 1]); if (r3.IsMatch(s[i])) kl[i / 2] = new organiz(s[i + 1]); } fr.Close(); return kl; } static klient[] search(string a) { klient[] kl = read(); int n=0, count = 0; for(int i=0; i < kl.Length;++i) if (kl[i].Data() == a) { ++n; } klient[] result = new klient[n]; for (int i=0; i < kl.Length; ++i) if (kl[i].Data() == a) { result[count] = kl[i]; ++count; } return result; } } } public abstract class klient { public abstract void show(); public abstract string Data(); protected string name; protected string data; protected int razmer; protected int procent; } public class vklad : klient { public vklad(string s) { string[] values = s.Split(Convert.ToChar(9)); this.name = values[0]; this.data = values[1]; this.razmer = Convert.ToInt32(values[2]); this.procent = Convert.ToInt32(values[3]); } public override void show() { Console.WriteLine("Фамилия: {0}", name); Console.WriteLine("Дата открытия вклада: {0}", data); Console.WriteLine("Размер вклада: {0}", razmer); Console.WriteLine("Процент: {0}", procent); } public override string Data() { return data; } } public class kredit : klient { private int ostatok; public kredit(string s) { string[] values = s.Split(Convert.ToChar(9)); this.name = values[0]; this.data = values[1]; this.razmer = Convert.ToInt32(values[2]); this.procent = Convert.ToInt32(values[3]); this.ostatok = Convert.ToInt32(values[4]); } public override void show() { Console.WriteLine("Фамилия: {0}", name); Console.WriteLine("Дата выдачи кредита: {0}", data); Console.WriteLine("Размер кредита: {0}", razmer); Console.WriteLine("Процент: {0}", procent); Console.WriteLine("Остаток: {0}", ostatok); } public override string Data() { return data; } } public class organiz : klient { private int nomer; private int summa; public organiz(string s) { string[] values = s.Split(Convert.ToChar(9)); this.name = values[0]; this.data = values[1]; this.nomer = Convert.ToInt32(values[2]); this.summa = Convert.ToInt32(values[3]); } public override void show() { Console.WriteLine("Название: {0}", name); Console.WriteLine("Дата открытия счета: {0}", data); Console.WriteLine("Номер счета: {0}", nomer); Console.WriteLine("Сумма на счету: {0}", summa); } public override string Data() { return data; } }
Решение задачи: «Абстрактный класс. Object reference not set to an instance of an object.»
textual
Листинг программы
klient[] res = null;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д