Абстрактный класс. Object reference not set to an instance of an object. - C#

Узнай цену своей работы

Формулировка задачи:

Не работает поиск по заданной дате... Ругается вот на эту строчку:
Листинг программы
  1. foreach (klient kl in res)
в main() Пишет вот это:
Листинг программы
  1. Object reference not set to an instance of an object.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using System.Text.RegularExpressions;
  6.  
  7. namespace ConsoleApplication15
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. klient[] k = read();
  14. foreach (klient kl in k)
  15. {
  16. kl.show();
  17. Console.WriteLine("-----------------------");
  18. }
  19. klient[] res = null;
  20. Console.WriteLine("Введите нужную вам дату:");
  21. string b = Console.ReadLine();
  22. foreach (klient kl in res)
  23. {
  24. kl.show();
  25. Console.WriteLine("-----------------------");
  26. }
  27. Console.ReadKey();
  28. }
  29. static klient[] read()
  30. {
  31. StreamReader fr = new StreamReader("file.txt", Encoding.GetEncoding(1251));
  32. string str = fr.ReadToEnd();
  33. string[] s = str.Split('\n');
  34. klient[] kl = new klient[s.Length / 2];
  35. Regex r1=new Regex("vklad");
  36. Regex r2 = new Regex("kredit");
  37. Regex r3 = new Regex("organiz");
  38. for(int i=0; i<s.Length; i+=2)
  39. {
  40. if (r1.IsMatch(s[i]))
  41. kl[i / 2] = new vklad(s[i + 1]);
  42. if (r2.IsMatch(s[i]))
  43. kl[i / 2] = new kredit(s[i + 1]);
  44. if (r3.IsMatch(s[i]))
  45. kl[i / 2] = new organiz(s[i + 1]);
  46. }
  47. fr.Close();
  48. return kl;
  49. }
  50.  
  51. static klient[] search(string a)
  52. {
  53. klient[] kl = read();
  54. int n=0, count = 0;
  55. for(int i=0; i < kl.Length;++i)
  56. if (kl[i].Data() == a)
  57. {
  58. ++n;
  59. }
  60. klient[] result = new klient[n];
  61. for (int i=0; i < kl.Length; ++i)
  62. if (kl[i].Data() == a)
  63. {
  64. result[count] = kl[i];
  65. ++count;
  66. }
  67. return result;
  68. }
  69.  
  70. }
  71. }
  72. public abstract class klient
  73. {
  74. public abstract void show();
  75. public abstract string Data();
  76. protected string name;
  77. protected string data;
  78. protected int razmer;
  79. protected int procent;
  80. }
  81. public class vklad : klient
  82. {
  83. public vklad(string s)
  84. {
  85. string[] values = s.Split(Convert.ToChar(9));
  86. this.name = values[0];
  87. this.data = values[1];
  88. this.razmer = Convert.ToInt32(values[2]);
  89. this.procent = Convert.ToInt32(values[3]);
  90. }
  91. public override void show()
  92. {
  93. Console.WriteLine("Фамилия: {0}", name);
  94. Console.WriteLine("Дата открытия вклада: {0}", data);
  95. Console.WriteLine("Размер вклада: {0}", razmer);
  96. Console.WriteLine("Процент: {0}", procent);
  97. }
  98. public override string Data()
  99. {
  100. return data;
  101. }
  102. }
  103. public class kredit : klient
  104. {
  105. private int ostatok;
  106. public kredit(string s)
  107. {
  108. string[] values = s.Split(Convert.ToChar(9));
  109. this.name = values[0];
  110. this.data = values[1];
  111. this.razmer = Convert.ToInt32(values[2]);
  112. this.procent = Convert.ToInt32(values[3]);
  113. this.ostatok = Convert.ToInt32(values[4]);
  114. }
  115. public override void show()
  116. {
  117. Console.WriteLine("Фамилия: {0}", name);
  118. Console.WriteLine("Дата выдачи кредита: {0}", data);
  119. Console.WriteLine("Размер кредита: {0}", razmer);
  120. Console.WriteLine("Процент: {0}", procent);
  121. Console.WriteLine("Остаток: {0}", ostatok);
  122. }
  123. public override string Data()
  124. {
  125. return data;
  126. }
  127. }
  128. public class organiz : klient
  129. {
  130. private int nomer;
  131. private int summa;
  132. public organiz(string s)
  133. {
  134. string[] values = s.Split(Convert.ToChar(9));
  135. this.name = values[0];
  136. this.data = values[1];
  137. this.nomer = Convert.ToInt32(values[2]);
  138. this.summa = Convert.ToInt32(values[3]);
  139. }
  140. public override void show()
  141. {
  142. Console.WriteLine("Название: {0}", name);
  143. Console.WriteLine("Дата открытия счета: {0}", data);
  144. Console.WriteLine("Номер счета: {0}", nomer);
  145. Console.WriteLine("Сумма на счету: {0}", summa);
  146. }
  147. public override string Data()
  148. {
  149. return data;
  150. }
  151. }
прикладываю текстовый файл, который считывается в программе

Решение задачи: «Абстрактный класс. Object reference not set to an instance of an object.»

textual
Листинг программы
  1. klient[] res = null;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы