Не могу разобраться в коде - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д