Не могу разобраться в коде - 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;

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


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

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

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