Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Ошибка: "not all code paths return a value"


Автор: Stream86 3.12.2006, 21:10
Вообщем начинаю осваивать C# на Borland C# Builder из BDS 2006,  но вот не пойму вылетает ошибка:
not all code paths return a value
Вот сам код, это ф-ция для нахождения НОД двух чисел:
Код

class myown
    {
      static public int iNod(int a, int b)
      {
       int min;
        if (a< b)
        min = a;
        else
        min = b;
        for (int i=min; i>0; i--)
        if (((a%i)==0)&&((b%i)==0))
        return i;
      }

функция iNod на C++ билдере работает, а на C# не хочет. Что я не так делаю???

Автор: Djuffin 3.12.2006, 21:38
Добавь в конце  по вкусу
Код

return 0;


или

Код

throw new Exception("Impossible!")


Дело в том, что компилятор думает, что возможны варианты, при которых из функции ничего не будет возвращено. Он же не знает свойств натуральных чисел.

Автор: Stream86 3.12.2006, 21:48
Djuffin
Спасибо, заработало. 
Кто-нить знает, существует ли faq по C# Builder, подобный drkb?

Автор: mr.DUDA 3.12.2006, 22:04
Цитата(Stream86 @  3.12.2006,  20:48 Найти цитируемый пост)
Кто-нить знает, существует ли faq по C# Builder, подобный drkb?

ФАК нет, есть мсдн, там ответы на все вопросы. Рекомендую не пренебрегать туториалами и how-to, их там понапихано дочёрта и с кучей примеров. Обычно все почему-то читают только reference - описание классов и методов - и совершенно обходят вниманием приведённый материал (а ведь он богаче, и по структурированности приближается к FAQ).

Автор: Stream86 3.12.2006, 22:23
mr.DUDA, ссылочка есть? Если нет, то ладно, я поищу. Просто не хочется каждый раз по C# глупые вопросы задавать.

Автор: mr.DUDA 3.12.2006, 22:59
http://msdn.microsoft.com

или аналогичная ссылка на Russian зоне (см. MSDN Worldwide)

Автор: Stream86 3.12.2006, 23:44
Опять задаю глупый вопрос. Вообщем вот аналог на Делфи
for i:=0 to (length(input)-1) do
result:=result+chr(FtI(Cd[i])+191);
Edit9.Text:=result;
result и input типа string, CD - массив типа real (float для с). На шарпе пишу
Код

for (int i = 0; i < input.Length; i++)
result=Convert.ToString((char)(Cd[i]+64));
textBox8.Text=result;

естественно билдер ругается. Но как это написать я чёто не пойму.

Автор: ivashkanet 4.12.2006, 00:09
Да все нормально  smile 
У тя гду-то в другом месте глючит   smile 
Код

            float[] Cd = new float[5];
            string result="";

            for (int i = 0; i < Cd.Length; i++)
                result += Convert.ToString((char)(Cd[i] + 64));

Компилится на ура. Запускаем и получаем полный result "собак"   smile 

Что за ошибку пишет?

Автор: Stream86 4.12.2006, 00:21
да нет массив описан раньше нормально, а input читается с textBox`a
Код

float[] Cd = new float[99];
input=textBox1.Text;
string result="";
.........................
for (int i = 0; i < input.Length; i++)
      result += Convert.ToString((char)(Cd[i] + 64));

вылетает ошибка "Use of unassigned local variable 'result' "
по ходу не хочет писть в result

Добавлено @ 00:26 
ivashkanet, всё, спасибо нашёл ошибку
прсто надо было описать 
Код

string result="";

а у меня было
Код

string result;

Автор: Stream86 4.12.2006, 01:58
Всё!!! Заделал лабу по криптологии по RSA на C#. Естественно она работает с небольшими числами, не больше типа double, но для лабы этого достаточно, это ж не курсач. Вывод: C# - довольно таки интересный и удобный язык, буду изучать.  Перестраиваться с Delphi. Лижбы времени хватало.

Автор: Stream86 12.12.2006, 16:19
Непойму, что я делаю не так при создании массива?
Код

class cons
        {
            static public    int[][] IP1= new int[8][8] 
            {
                {58, 50, 42, 34, 26, 18, 10, 02},
                {60, 52, 44, 36, 28, 20, 12, 04},
                {62, 54, 46, 38, 30, 22, 14, 06},
                {64, 56, 48, 40, 32, 24, 16, 08},
                {07, 49, 41, 33, 25, 17, 09, 01},
                {59, 51, 43, 35, 27, 19, 11, 03},
                {61, 53, 45, 37, 29, 21, 13, 05},
                {63, 55, 47, 39, 31, 23, 15, 07}
            };
        }

Автор: ivashkanet 12.12.2006, 16:23
Цитата(Stream86 @  12.12.2006,  15:19 Найти цитируемый пост)
Непойму, что я делаю не так при создании массива?

Дай текст ошибки. Сколько можно повторять.

Код

            static public    int[,] IP1= new int[8,8] 
            {
                {58, 50, 42, 34, 26, 18, 10, 02},
                {60, 52, 44, 36, 28, 20, 12, 04},
                {62, 54, 46, 38, 30, 22, 14, 06},
                {64, 56, 48, 40, 32, 24, 16, 08},
                {07, 49, 41, 33, 25, 17, 09, 01},
                {59, 51, 43, 35, 27, 19, 11, 03},
                {61, 53, 45, 37, 29, 21, 13, 05},
                {63, 55, 47, 39, 31, 23, 15, 07}
            };

Либо 
Код

            static public    int[][] IP1= new int[][] 
            {
                new int[]{58, 50, 42, 34, 26, 18, 10, 02},
                new int[]{60, 52, 44, 36, 28, 20, 12, 04},
                new int[]{62, 54, 46, 38, 30, 22, 14, 06},
                new int[]{64, 56, 48, 40, 32, 24, 16, 08},
                new int[]{07, 49, 41, 33, 25, 17, 09, 01},
                new int[]{59, 51, 43, 35, 27, 19, 11, 03},
                new int[]{61, 53, 45, 37, 29, 21, 13, 05},
                new int[]{63, 55, 47, 39, 31, 23, 15, 07}
            };


Двумерный массив и массив массивов --- это разные вещи  smile 

Автор: Stream86 12.12.2006, 16:32
Ощибка была "Incorrectly structured array initialized". Первый вариант мне и нужен был, спасибо.
Цитата

Двумерный массив и массив массивов --- это разные вещи

ну естественно. Хотя массив массивов мне в моей проге будет нужен, спасибо что показал как он описывается.

Автор: ivashkanet 12.12.2006, 16:40
Цитата(Stream86 @  12.12.2006,  15:32 Найти цитируемый пост)
спасибо

Заходите еще  smile 
Только в другую тему, пожалуйста, ибо
 smile Одна тема --- один вопрос  smile 

ЗЫ На всякий случай: первый вариант --- двумерный массив, второй --- массив массивов
ЗЗЫ Если объявляешь массив явно, то его размеры можно не указывать. Они вычислялся компилятором. 

Автор: mr.DUDA 12.12.2006, 19:25

 ! 
mr.DUDA
Stream86, одна тема - один вопрос. Эту закрываю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)