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