如何从库中调用方法到C#控制台

3
我创建了一个新库中的方法,以下是我的代码。
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(int)': not all code paths return a value”。这是什么意思?

对不起,我是一名新的程序员,您能解释一下吗?


1
你真的需要那个 for 循环 吗? - V4Vendetta
@V4Vendetta:我们真的需要找质数吗?;p - leppie
@V4 .. 是的,这个方法必须确保它只有两个因子——1和它本身,没有其他因子。 - Entree
@leppie 抱歉,我的意思是在第一个迭代中就返回一个值,为什么要用for循环 :) - V4Vendetta
3个回答

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时,意味着即使是0或-1也会得到false,然后我们从2开始。那个错误的问题是我没有从解决方案中添加引用,谢谢。 - Abdulrahman Bin Fahad

1
return true移至for循环之后。
试着理解我为什么这样说 :)

那解释了错误信息,现在来帮助调用部分 X-) - Adriaan Stander
是的,但这并没有回答整个问题。 - Adriaan Stander

1

这是一个编译错误,与从另一个程序调用无关。基本上,通过所有的 if 和 else,存在一条执行路径没有从函数中返回值。

虽然你可以在方法末尾添加 return true 来满足编译器的要求,但你的逻辑也有缺陷,因为在内部(在循环中)的 else 中,你返回了 true,尽管它实际上可能并不是质数。将 return true 移到循环外并删除循环中的 else 部分。

要从另一个程序集/程序中调用此方法,您必须引用此程序集并调用该方法。您还可以添加使用语句。


当我按照你说的做后,那个错误消失了..但是如何引用它呢?抱歉我是新手.. >> 我知道如何在IsItPrime(ref x)中引用,其他的我不知道..谢谢 - Abdulrahman Bin Fahad
@AbdulrahmanBinFahad - http://msdn.microsoft.com/zh-cn/library/7314433t(v=vs.90).aspx - manojlds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接