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

发布于 2025-01-07 21:35:41 字数 741 浏览 1 评论 0原文

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

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

这是什么意思?

抱歉,我是一名新程序员。

i created a method in a new library
this is my code

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. how can i call that method in my console " program.cs "
  2. i got an error that said " Error 2 'ClassLibrary1.Class1.ISprime(int)': not all code paths return a value"

what does that mean ?

sorry i'm a new programmer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

生来就爱笑 2025-01-14 21:35:41

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.) call the method by doing the following:

ClassLibrary1.Class1.ISprime(123);

or

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

2.) You need to return some value at the very end of the method. I also changed some of the logic:

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.) Answering comment about what's different from the logic. Try running this and you'll see the differences.

    for (int n = -10; n < 10; n++)
    {
        if (Class1.IsPrimeCorrect(n) != Class1.IsPrimeIncorrect(n))
        {
            Console.WriteLine(n);
        }
    }
装迷糊 2025-01-14 21:35:41

return true 移至 for 循环之后。

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

Move the return true to after the for loop.

Try understand why I say that :)

转身以后 2025-01-14 21:35:41

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

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

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

This is a compilation error and unrelated to calling it from another program. Basically , through all the if's and the else's, there is a path of execution that does not return a value from the function.

While you can add a return true at the end of your method to satisfy the
compiler, your logic is also flawed because in the inner (in the loop) else, you are returning true, eventhough it might actually not turn out to be prime. Move the return true outside the loop and remove the else part in the loop.

To call this from another assembly / program, you have to reference this assembly and call the method. You may add a using statement too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文