Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > как подсоеденить System.Collections.Generic


Автор: Yozhik 25.4.2007, 21:30
Как подсоеденить библиотеку System.Collections.Generic?


Вроде работающий код, но нет этой библиотеки. 

В коде есть EvalStack.Pop(),       EvalStack. 


Думаю именно из этой библиотеке. 








Автор: Void 25.4.2007, 21:41
Никак.

Заменить на эквивалентны из System.Collections и попрощаться со строгой типизацией.

Автор: Yozhik 25.4.2007, 21:49
Пробовал конечно...

using System.Collections;
using System.Collections.Specialized;


Всё равно выдаёт ошибки в коде:

Код

public double EvalRPNString(string input) 
        {
            string[] tokens = input.Split(' ');
            Stack<double> EvalStack = new Stack<double>();
            double tmpNum = 0;
            for (int i = 0; i < tokens.Length; i++) 
            {
                if (double.TryParse(tokens[i], out tmpNum)) 
                {
                    EvalStack.Push(tmpNum);
                } 
                else 
                {
                    try 
                    {    
                        tmpNum = EvalStack.Pop();
                    
                        switch (tokens[i]) 
                        {
                            case "+": 
                            {
                                EvalStack.Push(EvalStack.Pop() + tmpNum);
                                break;
                            }
                            case "-": 
                            {
                                EvalStack.Push(EvalStack.Pop() - tmpNum);
                                break;
                            }
                            case "*": 
                            {
                                EvalStack.Push(EvalStack.Pop() * tmpNum);
                                break;
                            }
                            case "/": 
                            {
                                EvalStack.Push(EvalStack.Pop() / tmpNum);
                                break;
                            }
                            case "^": 
                            {
                                EvalStack.Push(Math.Pow(EvalStack.Pop(), tmpNum));
                                break;
                            }
                            case "sqrt": 
                            {
                                EvalStack.Push(Math.Sqrt(tmpNum));
                                break;
                            }
                            case "sin": 
                            {
                                EvalStack.Push(Math.Sin(tmpNum));
                                break;
                            }
                            case "cos": 
                            {
                                EvalStack.Push(Math.Cos(tmpNum));
                                break;
                            }
                            case "tan": 
                            {
                                EvalStack.Push(Math.Tan(tmpNum));
                                break;
                            }
                            case "exp": 
                            {
                                EvalStack.Push(Math.Exp(tmpNum));
                                break;
                            }
                            case "log": 
                            {
                                EvalStack.Push(Math.Log(EvalStack.Pop(), tmpNum));
                                break;
                            }
                        }
                    } 
                    catch (InvalidOperationException ioe) 
                    {
                        Console.WriteLine("Fehler an Stelle {0}.", i + 1);
                        break;
                    }
                }
            }
            if (EvalStack.Count > 1) 
            {
                Console.WriteLine("Stack nicht leer - fehlerhafter Inputstring");
                return EvalStack.Pop();
            } 
            else 
            {
                try 
                {
                    return EvalStack.Pop();
                } 
                catch (InvalidOperationException ioe) 
                {
                    Console.WriteLine("Kein Ergebniss da ungultiger Inputstring");
                    return double.NaN;
                }
            }
        }

    }
}






Выделяет все EvalStack...

В чём может  быть ошибка?

Автор: Exception 25.4.2007, 22:35

M
Exception
Пожалуйста, отредактируйте ваше сообщение, оформив код в теги [ code=csharp ] [/ code ] (без пробелов)!


Добавлено через 29 секунд
А текст ошибок предлагается угадать?

Добавлено через 1 минуту и 22 секунды
Цитата(Yozhik @  25.4.2007,  22:49 Найти цитируемый пост)
Stack<double> EvalStack = new Stack<double>();


Нету дженериков в .NET 1.x.

Цитата(Void @  25.4.2007,  22:41 Найти цитируемый пост)
Заменить на эквивалентны из System.Collections и попрощаться со строгой типизацией.


Автор: Yozhik 25.4.2007, 23:00
Что сделать для того чтоб заработало?

Автор: Exception 25.4.2007, 23:10
Заменить Stack<double> на Stack.

Автор: Rapalex 26.4.2007, 10:21
Попробуй постависть SDK под .нет 2.0, должно заработать, или непарься и ставвь студию 2005.

Автор: Naum 26.4.2007, 13:03
Цитата(Rapalex @  26.4.2007,  11:21 Найти цитируемый пост)
Попробуй постависть SDK под .нет 2.0, должно заработать

С чего бы это? Компилятор-то в 2003 студии останется C# 1.0. А он ничего не знает ни о втором фрэймворке, ни о дженериках.

Автор: Rapalex 26.4.2007, 14:15
А мне казалось что сдк в себя включает компилятор, может я ошибаюсь, но без сдк 2.0 тебе никакой компилятор не поможет.

Автор: archeg 26.4.2007, 18:36
Цитата(Rapalex @ 26.4.2007,  14:15)
А мне казалось что сдк в себя включает компилятор, может я ошибаюсь, но без сдк 2.0 тебе никакой компилятор не поможет.

Да, но студия 2003 все равно будет использовать 1.0

Автор: Exception 26.4.2007, 18:42
Поставь себе хоть версий компилятора, студия 2003 всё равно будет использовать компилятор C# 1.1 smile .
Поэтому в ней код для 2.0 скомпилировать не получится всё равно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)