Не могу разобраться в коде - C# (197343)
Формулировка задачи:
Здравствуйте! помогите неопытному начинающему разобраться в как мне кажется "ужасно" запутанном коде:
using System; namespace ConsoleApplication1 { public struct Nullable<T> where T : struct { public Nullable(T value) { this.hasValue = true; this.value = value; } private bool hasValue; public bool HasValue { get { return hasValue; } } private T value; public T Value { get { if (!hasValue) { throw new InvalidOperationException("no value"); } return value; } } public static explicit operator T(Nullable<T> value) \\Что это за преобразования такие и что они дают? как их использовать? если можно пример кода... { return value.Value; } public static implicit operator Nullable<T>(T value) \\Что это за преобразования такие и что они дают? как их использовать? если можно пример кода... { return new Nullable<T>(value); } public override string ToString() { if (!HasValue) return String.Empty; return this.value.ToString(); } } class Program { static void Main() { Nullable<int> x; x = 4; Console.ReadLine(); } } }
"В этом примере экземпляр обобщенно структуры Nullable<T> где параметр T обязан быть переменным типом из за ограничения, создан как Nullable<int>. Переменная х теперь может быть использована как int, т.е. ей можно присваивать значения и применять в операциях для выполнения некоторых вычислений."
- как это в операциях некоторых вычислений?..., x тут ведь как объект типа обобщенной структуры - т.е. я так понял что благодаря вот тем непонятным преобразованиям х стало как обычная переменная типа int что-ли? тогда зачем всё это если просто можно создать int x;? это все благодаря преобразованию explicit стало таким? я вот никак не могу понять все эти может быть вам покажется мелочи... T, Nullable<T>, Nullable<T> value, new Nullable<T>(value) - всё как-то очень ужасно запутано, я просто потерялся в этих определениях:...Решение задачи: «Не могу разобраться в коде»
textual
Листинг программы
Nullable<int> x = new Nullable<int>(); int readx = (int)x;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д