【问题标题】:How can i call a method from library to C# console如何从库调用方法到 C# 控制台
【发布时间】:2012-02-22 06:05:36
【问题描述】:

我在新库中创建了一个方法 这是我的代码

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)': 并非所有代码路径都返回值”

这是什么意思?

对不起,我是一个新程序员。

【问题讨论】:

  • 你真的需要那个for loop 吗?
  • @V4Vendetta:我们真的需要找到素数吗? ;p
  • @V4 .. 是的,该方法必须确保它只有两个除数——1和它自己,没有其他的
  • @leppie 抱歉,我的意思是它会在第一次迭代本身中返回一个值,所以为什么 for 循环 :)

标签: c# methods class-library


【解决方案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】:

return true 移动到for 循环之后。

试着理解我为什么这么说:)

【讨论】:

  • 这解释了错误消息,现在帮助调用部分 X-)
  • 是的,但这并不能回答整个问题。
【解决方案3】:

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

虽然您可以在方法末尾添加 return true 以满足 编译器,您的逻辑也有缺陷,因为在内部(在循环中)else 中,您返回的是 true,即使它实际上可能不是素数。将return true移到循环外,去掉循环中的else部分。

要从另一个程序集/程序调用它,您必须引用该程序集并调用该方法。您也可以添加 using 语句。

【讨论】:

  • 当我按照你说的做的时候那个错误消失了..但是如何引用它呢?抱歉,但我是新人.. >> 我知道如何在 IsItPrime(ref x) 中引用其他我不知道的东西;不知道 ..thanx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多