Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
1

Почему не работает код с полями/свойствами?

09.07.2016, 21:09. Показов 1817. Ответов 58
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Я изучаю программирование с самого начала. Изучаю по книге "C# для школьников. М.Дрейер.". Дошёл до полей (свойств) и я делаю всё, как показано в книге, но в VS у меня пишет, что я написал код с ошибками. Я не понимаю, где я ошибся. Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
class PleaseSayUra
{ static void Main()
    {
        Console.WriteLine("Ура!");
        Console.ReadLine();
    }
}
 
class Animal
{
    static void myAnimal()
    {
 
        // №1. Объявление (Инициализация) переменных класса Animal. Для объявления сначала пишется класс переменной, а затем имя переменной. Завершается объявление знаком ";", сразу после её имени.
        Animal Cat;
        Animal Dog;
        Animal Bird;
 
        // №2. Создание переменной. После объявления переменных нужно создать эти переменные. Сначала пишется имя переменной, после ставим знак "=", пишем "new", пишем класс этой переменной, и завершаем создание знаками "();"
        Cat = new Animal();
        Dog = new Animal();
        Bird = new Animal();
 
        // №3. Поля. Свойства (Характеристики) переменных.
        string KindOfAnimal;
        string Name;
        string Color;
        int NumberOfLegs;
        int Height;
        int Length;
        bool HasTail;
        bool IsMammal;
        bool SpellingCorrect;
 
        Animal Boar;
        Boar = new Animal();
        Boar.KindOfAnimal = "Медведь";
        Boar.Name = "Миша";
        Boar.Color = "Коричневый";
        Boar.NumberOfLegs = 4;
        Boar.Height = 100;
        Boar.Length = 200;
        Boar.HasTail = true;
        Boar.IsMammal = true;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2016, 21:09
Ответы с готовыми решениями:

Почему один и тот-же код в WindowsForms работает, а в Web не работает?
Здравствуйте, подскажите почему один и тот-же код в WindowsForms работает, а в Web не работает....

Простейший код работает в MS IE, почему не работает в Mozilla, FireFox?
Приветствую. Вот собственно код: <html> <head></head> <body> <input type="button"...

Почему не работает код на других компьютерах (на моем работает)?
вот задание: построить ф-ю: на вход поступают 2 строки, на выходе 1 строка, по следующим правилам:...

Не работает код js, почему ? Код внутри
Короче есть форма и js файлик с функциями, ф-я при клике проверяет написано ли там 'Введите имя',...

58
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
10.07.2016, 02:42  [ТС] 41
Author24 — интернет-сервис помощи студентам
Ну, тогда получается, что совокупность классов и метода, который отвечает за вход в программу, является стартовой точкой. А остальное просто инструкции.
0
Заблокирован
10.07.2016, 02:46 42
Цитата Сообщение от Espiond82 Посмотреть сообщение
Ну, тогда получается, что совокупность классов и метода, который отвечает за вход в программу, является стартовой точкой.
Вход в программу - да, это какой-либо статический метод какого-либо класса.

Добавлено через 1 минуту
Цитата Сообщение от Espiond82 Посмотреть сообщение
А остальное просто инструкции.
Эммм... Остальное - это тоже методы, классы, переменные и т. д. Все то же самое. Просто эти методы не используются в качестве стартовых.
0
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
10.07.2016, 02:47  [ТС] 43
nimazzzy, а когда void не является статическим? и какие ещё бывают разновидности?

Добавлено через 46 секунд
Цитата Сообщение от nimazzzy Посмотреть сообщение
Эммм... Остальное - это тоже методы, классы, переменные и т. д. Все то же самое. Просто эти методы не используются в качестве стартовых.
Я это понимаю, но просто так назвал "инструкции"
0
Заблокирован
10.07.2016, 02:47 44
Цитата Сообщение от Espiond82 Посмотреть сообщение
а когда void не является статическим?
Вопрос не понятен, перечитай книгу. void к статике отношения не имеет. Поэтому, я не тролль, но метод с типом возвращаемого значения void не статический ровно тогда, когда он не статический. Серьезно.
Цитата Сообщение от Espiond82 Посмотреть сообщение
и какие ещё бывают разновидности?
Разновидности чего?
1
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
10.07.2016, 02:50  [ТС] 45
nimazzzy, ну я так и думал ))))))))

