Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Дмытро
2 / 2 / 1
Регистрация: 01.04.2013
Сообщений: 196
1

Использование делегата, разобрать участок кода

13.12.2013, 20:08. Просмотров 343. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста разобраться как работает строка 26. Вот мне понятно то что объявляется переменная которой посредством метода явного преобразования присваивается введенное с клавиатуры в консоль число которое находится после точки. В строке 25 все понятно там указывается нулевой индекс началом чтения строки а переменная которая содержит индекс точки концом, но в строке 26 я попытался представить себя компилятором и запутался, так как исходя из формулы которая в ней описана следует что начать чтение нужно с первого индекса после точки, а окончить <--индексом с символом точка, что я и не могу понять. т.е. почему компьютер читает сначала последовательно например -->0,1,2...n - (.) а потом как то задом наперед, и дальше первого символа за точкой ничего не видно а возвращается к точке (.)+1 - (.), но выводит и читает все правильно!!! не понятно как то.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        delegate double ProcessDeligate(double param1, double param2);
        static double Umnogenie(double param1, double param2)
        {
            return param1 * param2;
        }
        static double Delenie(double param1, double param2)
        {
            return param1 / param2;
        }
        static void Main(string[] args)
        {
            ProcessDeligate process;
            Console.WriteLine("Введите два числа разделенных точкой:");2.10
            string input = Console.ReadLine();
            int commaPos = input.IndexOf('.');
            double param1 = Convert.ToDouble(input.Substring(0,commaPos));
            double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length - commaPos - 1));
            Console.WriteLine("Введите у чтобы умножить или п чтобы поделить:");
            input = Console.ReadLine();
            if (input == "у")
                process = new ProcessDeligate(Umnogenie);
            else
                process = new ProcessDeligate(Delenie);
            Console.WriteLine("Результат:{0}", process(param1,param2));
            Console.ReadKey();
                
 
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 20:08
Ответы с готовыми решениями:

Разобрать участок кода и результат его работы
Вот сам код на C#: { int a,b; b = 0; for (a = 1; a &lt;= 5; b+=a++) {...

Использование делегата Action
Добрый день. Имеется такая задача Написать статический метод, выполняющий...

Вызов метода(делегата) из неуправляемого кода
Есть способ передать адрес делегата в неуправляемый код как адрес функции, кто...

Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов)
Всё просто: В чём отличия: лямбд, делегатов, анонимных делегатов, методов,...

Перевести участок кода с С++
Собственно, вот код :): for(i=0; i&lt;n; i++){ isNull = true; ...

4
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
13.12.2013, 20:46 2
input.Length - commaPos - 1 это же тебуемая длина,
при input="1.234", commaPos=1, Length=5 => 5-1-1=3 что и требовалось , начиная с commaPos+1
1
Дмытро
2 / 2 / 1
Регистрация: 01.04.2013
Сообщений: 196
13.12.2013, 20:56  [ТС] 3
то есть в методе input.Substring(,) до запятой указывается индекс начальной позиции "читателя" а после запятой требуемая длина символов с начальной позиции а не индекс последнего символа в строке?
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
13.12.2013, 21:00 4
да, а чего контекстной подсказки нет?
1
Дмытро
2 / 2 / 1
Регистрация: 01.04.2013
Сообщений: 196
13.12.2013, 21:39  [ТС] 5
Цитата Сообщение от MansMI Посмотреть сообщение
да, а чего контекстной подсказки нет?
у меня в visual studioo 2010 Express все по английски, а я только 700 слов из англ знаю можно было конечно на msdn посмотреть этот метод, но я даже и не подумал что последним числом указывается именно требуемое количество а не индекс. В том видео по которому я смотрел говорят"тут начало и после точки конец строки " а в строке 25 "тут позиция начала и до позиции где точка"... поэтому я так и думал. сейчас временную ссылку на видео дам

Добавлено через 8 минут
Кликните здесь для просмотра всего текста

там где то с 1:07:00 минуты он говорит об этом...
0
13.12.2013, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 21:39

Как закомментировать большой участок кода?
Чтобы не писать всё время &quot;//&quot; напротив каждой строчки.

Как выполнить участок кода заново?
Доброе время суток, уважаемые форумчане! У меня к вам вопрос, есть вот такой...

Можно ли как-то укоротить участок кода?
Вот участок: List&lt;string&gt; sortList = listBox1.Items.Cast&lt;string&gt;().ToList();...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru