Абстрактный класс. 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;