由于其保护级别,Mono.Math.BigInteger无法访问

时间:2011-10-03 08:34:20

标签: c# mono biginteger

所以我正在使用ideone在C#中编写一个程序,我第一次使用Mono。我正在尝试使用BigInteger类(Mono.Math.BigInteger),但我一直在收到错误。这是我下面的代码。发生了什么,我该如何解决?谢谢。

using System;
using Mono.Math;

public class TFIB
{       
    public static int Main()
    {       
        const int FIB_SEQUENCE_SIZE = 300;
        BigInteger[] FibonacciSequence = new BigInteger[FIB_SEQUENCE_SIZE];

        // Calculate Fibonacci Sequence
        FibonacciSequence[0] = 0;
        FibonacciSequence[1] = 1;

        for (int i = 2; i < FIB_SEQUENCE_SIZE; i++)
        {
            FibonacciSequence[i] = FibonacciSequence[i - 1] + FibonacciSequence[i - 2];
        }

        while (true)
        {
            string[] tokenInput = Console.ReadLine().Split(' ');
            Mono.Math.BigInteger lowerBound = Mono.Math.BigInteger.Parse(tokenInput[0]);
            BigInteger upperBound = BigInteger.Parse(tokenInput[1]);
            if (lowerBound == 0 && upperBound == 0)
            {
                break;  // ending sequence found
            }
            else
            {
                // find the number of fibonacci sequences
                int numbersInRange = 0;

                for (int i = 0; i < FIB_SEQUENCE_SIZE; i++)
                {
                    if (FibonacciSequence[i] >= lowerBound)
                    {
                        if (FibonacciSequence[i] <= upperBound)
                        {
                            numbersInRange++;
                        }
                        else
                        {
                            continue;   // there is nothing more to find
                        }
                    }
                }

                Console.WriteLine(numbersInRange);
            }
        }

        return 0;
    }
}

这些是我得到的错误:

prog.cs(9,13):错误CS0122:Mono.Math.BigInteger' is inaccessible due to its protection level /usr/lib/mono/2.0/mscorlib.dll (Location of the symbol related to previous error) prog.cs(9,23): error CS0122:由于其保护级别,Mono.Math.BigInteger []'无法访问 /usr/lib/mono/2.0/mscorlib.dll(与先前错误相关的符号的位置) prog.cs(23,27):错误CS0122:Mono.Math.BigInteger' is inaccessible due to its protection level /usr/lib/mono/2.0/mscorlib.dll (Location of the symbol related to previous error) prog.cs(24,17): error CS0122: Mono.Math.BigInteger'由于其保护级别而无法访问 /usr/lib/mono/2.0/mscorlib.dll(与先前错误相关的符号的位置) 编译失败:4个错误,0个警告

3 个答案:

答案 0 :(得分:4)

Mono.Math.BigInteger位于Mono.Security.dll,您确定要引用正确的程序集吗?你得到的编译错误表明你不是。

虽然BigInteger内部使用了mscorlib.dll,但您无法从那里引用它。

或者,您可以通过将using更改为System.Numerics并引用System.Numerics.dll来实现4.0 System.Numerics.BigInteger实施,但它看起来并不像Mono.Math一个,至少现在。

不幸的是,Ideone似乎不允许自定义程序集引用,这意味着您根本无法编译任何解决方案。您只能使用Ideone.com提交错误。

答案 1 :(得分:0)

尝试定位.NET 4.0框架(使用dmcs)

此外,来自t his page

  

是的,但后来看到了:

     

http://blogs.msdn.com/bclteam/archive/2007/04/20/visual-studio-code-   名称 - 奥卡-β-1-已-被释放-INBAR-gazit.aspx

     

特别是:

     

来自客户和合作伙伴的一些好的和建设性的反馈   对扩展数值类型感兴趣。我们已经了解到那里   是一些潜在的改进,我们可以做到这种类型更好   满足他们的需求。因此,我们决定从中移除BigInteger   Orcas的Beta 1发布使我们能够解决这些问题   关注。 - Jon Skeet“

答案 2 :(得分:0)

鉴于您无法引用程序集,只需将BigInteger.cs直接添加到项目中即可。可在此处找到来源:https://github.com/mono/mono/blob/master/mcs/class/Mono.Security/Mono.Math/BigInteger.cs