Добавлено через 2 минуты
Цитата Сообщение от nimazzzy Посмотреть сообщение
и какие ещё бывают разновидности?
есть static void,А ещё что можно поставить перед воидом? Но я забегаю вперёд я только дошёл до методов. Поэтому не буду тут глупые вопросы задавать. Я сейчас спать отправлюсь, а то у меня уже почти 3 ночи. Программирование затянуло
0
Заблокирован
10.07.2016, 02:56 46
Цитата Сообщение от Espiond82 Посмотреть сообщение
есть static void,А ещё что можно поставить перед воидом?
static
public
internal
private
protected
new
virtual
abstract
override
sealed
partial
unsafe
extern
async
1
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
10.07.2016, 10:23 47
Посмотри ещё уроки, многое поймёшь: https://www.youtube.com/watch?... TC&index=1
1
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
10.07.2016, 23:57  [ТС] 48
Мне не понятен ещё один момент. Скажите пожалуйста, если я создаю новый класс, в нём я объявляю новую переменную, то зачем создавать её снова? Расскажите пожалуйста, что за что отвечает. Почему без создания класса, в методе Main нельзя создать класс Animal? Но, кажется, это я понимаю. Дальше, почему при создании пустого класса Animal, в другом классе и методе можно создать переменную Dog? Dog объект да? Почему в самом классе Animal можно объявить переменную Dog, но нельзя её создать. Объясните пожалуйста разницу и или зависимость друг от друга объявление переменнйо в классе от её создания. Спасибо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Learn_Lesson3
{
    class Program
    {
        static void Main()
        {
        }
    }
 
    class Person
    {
        // Поля
        public string firstname;
        public string lastname;
 
        // Метод
        public void ShowFullName()
        {
            Console.WriteLine("Имя: " + firstname + " " + "Фамилия: " + lastname);
        }
 
        Person Ivan;
        Ivan = new Person(); // Ошибка
        Ivan.firstname = "Иван"; // Ошибка
        Ivan.lastname = "Васильевич"; // Ошибка
        Ivan.ShowFullName(); // Ошибка
    }
}
Добавлено через 21 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Learn_Lesson3
{
    class Program
    {
        static void Main()
        {
            Animal Dog;
            Dog = new Animal();
        }
    }
 
    class Animal
    {
        Animal Dog;
        Dog = new Animal(); // Ошибка
    }
 
}
Добавлено через 22 минуты
Не нужен сенсей

Добавлено через 28 минут
Мне
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
11.07.2016, 06:13 49
Espiond82, в теле класса ты можешь располагать только поля, свойства, методы, а так же вложенные классы. У полей могут быть инициализаторы, т.е. ты можешь сделать так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class SomeClass
{
    //dog - поле, его можно иницализировать сразу
    Animal dog = new Animal();
 
    //А можно и так
    Person person = new Person
    {
        FirstName = "Vasiliy",
        LastName = "Pupkin",
        Age = 10
    };
}
А вот вещи вида:
C#
1
2
3
4
5
Person Ivan;
Ivan = new Person();
Ivan.firstname = "Иван";
Ivan.lastname = "Васильевич";
Ivan.ShowFullName();
Это уже полноценный блок кода, который можно располагать только в теле метода и ни где больше.

Т.е. есть инициализаторы (в виде одной строки Animal dog = new Animel(); или в виде блока Animal dog = new Animal{Name = "Шарик", Age = 95}, которые можно располагать в теле класса и есть код, который должен быть только в методе.

Кстати, зачем в классе Animal создаётся объект этого же класса? Это такая попытка создания инициализировать сам объект класса?)))
1
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
11.07.2016, 17:55  [ТС] 50
То есть Animal Dog в классе SomeClass будет работать, даже, если нигде класс Animal не создавать?
Цитата Сообщение от Usaga Посмотреть сообщение
Кстати, зачем в классе Animal создаётся объект этого же класса? Это такая попытка создания инициализировать сам объект класса?)))
Да.

Добавлено через 9 минут
На моём этапе развития главное понимать, что и где располагается и что за что отвечает. Иначе я не смогу понять, что из себя представляет программирование и как им пользоваться.
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
11.07.2016, 18:25 51
Espiond82,
Вообще не считаю правильным начать изучать программирование с C#.
Все-таки объектно-ориентированное программирование (ООП) требует некоторой подготовки.
Изучение синтаксиса, базовых операторов языка, реализация несложных алгоритмов на изучаемом языке совершенно не требуют объектно-ориентированного подхода. Наоборот, ООП здесь даже мешает.
Лучше начать с процедурного языка, например, Си.
Или же можно начать учить C#, пользуясь по возможности процедурной концепцией. При этом необходимость применять ООП появится сама собой при достижении определенного уровня как в знаниях, умениях, так и в сложности программ.
1
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
11.07.2016, 18:49  [ТС] 52
Даценд, спасибо, но, как мне кажется, на первых пара мне всё понятно. Так как я представляю собой "чистый лист", то я, увидев первый раз код программы, не понимаю, что и где находится и что к чему. Я взял самую простую книгу для C# для школьников и в ней по началу всё понятно. Единственное, что я бы добавил в неё, так это полный код ко всем примерам, прямо в самой книге, чтобы ученик видел изменения.
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
11.07.2016, 18:59 53
Цитата Сообщение от Espiond82 Посмотреть сообщение
На моём этапе развития главное понимать, что и где располагается и что за что отвечает.
Это всё разжёвывается в учебниках.

Вот это:
Цитата Сообщение от Espiond82 Посмотреть сообщение
Да.
подразумевает, что ты учебник если и открывал, то только, чтобы на картинки посмотреть. Или учебник - дрянь. Без обид .

Тут есть тема, где ты сможешь выбрать нормальный учебник. Только изучай материал внимательно, ибо поспешишь - форумчан рассмешишь .
0
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
11.07.2016, 19:01  [ТС] 54
В общем, если получится, то нет ничего страшного.

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
подразумевает, что ты учебник если и открывал, то только, чтобы на картинки посмотреть. Или учебник - дрянь. Без обид .
Да я не обижаюсь на такое. В учебнике я как раз и понял, что такое классы, но даже, когда я делал так, как показано в учебнике и на картинках, у меня возникали ошибки, после которых я и обращался сюда. Учебник называется "C# для школьников. Учебное пособие. 2010. М.Дрейер"
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
11.07.2016, 19:05 55
Ну тут либо в учебнике примеры с ошибками (такое бывает), либо ты не внимательно переписывал код из книги. Посмотри другой учебник. Этот старый и, скорее всего, слишком куцый.
1
1 / 1 / 0
Регистрация: 08.07.2016
Сообщений: 40
11.07.2016, 20:15  [ТС] 56
Usaga, просто в самом его начале автор просит скачать архив с примерами с сайта. Но тот сайт больше не работает. Наверно весь код был там.

Добавлено через 2 минуты
Учебников у меня скачано на 4.55Гб.

Добавлено через 39 минут
А вы можете мне рассказать об основных понятиях, что такое программа? А то в разных учебниках начало у всех разное. Кто-то с переменных начинает, кто-то с классов. Вообще про оболочку, в которой создаётся программа. Насколько я понял, то главным с программном коде считается класс с методом Main(). Остальное является вспомогательным. Другие классы могут включать в себя разные методы, поля и свойства, которые могут тоже выполнять какой-то код. Но всё равно этот код должен как-то быть проявлен в главном методе Main() (Ну вы поняли). Меня интересуют разновидности классов и для чего они, разновидности, нужны. Вообще какие программы бывают? Посоветуйте книгу, в котором есть действительно правильное начало для того, чтобы понять само программирование. Ну, или язык.
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
12.07.2016, 05:08 57
Espiond82, по самому языку и платформе .NET ремонедую почитать в этой книге. Про ООП можно посмотреть небольшую статью на википедии и, если надо, пойти дальше по ссылкам. Увидеть (прибилзительно) как ООП может пригодиться в реальности можно в этой замечательной книге.

После этого данные вопросы должны сами собой разрешиться. Я надеюсь.
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
12.07.2016, 08:59 58
Espiond82, вот очень полезный ресурс. В своё время очень много полезного для себя нашёл. Да и до сих-пор помогает.

Добавлено через 2 минуты
Книга для обучения новичка хороша, если её читать с самого начала выполняя все примеры и пробуя что-то из прочитанного самому.
Если же, как автор сходу забуриться в дебри в голове образуется каша и даже элементарные вещи не могут встать на своё место в картине мира.
0
159 / 147 / 59
Регистрация: 11.01.2016
Сообщений: 1,297
12.07.2016, 14:06 59
Espiond82, nimazzzy,
Нормально всё в книге написано.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
/*
 
Из текста книги:
 
Свойства объектов
Если бы я попросил вас перечислить несколько свойств животных, то список мог быть следующим:
‰ Вид животного (Kind of animal).
‰ Рост (Height).
‰ Длина (Length).
‰ Количество лап (Number of legs).
‰ Окрас (Color).
‰ Наличие хвоста (Has a tail).
‰ Является ли млекопитающим (Is a mammal).
При рассмотрении свойств этих животных вы можете присвоить значения каждому из них:
‰ Kind of animal = «Cat» («Кот»).
‰ Height = 50 cm (большой котяра!).
‰ Length = 110 cm (это рысь скорее, а не домашняя кошка!).
‰ Number of legs = 4.
‰ Color = «Black» (черный).
‰ Has tail = true (истина).
‰ Is mammal = true (истина).
 
    В C# эти свойства называются полями. (Слово «свойства» используется для несколько иной
цели, но здесь мы не станем вдаваться в подробности.)
 
 И про пространство имён написано:
 
 Для логического объединения классов
одной тематики рекомендуется
помещать их в одно пространство
имен. Имя пространства должно иметь
содержательный смысл.
 
    namespace Charles.SchoolUtilities
{
    class Animal
    {
    }
}
*/
 
namespace Charles.SchoolUtilities
{
    class PleaseSayUra
    {
        static void Main()
        {
            Bird b = new Bird();
            b.kindOfAnimal = "Орел";
 
            //b.isMammal = false;// Попытка обращения к защищенному полю
            /*
            Доступ к свойствам зависит от того, где появляется приведенный выше
текст: если из метода класса Bird, то доступ к защищенному (protected) свойству
isMammal разрешен, поскольку класс Bird — потомок класса Animal; если же из метода клас-
са клиента, то это свойство будет недоступно. */
 
            b.featherColor = "темно - желтый";
            Console.WriteLine("Ура!");
            Console.ReadLine();
        }
    }
    class Animal
    {
        // Поля класса 
        public string kindOfAnimal;
        public string name;
        public int numberOfLegs;
        public int height;
        public int length;
        public string color;
        bool hasTail;
        protected bool isMammal;
        private bool spellingCorrect;
    }
    // Класс “Bird” — наследник класса “Animal”
    /*
     «Я определяю новый класс Bird, но он должен ав-
    томатически наследовать все свойства класса Animal». Иными словами, класс Bird является про-
    изводным от класса Animal.
    */
    class Bird : Animal
    {
        public string featherColor;
 
    }
}
0
12.07.2016, 14:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2016, 14:06
Помогаю со студенческими работами здесь

Почему не работает код?
Код скопировал с книги, но почему-то не работает: function User(properties) { for...

Почему код не работает?
#include <ctime> #include "std_lib_facilities.h" int main() { vector <int> aaa;...

Почему не работает код?
private void Form1_Load(object sender, EventArgs e) { int n=19; ...

Почему не работает код?
Почему не работает? тык ошибок никаких не показывает, хз в чем дело <!DOCTYPE> <html> <head>...

Почему код не работает?
#include <iostream> using namespace std; unsigned long double* remove(unsigned long double*...

Почему не работает код?
Недавно начал изучать JavaScript, до этого неполохо освоил HTML и CSS. Писал довольно неплохие...


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

Или воспользуйтесь поиском по форуму:
59
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru