我在新库中创建了一个方法 这是我的代码
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;
}
}
}
}
}
答案 0 :(得分:1)
将return true
移至for
循环之后。
试着理解我为什么这么说:)
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
这是一个编译错误,与从另一个程序调用它无关。基本上,通过所有if和else,有一条执行路径不会从函数返回值。
虽然您可以在方法的末尾添加return true
来满足
编译器,你的逻辑也有缺陷,因为在内部(在循环中),你返回true,尽管它实际上可能不会成为素数。将return true
移到循环外部并删除循环中的else部分。
要从另一个程序集/程序调用它,您必须引用此程序集并调用该方法。您也可以添加一个using语句。