Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2015, 13:08   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию Не выводится enum в консоль

Накидал небольшой проектик для теста, чтоб потом расширить его и попробывать некоторые вещи в плане наследования. По путно пишу и уже столкнулся с ошибкой:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace InheritanceTEST
{
    enum Country
    {
        USA,
        Russian,
        Eblarus
    }

    class World
    {
        public Country myCountry;

        public World (Country f_Country)
        {
            myCountry = f_Country;
        }

        //Console.WriteLine("In the World ");

    }

  /*  class Region : World
    {
        
        //Console.WriteLine("My country is ");
    }
    */
    class Program
    {
        static void Main(string[] args)
        {
            World world = new World(Country.Eblarus);

            Console.WriteLine("Current name of the World is: ", Enum.Parse (typeof (Country), world.myCountry));

            Console.WriteLine("Программа выолнена!");
            Console.ReadKey();
        }
    }
}
Компилятор Visual Studio ругается так:
Цитата:
Ошибка 1 Наиболее подходящий перегруженный метод для "System.Enum.Parse(System.Type, string)" имеет несколько недопустимых аргументов c:\Users\hoz\Documents\Visual Studio 2010\Projects\InheritanceTEST\Inher itanceTEST\Program.cs 40 65 InheritanceTEST
Ошибка 2 Аргумент "2": преобразование типа из "InheritanceTEST.Country" в "string" невозможно c:\Users\hoz\Documents\Visual Studio 2010\Projects\InheritanceTEST\Inher itanceTEST\Program.cs 40 95 InheritanceTEST
В чём косяк?
Вложения
Тип файла: rar InheritanceTEST.rar (1,007 байт, 7 просмотров)

Последний раз редактировалось Stilet; 06.09.2015 в 13:53.
hoz вне форума Ответить с цитированием
Старый 06.09.2015, 13:13   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык все написано в ошибке. Этот метод принимает строку, а вы ему enum пихаете.

Enum.Parse предназначен для преобразования строки с именем или значением в enum.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2015, 13:34   #3
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Дык все написано в ошибке. Этот метод принимает строку, а вы ему enum пихаете.

Enum.Parse предназначен для преобразования строки с именем или значением в enum.
Как тогда наиюолее рационально вывести строковое имя Enum'а ?
hoz вне форума Ответить с цитированием
Старый 06.09.2015, 13:50   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

https://www.google.com/search?q=c%23+enum+to+string
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2015, 13:57   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Опиши функу:
Код:
string EmunToStr(Country c){
 switch(c){
  case USA: return "USA";
  case Russian: return "Russian";
  case Eblarus: return "Eblarus";
 }
}
Кстати. Не знаю в какой стране ты живешь, но если это Eblarus, то как же называешься ты как ее житель?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.09.2015, 14:12   #6
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Изначально я так и делал. Но на выходе пусто.. Потому решил переписать иначе. Вот было так:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace InheritanceTEST
{
    enum Country
    {
        USA,
        Russian,
        Eblarus
    }

    class World
    {
        public Country myCountry;

        public World (Country f_Country)
        {
            myCountry = f_Country;
        }

        //Console.WriteLine("In the World ");

    }

  /*  class Region : World
    {
        
        //Console.WriteLine("My country is ");
    }
    */
    class Program
    {
        static void Main(string[] args)
        {
            World world = new World(Country.Eblarus);

            
            
            //Console.WriteLine("Current name of the World is: ", Enum.ToString(world.myCountry)));
            Console.WriteLine("Current name of the World is: ", world.myCountry.ToString());

            Console.WriteLine("Программа выолнена!");
            Console.ReadKey();
        }
    }
}
В результате компиляции в консоли вижу:
Цитата:
Current name of the World is:
Программа выолнена!
Т.е. world.myCountry.ToString() не возвращает никакого значения по ходу. Хотя должен возвращать.

Цитата:
Сообщение от Stilet Посмотреть сообщение

Кстати. Не знаю в какой стране ты живешь, но если это Eblarus, то как же называешься ты как ее житель?
Кто живёт в Eblarus'и является по факту жителем Eblarus'и. И по-любому, ему тут не нравится. И живёт он тут лишь потому что тут родился...

Последний раз редактировалось Stilet; 06.09.2015 в 15:01.
hoz вне форума Ответить с цитированием
Старый 06.09.2015, 14:17   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Пусто потому что вы не выводите его в той строке.

Ну и кроме .ToString() по ссылке есть и другие варианты.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2015, 15:59   #8
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Пусто потому что вы не выводите его в той строке.

Ну и кроме .ToString() по ссылке есть и другие варианты.
Как это не вывожу?
PHP код:
Console.WriteLine("Current name of the World is: "world.myCountry.ToString()); 
Выводится должно всё что в кавычках круглых...
hoz вне форума Ответить с цитированием
Старый 06.09.2015, 16:03   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не должно, смотрите документацию по Console.WriteLine
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2015, 16:57   #10
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Не должно, смотрите документацию по Console.WriteLine
Согласено документации Console.WriteLine() записывает текстовое представление заданного значения типа, который в скобках(зависит от перегрузки уже метода). То что в кавычках оно и так типа string - почему-то на экран выводится, а точно дальше... enum - world.myCountry, который я преобразую по ходу в string на экран не выводится. ЧТо ж я не так делаю?
Документацию то, разумеется смотрел. И понял так как написал...
hoz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
консоль не выводится на экран veter123 Общие вопросы C/C++ 1 25.04.2012 20:41
c++ enum tanek Помощь студентам 1 06.12.2011 04:43
Enum в обьект. vjmap C# (си шарп) 2 08.10.2011 11:16
enum Syltan Общие вопросы C/C++ 6 26.11.2009 19:24