Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
CatsTail

хочу класть в Stack только Int16, но при этом я хочу и получать на выход только Int16 без дополнительно преобразования типа

02.12.2009, 09:30. Показов 2314. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Моя проблема заключается в том, что я хочу класть в Stack только Int16, но при этом я хочу и получать на выход только Int16 без дополнительно преобразования типа.
Поясняю:
C#
1
2
3
4
5
6
7
8
9
10
11
12
// ...
Int16 i=0;
 
Stack stk = new Stack();
 
stk.Push(i); //Метод Push на вход берет просто object, а мне нужно
             //Int16
//Далее:
Int16 j=(Int16)stk.Pop(); // а вот так не работает:
                          // Int16 j=stk.Pop(); !!!, т.к. метод Pop()
                          // возвращает object.
// ...
Заранее благодарен
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2009, 09:30
Ответы с готовыми решениями:

Почему System.Char не может быть неявно преобразован к System.Int16?
Почему System.Char не может быть неявно преобразован к System.Int16? Почему только в его...

Конвертирование string в Int16
Всем привет! Помогите пожалуйста разобратся сданным кодом. Как не пытался его написать со своими...

Out не работает с Int16
Уважаемые форумчане подскажите кто сталкивался с такой проблемой вот так работает .. . ...

4
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
02.12.2009, 13:27
Создайте наследника класса Stack и переопределите методы Push и Pop
Если программа активно использует этот объект, то имеет смысл написать специализированный объект для хранения именно Int16. Дело в том что Int16 скалярный тип и перед вызовом метода Stack.Push(object obj) он подвергается упаковке (boxing) т.е. превращается в переменную ссылочного типа. Упаковка является очень дорогостоящей операцией. При возврате из метода Stack.Pop происходит распаковка (unboxing). Это менее дорогостоящая операция, но ее не избежать. Именно поэтому лучше сделать 'свой стек' где Int16 хранится не как object.
0
CatsTail
03.12.2009, 11:20
Спасибо! Я понял. Только остался один вопрос: как переопределить метод Push() я понимаю. А как переопределить метод Pop()? В Push() можно сделать так:
public void Push(System.Int16 obj)
{
}

А в Pop() мне нужно вот что:
public System.Int16 Pop()
{
}
Само сабой разумеется, что это не работает...

И так, еще раз повторю ворос: КАК ПЕРЕОПРЕДЕЛИТЬ МЕТОД Pop(), если это вообще возможно?.. Заранее благодарен.
0 / 0 / 1
Регистрация: 26.08.2009
Сообщений: 12
03.12.2009, 13:12
Можно написать свой Pop (например Pop16)
и определить его как то так:
Code
1
2
3
4
System.Int16 Pop16()
{
...
}
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,927
Записей в блоге: 5
03.12.2009, 14:46
можно определить новый Pop:
Code
1
2
3
public new System.Int16 Pop()
{
}
а в его теле обращаться к старому Pop при помощи
Code
1
base.Pop();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2009, 14:46
Помогаю со студенческими работами здесь

В чем разница между int16 и int32?
Часто приходится конвертировать в int, для этого прописываю a = Convert.ToInt32 (b); А чем...

Быстрое преобразование Фурье и ошибка "Неявное преобразование типа"
А подскажите еще по одной прблемке: Есть программа реализующая БПФ (ну должна по крайней мере это...

Получить размещение файла по кластерам (номера кластеров, занятых файлом)
Нужно получить размещение файла по кластерам(номера кластеров, занятых файлом). Как я понял, нужно...

Получить итоговый текст с использованием класса Stack
следующую задачу с использованием класса Stack: Пусть символ # определен в текстовом редакторе как...

Не могу вызвать неявное преобразование типов в Main для проверки "Перегрузки операторов преобразования типов"
Добрый день, Написал явное преобразования типов из дроби в тип double (явное потому что если...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru