Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/34: Рейтинг темы: голосов - 34, средняя оценка - 4.50
 Аватар для Antoxa_ru
0 / 0 / 0
Регистрация: 28.03.2009
Сообщений: 17

Прошу помощи в освоении C#

03.04.2009, 20:31. Показов 6630. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Решил изучать C#, до сего момента никогда никаких языков программирования не изучал, поэтому буду задавать здесь разные вопросы. Прошу по мере возможности отвечать на них, какими бы тупыми они не казались
Вот первый :
C#
1
2
3
4
5
6
7
8
9
10
    {
        static void Main(string[] args)
        {
            string[] Lines = {"This","is","C#","sting", "array"};
            int g;
            Console.Write(Lines[0]);
            for (g = 0; g < Lines.Length; g++) ;
            Console.Write("" + Lines[g]);
            Console.ReadLine();
        }
Почему при запуске программы возникает это исключение Индекс находился вне границ массива. ведь в программе используется свойство Length, которое отслеживает размер массива?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2009, 20:31
Ответы с готовыми решениями:

Очень прошу помощи по C#:(
Знаю, не приятно просить .На уроках не все поняла ,а сейчас решить задачу не могуПросидела несколько дней в поисках ответов в инэте, но без...

Прошу помощи с настройками
Здравствуйте, возникла ну оч большая проблема (для меня). Есть программа, при входе в нее выбираешь пользователя, для каждого пользователя...

Змейка. Прошу о помощи найти ошибку :D
Здравствуйте! Сегодня ради развлечения решил написать консольную змейку на c# Вроде все написал, но при тесте обнаружил, что хвост змейке...

39
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
09.04.2009, 17:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Antoxa_ru Посмотреть сообщение
Feuer, Надо сказать, что тут Вы работали вообще без конструктора..

А как же конструктор по умолчанию? И прокомментируйте пожалуйста пост №18
ну я имел ввиду что он вообще не определил своего конструктора(ни статик, ни обычного).
1
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
09.04.2009, 18:16
Цитата Сообщение от Antoxa_ru Посмотреть сообщение
Возникли новые вопросы, в которых очень хочу разобраться Если я например объявляю массив и инициализирую его
C#
1
int[] nums=new int[]{1,4,6,98,44,23,0,43,56}
обращение к методам Sort(), Reverse() должно осуществляться непосредственно из класса Array, т.к. эти методы статические?, а вот к методам таким GetLowerBound() GetUpperBound() можно обращаться непосредственно из объекта nums типа Array:
C#
1
nums.GetUpperBound(0)
поэтому:
1 - Размышляю я правильно?
2 - Как оперделить какие методы статические, а какие нет (например в Visual Studio)? или же их все просто нужно учить по всяким справочникам?
Для меня проще работать со списками:
List<int> nums = new List<int>();
а там уже и сотрировать: nums.Sort;
0
 Аватар для Antoxa_ru
0 / 0 / 0
Регистрация: 28.03.2009
Сообщений: 17
09.04.2009, 19:10  [ТС]
homich77, До списков я еще пока не добрался
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
09.04.2009, 19:53
Цитата Сообщение от Antoxa_ru Посмотреть сообщение
homich77, До списков я еще пока не добрался
)) Значит на будущее.
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
09.04.2009, 20:15
Вот кстати по поводу переменной 'a' я тоже задумывался. По поводу того, изменяет он прежнюю переменную или создает её 10 раз. Но скорее я склонюсь к тому, что изменяет старую (возможно я ошибаюсь). Потому что в случае если бы создавалась каждый раз новая переменная, то её значение каждый раз было бы 3, а в свойстве 'get' к ней прибавлялось бы 1. Таким образом на экран бы выводилось 4. Всегда. Плюс, известно, что статическая переменная принадлежит классу в целом, а не к его отдельному экземпляру. Думаю это не правильно для класса создавать 10 статических переменныйх с одним идентификатором. Как только я это выясню точно, я дам знать.

