Исключение. Ссылка на объект не указывает на экземпляр объекта - C#

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

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

Доброе время, у меня выбивает исключение и я не могу додуматься как решить его. Може кто подсказать?
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace task12
  7. {
  8. interface IValidator
  9. {
  10. bool ValidateUser(User usr, string nameOrEmail);
  11. }
  12. }
  13. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  14. using System;
  15. using System.Collections.Generic;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. namespace task12
  20. {
  21. interface IUser
  22. {
  23. string UserName { get; }
  24. string Password { get; }
  25. string Email { get; }
  26. string GetFullInfo();
  27. }
  28. }
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace task12
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. var user = new User();
  13. for(int i=0; ; i++)
  14. {
  15. user.Login();
  16. }
  17. }
  18. }
  19. }
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace task12
  7. {
  8. class Validator : IValidator
  9. {
  10. public bool ValidateUser (User usr, string nameOrEmail)
  11. {
  12. if (nameOrEmail.Contains('@'))
  13. {
  14. for (int i = 1; i < 200; i++)
  15. {
  16. if (usr.userDataBase[i][1] == nameOrEmail) {
  17. usr.BackValue(i);
  18. return true;
  19. }
  20. }
  21. }
  22. else
  23. {
  24. for (int i = 1; i < 200; i++)
  25. {
  26. if (usr.userDataBase[i][0] != null)
  27. {
  28. if (usr.userDataBase[i][0] == nameOrEmail)
  29. {
  30. usr.BackValue(i);
  31. return true;
  32. }
  33. }
  34. else
  35. {
  36. return false;
  37. }
  38. }
  39. }
  40. return false;
  41. }
  42. }
  43. }
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace task12
  7. {
  8. class User : IUser
  9. {
  10. User usr = null;
  11. Validator validator = new Validator();
  12. DateTime lastDateTime = DateTime.Now;
  13. private int indexInDataBase;
  14. string namOrEm;
  15. string pass;
  16.  
  17. public string[][] userDataBase = new string[200][];
  18.  
  19. public User() { userDataBase[0] = new string[] { "userName", "email", "pass", "lastFill" }; }
  20. public string UserName { get; private set; }
  21. public string Email { get; private set; }
  22. public string Password { get; private set; }
  23. public string LustFill { get; private set; }
  24.  
  25. public void Login()
  26. {
  27. Console.WriteLine("Введите логин");
  28. namOrEm = Console.ReadLine();
  29. if (namOrEm == "exit")
  30. {
  31. Environment.Exit(0);
  32. }
  33. if (validator.ValidateUser(usr,namOrEm))
  34. {
  35. Console.WriteLine("Введите пароль");
  36. pass = Console.ReadLine();
  37. if (pass == "exit")
  38. {
  39. Environment.Exit(0);
  40. }
  41. if (userDataBase[indexInDataBase][2] == pass)
  42. {
  43. GetFullInfo();
  44. }
  45. else { Console.WriteLine("Пароль не верно введен!"); }
  46.  
  47. }
  48. else
  49. {
  50. Console.WriteLine("Такого пользователя нету. Добавление.");
  51. Console.WriteLine("Введите пароль");
  52. pass = Console.ReadLine();
  53. if (pass == "exit")
  54. {
  55. Environment.Exit(0);
  56. }
  57. AddUser(namOrEm, pass);
  58. }
  59. }
  60. public void BackValue(int indxInDataBase)
  61. {
  62. indexInDataBase = indxInDataBase;
  63. }
  64. public void InSystem()
  65. {
  66. LustFill = userDataBase[indexInDataBase][3];
  67. UserName = userDataBase[indexInDataBase][0];
  68. Email = userDataBase[indexInDataBase][1];
  69. Password = userDataBase[indexInDataBase][2];
  70. userDataBase[indexInDataBase][3] = lastDateTime.ToString();
  71. }
  72. public void AddUser(string nameOrEmail, string pas)
  73. {
  74. for (int i = 0; i < userDataBase.Length; i++)
  75. {
  76. if (userDataBase[i] == null)
  77. {
  78. if (nameOrEmail.Contains('@'))
  79. {
  80. userDataBase[i][1] = nameOrEmail;
  81. userDataBase[i][0] = "nope Vale";
  82. }
  83. else
  84. {
  85. userDataBase[i][1] = "nope Vale";
  86. userDataBase[i][0] = nameOrEmail ;
  87. }
  88. userDataBase[i][2] = pas;
  89. }
  90. }
  91. }
  92.  
  93. public string GetFullInfo()
  94. {
  95. InSystem();
  96. return "\n-------\n"+"Username: "+ UserName + "\nEmail: " +Email+ "\nPassword: "+Password+
  97. "\nLust fill: "+LustFill;
  98. }
  99.  
  100. }
  101. }

Решение задачи: «Исключение. Ссылка на объект не указывает на экземпляр объекта»

textual
Листинг программы
  1.         public void Login()
  2.         {
  3.            
  4.             Console.WriteLine("Enter name");
  5.             namOrEm = Console.ReadLine();
  6.             if (namOrEm == "exit")
  7.             {
  8.                 Environment.Exit(0);
  9.             }
  10.  
  11.  
  12.             if (validator.ValidateUser(this, namOrEm))
  13.             {
  14.                 Console.WriteLine("Enter password");
  15.                 pass = Console.ReadLine();
  16.  
  17.                 if (pass == "exit")
  18.                 {
  19.                     Environment.Exit(0);
  20.                 }
  21.  
  22.                 if (userDataBase[indexInDataBase][2] == pass)
  23.                 {
  24.  
  25.                     GetFullInfo();
  26.                 }
  27.                 else { Console.WriteLine("Password wrong!"); }
  28.  
  29.  
  30.             }
  31.             else
  32.             {
  33.                 Console.WriteLine("A non-existent user. Addition.");
  34.                 Console.WriteLine("Enter password");
  35.                 pass = Console.ReadLine();
  36.  
  37.                 if (pass == "exit")
  38.                 {
  39.                     Environment.Exit(0);
  40.                 }
  41.  
  42.                 AddUser(namOrEm, pass);
  43.             }
  44.  
  45.         }

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


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

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

8   голосов , оценка 4.375 из 5

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

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

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