Как я могу вызвать метод из библиотеки в консоль C # - PullRequest
3 голосов
/ 22 февраля 2012

я создал метод в новой библиотеке, это мой код

namespace ClassLibrary1
{
    public class Class1
    {
        public static bool ISprime(int prime)
        {

            if (prime < 2)
                return false;
            else if (prime == 2)
                return true;
            else
            {
                for (int i = 2; i < prime; i++)
                {
                    if (prime % i == 0)
                        return false;
                    else
                        return true;
                }

            }
        }
    }
}
  1. как я могу вызвать этот метод в моей консоли "program.cs"
  2. я получилошибка с сообщением «Ошибка 2« ClassLibrary1.Class1.ISprime (int) »: не все пути кода возвращают значение»

что это значит?

извините, я новый программист.

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

1.) Вызвать метод, выполнив следующее:

ClassLibrary1.Class1.ISprime(123);

или

Class1.ISprime(123);  // make sure to reference ClassLibrary1 at the top of your class

2.) Вам нужно вернуть какое-то значение в самом конце метода. Я также изменил некоторые из логики:

public static bool ISprime(int prime)
{
    if (prime == 1) 
        return false;
    if (prime == 2) 
        return true;

    for (int i = 2; i < Math.Sqrt(prime); ++i)  {
        if (prime % i == 0) 
            return false;
    }

    return true;
}

3.) Ответ на комментарий о том, что отличается от логики. Попробуйте запустить это, и вы увидите различия.

    for (int n = -10; n < 10; n++)
    {
        if (Class1.IsPrimeCorrect(n) != Class1.IsPrimeIncorrect(n))
        {
            Console.WriteLine(n);
        }
    }
1 голос
/ 22 февраля 2012

Это ошибка компиляции, не связанная с вызовом ее из другой программы. По сути, через все if и else есть путь выполнения, который не возвращает значение из функции.

В то время как вы можете добавить return true в конце вашего метода, чтобы удовлетворить компилятор, ваша логика также ошибочна, потому что во внутреннем (в цикле) другом вы возвращаете true, даже если оно может на самом деле не оказаться простым. Переместите return true за пределы цикла и удалите остальную часть в цикле.

Чтобы вызвать это из другой сборки / программы, вам нужно сослаться на эту сборку и вызвать метод. Вы также можете добавить оператор использования.

1 голос
/ 22 февраля 2012

Переместите return true после цикла for.

Попытайтесь понять, почему я говорю это:)

...