Добавлено через 3 минуты 57 секунд
Цитата Сообщение от Feuer Посмотреть сообщение
ну я имел ввиду что он вообще не определил своего конструктора(ни статик, ни обычного).
Можете мне объяснить, для чего в классе, который содержит всего одну (причем явно заданную) статическую переменную определять ходя бы обычный конструктор?
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
09.04.2009, 20:19
Цитата Сообщение от Destroyer87 Посмотреть сообщение
Можете мне объяснить, для чего в классе, который содержит всего одну (причем явно заданную) статическую переменную определять ходя бы обычный конструктор?
Для того чтобы сравнить принцип его работы со статическим!
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
09.04.2009, 20:24
А если я итак знаю как работает обычный конструктор (и скорее всего автор вопроса тоже знает это)?
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
09.04.2009, 20:35
Давайте я приведу три примера:
Первый используется обычный конструктор для инициализации статик члена:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass {
    public static int a;
    public MyClass() {
        a = 0;
    }
}
class Program {
    static void Main(string[] args) {
        MyClass mycl = new MyClass();
        MyClass.a = 20;
        MyClass mycl2 = new MyClass(); //MyClass.a сбрасывается в 0
        Console.WriteLine(MyClass.a); //MyClass.a = 0
    }
}
При создании нового экземпляра - значение члена сбрасывается(вызывается обычный к-ор).

Второй - создаем статик конструктор для инициализации статик члена.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyClass {
    public static int a;
    static MyClass() {
        a = 0;
    }
    public MyClass() {
    }
}
class Program {
    static void Main(string[] args) {
        MyClass mycl = new MyClass();
        MyClass.a = 20;
        MyClass mycl2 = new MyClass(); //MyClass.a остается равным 20
        Console.WriteLine(MyClass.a); //MyClass.a = 20
    }
}
Сколько раз бы не вызвался обычный конструктор, статик к-ор вызовется только один раз.

Ну и последнее - зачем там было объявлять обычный конструктор(как я сказал для сравнения). Здесь я вообще опущу объявление конструкторов, т.е. будет вызываться по умолчанию.
C#
1
2
3
4
5
6
7
8
9
10
11
class MyClass {
    public static int a;
}
class Program {
    static void Main(string[] args) {
        MyClass mycl = new MyClass();
        MyClass.a = 20;
        MyClass mycl2 = new MyClass(); //MyClass.a тоже остается равным 20
        Console.WriteLine(MyClass.a); //MyClass.a = 20
    }
}
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
09.04.2009, 20:51
Я с этим абсолютно согласен. Это все правильно. Наверное и надо было изначально привести пример с 3-мя типами.... Не подумал... Исправлюсь.
0
 Аватар для Antoxa_ru
0 / 0 / 0
Регистрация: 28.03.2009
Сообщений: 17
09.04.2009, 21:19  [ТС]
Feuer, Как я понимаю во втором случае мы сначала замещаем конструктор по умолчанию, а затем замещаем статический конструктор конструктором по умолчанию?
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
09.04.2009, 22:28
Цитата Сообщение от Antoxa_ru Посмотреть сообщение
Feuer... а затем замещаем статический конструктор конструктором по умолчанию?
Нет, они существуют параллельно. Почитайте msdn - http://msdn.microsoft.com/ru-r... 6w0hc.aspx .
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
10.04.2009, 02:39
Цитата Сообщение от Feuer Посмотреть сообщение
Давайте я приведу три примера:
Использовать обычный конструктор для инициализации статик членов, по меньшей мере не эффективно. Преобразуем первый пример:
C#
1
2
3
4
5
6
7
8
9
10
11
class MyClass {
        public static int a;
        public MyClass() {
                a = 0;
        }
}
class Program {
        static void Main(string[] args) {
                Console.WriteLine(MyClass.a); //Угадайте, что получим
        }
}
Для доступа к статичным членам не требуется экземпляр. Поэтому в данном случае получим исключение. Для инициализации статичных членов как раз и нужен статичный конструктор, который вызывается один раз. Т.е. перепишем:
C#
1
2
3
4
5
6
7
8
9
10
11
class MyClass {
        public static int a;
        public static MyClass() {
                a = 0;
        }
}
class Program {
        static void Main(string[] args) {
                Console.WriteLine(MyClass.a); //MyClass.a = 0
        }
}
Кроме того явное использование статичных конструкторов влияет на производительность (можно поискать на тему beforefieldinit). Лучше использовать:
C#
1
2
3
class MyClass {
        public static int a = 0;
}
0
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
10.04.2009, 18:29
Цитата Сообщение от Green Посмотреть сообщение
Использовать обычный конструктор для инициализации статик членов, по меньшей мере не эффективно.
Ну это просто для примера было сделано. И, пардон, конечно, но Вы там несколько ошиблись - статик конструктор не может иметь модификаторов доступа.
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
10.04.2009, 18:57
Человек задал вопрос относительно необходимости статических конструкторов, способах их использования. Упрекать человека в том, что он допустил ошибку в коде, тоже не верно. Я например тоже часто код пишу прямо на странице форума, и иногда можно допустить ошибку. Плюс, если ты не используешь статические конструкторы слишком часто, в отличие от обычных, ты автоматически пишешь обычный конструктор, причем не всегда осознавая этого. Тем более, что этот код писался не для демонстрации того, что человек умеет писать безупречный код в блокноте, а для того чтобы донести идею высказывания. Кстати говоря, надо быть благодарным человеку, если он пытается объяснить идею используя примеры. По себе знаю, что объяснения без демонстрации, как правило бесполезны. Я считаю, что лучший способ обучения - практика. Feuer - тебе респект за твои примеры, они как раз и оказались ответом на поставленный вопрос. Green - Респект за стремление объяснить, что будет правильней использовать и как (я тоже считаю, что в программе код должен быть хорош, но производительность важнее).
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
13.04.2009, 04:50
Feuer, извиняюсь, писал здесь и не углядел..
0
 Аватар для Antoxa_ru
0 / 0 / 0
Регистрация: 28.03.2009
Сообщений: 17
19.04.2009, 13:13  [ТС]
Если я к примеру создал класс Time в одном проекте и класс Date в другом, как мне собрать один проект так, чтобы я мог из класса Time вызвать метод определенный в классе Date (использовать namespase?), и обязательно ли эти 2 класса должны находиться в одном каталоге?

СПАСИБО!
0
 Аватар для _NuClear
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
21.04.2009, 12:55
да должны быть в одном каталоге, или в GAC(windows\assembly)
на счет неймспейс думаю что нужно использовать, а можно слинковать в сборку ..
могу ошибаться так что.... )))
1
 Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21
07.06.2009, 06:36
Привет всем! Не решился создавать новую тему а решил воспользоваться этой. Помогите мне с реализацией этих двух формул на C#:
1. Cos(a) + Sin(a) + Cos(3*a) + Sin(3*a);

2. 2 * √2 * Cos(a) * Sin(Пи / 4 + 2 * a);

"a" как вы поняли переменная она задается в программе и при это это формулы должны выдавать одниковые результаты. Это возможно? Вот как я это сделал на C#:

C#
1
2
3
4
5
6
7
8
9
10
11
12
   static void Main(string[] args)
        {
            double a,z1,z2;
            Console.Write("Введите а: ");
            a = Convert.ToDouble(Console.ReadLine());
            
            z1 = Math.Cos(a) + Math.Sin(a)
                + Math.Cos(3 * a) + Math.Sin(3 * a);
            
            z2 = (double)1 / 4 - (double)1 / 4 * 
                Math.Sin((double)5 / 2 * Math.PI - 8 * a);
        }
Но что я только не делал они не хотят выдавать одинаковые результы. Excel тоже такие же выдает результаты? Может в книге опечатка?
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
07.06.2009, 10:21
Не знаю как у тебя получились разные ответы (может потому что ты не так записываешь вторую формулу). У меня это выглядит так (выдаёт одинаковый результат!):
C#
1
sum2 = 2 * Math.Sqrt(2) * Math.Cos(a) * Math.Sin(Math.PI / 4 + 2 * a);
1
 Аватар для Sen
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 21
07.06.2009, 12:07
Я немного невнимательный был вторая формула такая:

2. 1/4 - 1/4 * sin(5/4 * пи - 8а);

А то я написал второе задание, оно у меня работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2009, 12:07

Прошу помощи в переносе алгоритма в Windows Forms
using System; class Algorithm { static void Main() { Search(); OnPaint(); Console.ReadKey(); ...

Прошу совета в освоении АВР
Доброго времени суток форумчанам! Нахожусь в начале изучения контроллеров, пишу только пока в ассемблере, поэтому прошу совета. Техническое...

Абрамов № 61, 85, 334(а), 374, 67(б,а). Прошу помочь, мне нужны эти задания для зачета прошу помощи.
Прошу помощи, скачайте файл Абрамов (пожалуйста), номер 61, 85, 334(а), 374, 67(а,б). Помочите чем сможете пожалуйста

прошу помощи
Помогите получить зачетку. Надо написать токую програму на С : User вводит цифру нп: 7965132 а на монитор выводитса : 6,2. тоесть...

Прошу помощи!
Здравствуйте!Помогите если можете с задачами,знаю что задачи для человека &quot;шарюшего&quot; в делфи это разплюнуть:) (по крайней мере...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru