Не могу разобраться в коде - C# (197343)

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

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

Здравствуйте! помогите неопытному начинающему разобраться в как мне кажется "ужасно" запутанном коде:
Листинг программы
  1. using System;
  2. namespace ConsoleApplication1
  3. {
  4. public struct Nullable<T>
  5. where T : struct
  6. {
  7. public Nullable(T value)
  8. {
  9. this.hasValue = true;
  10. this.value = value;
  11. }
  12. private bool hasValue;
  13. public bool HasValue
  14. {
  15. get
  16. {
  17. return hasValue;
  18. }
  19. }
  20. private T value;
  21. public T Value
  22. {
  23. get
  24. {
  25. if (!hasValue)
  26. {
  27. throw new InvalidOperationException("no value");
  28. }
  29. return value;
  30. }
  31. }
  32. public static explicit operator T(Nullable<T> value) \\Что это за преобразования такие и что они дают? как их использовать? если можно пример кода...
  33. {
  34. return value.Value;
  35. }
  36. public static implicit operator Nullable<T>(T value) \\Что это за преобразования такие и что они дают? как их использовать? если можно пример кода...
  37. {
  38. return new Nullable<T>(value);
  39. }
  40. public override string ToString()
  41. {
  42. if (!HasValue)
  43. return String.Empty;
  44. return this.value.ToString();
  45. }
  46. }
  47. class Program
  48. {
  49. static void Main()
  50. {
  51. Nullable<int> x;
  52. x = 4;
  53. Console.ReadLine();
  54. }
  55. }
  56. }

"В этом примере экземпляр обобщенно структуры Nullable<T> где параметр T обязан быть переменным типом из за ограничения, создан как Nullable<int>. Переменная х теперь может быть использована как int, т.е. ей можно присваивать значения и применять в операциях для выполнения некоторых вычислений."

- как это в операциях некоторых вычислений?..., x тут ведь как объект типа обобщенной структуры - т.е. я так понял что благодаря вот тем непонятным преобразованиям х стало как обычная переменная типа int что-ли? тогда зачем всё это если просто можно создать int x;? это все благодаря преобразованию explicit стало таким? я вот никак не могу понять все эти может быть вам покажется мелочи... T, Nullable<T>, Nullable<T> value, new Nullable<T>(value) - всё как-то очень ужасно запутано, я просто потерялся в этих определениях:...

Решение задачи: «Не могу разобраться в коде»

textual
Листинг программы
  1. Nullable<int> x = new Nullable<int>();
  2. int readx = (int)x;

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


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

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

13   голосов , оценка 4.077 из 5

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

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

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