2012-02-22 2 views
2

я создал метод в новой библиотеке это мой кодКак я вызвать метод из библиотеки на C# консоли

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. я получил сообщение об ошибке, что сказал «Error 2„ClassLibrary1.Class1.ISprime (интермедиат)“: не все пути кода возвращают значение»

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

жаль, что я новый программист.

+1

Вам действительно нужно, чтобы 'for loop'? – V4Vendetta

+0

@ V4Vendetta: Нам действительно нужно найти простые числа? ; p – leppie

+0

@ V4 .. да, метод должен убедиться, что он имеет только два делителя ТОЛЬКО - 1 и сам, и нет других – MacGyver

ответ

1

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); 
     } 
    } 
+0

Код логически неверен. – leppie

+0

Можете ли вы проверить мою новую логику? – MacGyver

+0

Да, это лучше :) – leppie

1

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

Попробуйте понять, почему я говорю, что :)

+0

Это объясняет сообщение об ошибке, теперь, чтобы помочь с вызывающей частью X-) –

+0

@astander: Поймите, почему ваш код был * неправильным *. – leppie

+0

правда, но это не отвечает на весь вопрос. –

1

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

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

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

+0

, что ошибка исчезла, когда я сделал то, что вы сказали .. но как можно ссылаться? извините, но я новый ..>> Я знаю, как ссылаться в IsItPrime (ref x), другую вещь, которую я не знаю. Знаю .. thanx –

+0

@AbdulrahmanBinFahad - http://msdn.microsoft.com/en-us/library/7314433t(v=vs.90) .aspx – manojlds

+0

manojlds: спасибо, что помогли мне –