:: Не фоксом единым
Re: Узнать, упакована ли переменная
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Звонарь звонИт,
Чиновник звОнит...
Ratings: 0 negative/0 positive
Re: Узнать, упакована ли переменная
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
На www.quizful.net в разделе "Вопросы на собеседовании" есть такой вопрос:

Цитата:
Представьте, что C# не предоставляет средств для упаковки, реализуйте аналог упаковки.

И приведёно ответ:

class Box<T> where T : struct
{
//поле, которое содержит значение упаковываемого значимого типа
private T t;
// упаковка
public Box(T t)
{
this.t = t;
}
// неявная распаковка
public override string ToString()
{
return t.ToString();
}
// явная распаковка
public static explicit operator T(Box<T> b)
{
return b.t;
}
}
class Program
{
static void Main()
{
int i = 10;
Box<int> b;
b = new Box<int>(i); // упаковка - сделать "b = i;" нельзя
System.Console.WriteLine(b); // неявная распаковка - вызывается ToString()
int k = (int)b; // явная распаковка - вызывается explicit operator T
}
}

Пример класса-обёртки



Исправлено 1 раз(а). Последнее : S-type, 18.04.17 12:43
Ratings: 0 negative/0 positive
Re: Узнать, упакована ли переменная
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
S-type
Если так подумать... Если для упакованного Int32 в поле "ссылка на тип" хранится ссылка на "Int32", значит это ссылочная переменная с типом "Int32"
Это экземпляр ссылочного типа, то бишь объект - никакая это не "переменная". Переменная - это то что будет ссылаться на данный объект. Например object o - вот o это переменная, в ней будет адрес некоторого объекта (или специальное значение null). А вот то куда указывает этот адрес - это уже ни разу не переменная, это сам экземпляр.
Тут, как мне кажется, весьма просто и доходчиво всё изложено, и показана разница между переменной (как значимого, так и ссылочного типов) и объектом.
www.yoda.arachsys.com


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Узнать, упакована ли переменная
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Про отличие терминов "значение", "переменная", "обьект":
- зачем это бывает надо надо знать, это различие?
- может обьект (или переменная, "содержащая" обьект) - это структура, т.е. содержит что-то можно после символа точки обращаться к вложенным элементам этой структуры. А "значение" - ничего не содержит кроме самого значения...

(Это по поводу фраз:
> А вот то куда указывает этот адрес - это уже ни разу не переменная, это сам экземпляр.
В ссылке по ненашему все, термины и так человеческие, а на инязе все равно еще непонятнее)
Ratings: 0 negative/0 positive
Re: Узнать, упакована ли переменная
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
of63
- зачем это бывает надо надо знать, это различие?
Затем чтобы писать код осознавая что именно пишешь, а не тупо копировать куски со stackoverflow не понимая не бельмеса

of63
- может обьект (или переменная, "содержащая" обьект) - это структура, т.е. содержит что-то можно после символа точки обращаться к вложенным элементам этой структуры. А "значение" - ничего не содержит кроме самого значения...
В том то и дело что это не так. Для value типов значение СОДЕРЖИТ элементы (т.к. value тип это в общем случае структура - не только "примитивные" типы int/double и иже с ними), к которым обращаются через точку. Но это тем не менее значение, а не объект - и оно ведёт себя соответственно - не так как объект.

of63
В ссылке по ненашему все, термины и так человеческие, а на инязе все равно еще непонятнее)
Ну как бы никто ж не заставляет - можно вообще не заниматься программированием - чего зазря мозги сушить то Зашибил малёхо бабосиков загнав какое фуфло очередному лоху, сербанул опосля с корешами беленькой да под знатную закусочку - лепота ж!

А можно ещё изучить 1це - там всё по-русски, не только документация, но и все ключевые слова языка...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Узнать, упакована ли переменная
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не пояснил... И с англицким тоже достиг потолка, дальше не лезет. Всему есть предел.

> Зашибил малёхо бабосиков загнав какое фуфло очередному лоху, сербанул опосля с корешами беленькой да под знатную закусочку - лепота ж!
Тут понятно, так и работаем.

...Что интересно, то свой же код, через пару-тройку лет кажется отстоем. У тебя тоже так?

Доб.
> Для value типов значение СОДЕРЖИТ элементы (т.к. value тип это в общем случае структура - не только "примитивные" типы int/double и иже с ними),
Это понятно, как в фоксе, сишная "переменная" - это структура, содержит и тип и еще что-нибудь, но в языке фокс точку ставить нельзя, нечего указать после точки. Но если она типа "обьект", т.е. тип ее - "О", значит это не число, а адрес сишный адрес на другую структуру, и можно в фоксе ставить точку...



Исправлено 1 раз(а). Последнее : of63, 18.04.17 22:22
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика