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

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

13.12.2013, 20:08. Просмотров 332. Ответов 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();
                
 
        }
    }
}

http://www.cyberforum.ru/csharp-beginners/thread1165453.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 20:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использование делегата, разобрать участок кода (C#):

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

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

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

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

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

4
MansMI
1447 / 1156 / 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
1447 / 1156 / 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
Привет! Вот еще темы с решениями:

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

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

Поместить в класс отдельный участок кода
Вобщем вопрос такой, я делаю программу на C# с формой и компонентами, все...

Упростить участок кода!
Наваял вот такой кодик: int A; int B; int C; ...


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

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

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