Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для lover
6 / 6 / 1
Регистрация: 17.11.2009
Сообщений: 91

Generic, определение типа переменной во время выполнения программы

26.07.2012, 23:17. Показов 3518. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Итак имеется две переменной: одна переменная хранит тип значения (точнее числовое значение одного из типов в моем enum'e)
Для ясности энам примерно такой:
C#
1
2
3
4
5
6
7
8
9
10
public enum DataType
    { 
        No
        Int,
        Bool,
        Float,
        Long,
        Char
        и т.д. (просто это числа разной разрядности, не буквы!!!!)
    }
Соответсвенно другая пременная хранит данные типа указанного в другой)
При помощи генерика это в принципе легко делается:
Пишется класс:
C#
1
2
3
4
class MyClass<T>
{
    public T Value { get; set; };
}
Потом в коде присваивается тип:
C#
1
2
3
4
5
MyClass<string> x = new MyClass<string>();
x.Value = "всякие слова";
 
MyClass<int> y = new MyClass<int>();
y.Value = 10;
И все бы ничего, можно и так ручками все присвоить (повтыкая условий) но как то это как велосипед с квадратными колесами.. Есть у кого-нибудь какие-нибудь идеи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.07.2012, 23:17
Ответы с готовыми решениями:

Определение типа данных во время выполнения программы
А можно ли в Delphi определить тип данных объекта во время выполнения программы, как в C++?

Определение типа во время выполнения
Подскажите пожалуйста, как во время выполнения проверить содержит ли переменная типа оператор +? Именно проверить, а не использовать...

Изменение переменной во время выполнения программы
Здравствуйте! Мне необходимо изменять переменную во время выполнения программы. Для этого я решил использовать ScrollBar. Но в результате я...

10
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
26.07.2012, 23:59
Цитата Сообщение от lover Посмотреть сообщение
Есть у кого-нибудь какие-нибудь идеи?
идеи чего собственно? я не понял сути вопроса - что должно получится в итоге?
0
 Аватар для lover
6 / 6 / 1
Регистрация: 17.11.2009
Сообщений: 91
27.07.2012, 00:09  [ТС]
В итоге должно получится то что пременная enum'a задаст тип для переменной значения
0
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
27.07.2012, 00:22
здесь не тот случай в generic тип определяется во время построения а не исполнения
и все же не совсем понятно что не так с текушим решением и чего нужно добится (хотя бы формальным языком напиши чтоб понятно было)
0
 Аватар для lover
6 / 6 / 1
Регистрация: 17.11.2009
Сообщений: 91
27.07.2012, 00:40  [ТС]
эмм
во время создания объекта моего класса(в котором содержаться 2 переменные: тип значения и само значение) код должен переопределить тип значения, то есть если в переменной "тип значения" стоит строка int то значение должно иметь тип int
0
 Аватар для SalterOk
117 / 114 / 10
Регистрация: 02.06.2011
Сообщений: 280
27.07.2012, 01:28
можешь использовать динамический тип
C#
1
2
3
4
5
6
7
8
9
10
class Sample
{
    DataType Type { get; private set; }
    dynamic Value { get; private set; }
    public Sample(DataType type, dynamic value)
    {
        Type = type;
        Value = value;
    }
}
но все равно не понятно зачем тебе такое нужно
1
 Аватар для lover
6 / 6 / 1
Регистрация: 17.11.2009
Сообщений: 91
27.07.2012, 01:40  [ТС]
эх хорошо бы) но рабочая среда 3.5(( в ней нет dinamic(
это нужно, потому что данные находятся в бинарном файле и заранее неизвестно какой тип будет у значения
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
27.07.2012, 07:10
Тогда может, использовать просто object? Все равно о безопасности речь уже не идет..
1
 Аватар для lover
6 / 6 / 1
Регистрация: 17.11.2009
Сообщений: 91
29.07.2012, 21:36  [ТС]
Остановился на том что будет использоваться тип decimal, а при записи в файл будет конвертироваться
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
29.07.2012, 21:45
если для бинарного файла то можно использовать хитрые структуры вроде таких
C#
1
2
3
4
5
6
7
8
9
    [StructLayout(LayoutKind.Explicit)]
    public struct MyStruct
    {
        [FieldOffset(0)]
        public int IntValue;
               
        [FieldOffset(0)]   
        public float FloatValue;
    }
таким образом считав 4 байта у нас будет сразу как int так и float представление
хотя врядли это поможет в данном случае, автор еще не понял что не сможет прочитать "любой тип" не зная собственно какой тип читает
0
 Аватар для lover
6 / 6 / 1
Регистрация: 17.11.2009
Сообщений: 91
29.07.2012, 21:56  [ТС]
тип хранится рядом, так что автор все узнает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.07.2012, 21:56
Помогаю со студенческими работами здесь

Определение типа объекта System.Collections.Generic
Добрый день. Может быть кто-то подскажет, как однозначно определить, какого типа объект, который является коллекцией элементов...

Определение типа переменной
#include &lt;iostream&gt; #include &lt;typeinfo&gt; int main() { int t = 10; std::cout &lt;&lt; typeid(t).name() &lt;&lt; std::endl; if...

Определение типа переменной в функции
Добрый день. Есть простая программка для изучения передачи значений/указателей в функции void prnt(void *pp) { int * p; p =...

переопределение языковой переменной на время выполнения скрипта
Добрый день, всем умельцам. Подскажите, пожалуйста, вдруг кто-то знает как переопределить одну (или несколько) языковую переменную всего...

Изменение типа ValueConverter во время выполнения приложения
Здравствуйте. У меня есть множество текстбоксов, в которые мне нужно выводить значения разных форматов. Для этого я использую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru