标签: base-class-library

当BigInteger的大小超过¼千兆字节时,BigInteger的对数错误

当我BigInteger的大小超过2千兆位(即¼千兆字节;我通过反复试验找到了这个阈值)时,对数方法给出了错误的答案.这个简单的代码说明:

  byte[] bb;

  bb = new byte[150000001];
  bb[150000000] = 1;  // sets most significant byte to one
  var i1 = new BigInteger(bb);
  double log1 = BigInteger.Log(i1);
  Console.WriteLine(log1);   // OK, writes 831776616.671934

  bb = new byte[300000001];
  bb[300000000] = 1;  // sets most significant byte to one
  var i2 = new BigInteger(bb);
  double log2 = BigInteger.Log(i2);
  Console.WriteLine(log2);   // Broken, gives negative number, should be twice 831776616.671934
Run Code Online (Sandbox Code Playgroud)

当然,我们必须有一个数超过正数1,零日志的数量1,而负日志之间的数字01(无整数那里).按照惯例,当最高有效字节在和之间时,我的数字i1i2以上都大1 …

.net c# logarithm biginteger base-class-library

11
推荐指数
1
解决办法
613
查看次数

.NET(3.5)框架类库究竟有多大?

我经常读到这个框架太大了,一个开发人员无法体验它的每一部分.有一些实际数字肯定有助于把事情放在眼里.

MSDN似乎列出了所有这些,但没有实际的数字(从我能看到的),花费数小时计算它们并不是我对生产时间的看法.

  • 命名空间数
  • 课程数量
  • 结构数量
  • 接口数量

我意识到还有代表,枚举,事件等,但上述类型是最感兴趣的.

此外,基类库(BCL)中的类型数量以及整个框架类库(FCL)的大小将是有趣的.

这些信息有两种用途:

首先,要了解您实际使用的整体框架的数量以及您还需要学习多少.

其次,来自其他平台(和非技术人员)的许多程序员经常会惊讶于程序员可以将大部分时间花在".NET Framework"中.有一些数字肯定有助于解释为什么这不是狭隘的技能/经验的迹象.

[更新]

使用安德鲁的代码(在我的.NET 3.5 SP1系统上),我得到:

Classes: 12688
Value types: 4438
Interfaces: 1296

.net base-class-library

10
推荐指数
2
解决办法
2901
查看次数

为什么HashSet <T>不实现IReadOnlyCollection <T>?

新的只读接口在.NET 4.5,如IReadOnlyCollection<T>IReadOnlyDictionary<TKey,TValue>是非常有用的,特别是因为他们已经在通用的BCL实现,例如Collection<T>,List<T>Dictionary<TKey,TValue>.

但是,HashSet<T>SortedSet<T>没有升级到实现IReadOnlyCollection<T>,我看不到这个决定背后的逻辑,因为这些类匹配接口而没有任何修改或改变.是不是被BCL团队忽视了,还是我在这里缺少什么?

(这尤其令人讨厌,因为没有内置的方法将一个集合包装在一个内部IReadOnlyCollection<T>.确实,ReadOnlyCollection<T>包装IList<T>而不是ICollection<T>.我知道编写自己的包装器是微不足道的.)

collections base-class-library .net-4.5

10
推荐指数
2
解决办法
1583
查看次数

为什么.NET的EnableDecompression默认值在2.0和3.0之间变化?

我们使用.NET Web服务 - 非WCF和WCF,尽管绝大多数是非WCF,由于遗留原因 - 相当严重,而且当我在Fiddler中测试时,我注意到响应体大小很漂亮大.然后我注意到请求标头没有任何Accept-Encoding标头.

在进行一些挖掘之后,似乎在.NET BCL版本2.03.0之间,属性的默认值HttpWebClientProtocol.EnableDecompression(来自所有 - 所有wsdl.exe存根的WS存根的派生类)发生了变化.我很好奇原因(可能与WCF有关),以及当你简单地链接到不同的库时,是否有任何其他[漂亮]基本变化非常安静.

.net c# web-services base-class-library

8
推荐指数
1
解决办法
1559
查看次数

Java SE仍然是GPL吗?

Java SE仍然是开源的吗?Oracle可以在专用于GPL之后更改许可吗?

但是,在Oracle Java FAQ上,它声明它是二进制代码许可证.

"Sun开始在GPL下发布Java"

- 自由软件基金会

"采用Sun的Java SE(JDK)和Java ME实现的GPL v2许可证,并将此许可证添加到Sun的Java EE实现中."

- 詹姆斯戈斯林

然而,在Java FAQ页面上,它指出:

  1. 问:Java技术是免费的吗?我在哪里可以获得有关许可的信息?答:Java SE继续在Sun二进制代码许可证(BCL)下可用,无需额外成本用于通用计算.Java技术支持和EOL路线图提供了更多信息.Java for Business二进制文件在单独的许可条款下提供.下面提供了Java SE和Java for Business许可条款的摘要

- 甲骨文

如果他们可以更改许可证,它会追溯所有已发布的源吗?

java oracle licensing gpl base-class-library

8
推荐指数
1
解决办法
7016
查看次数

行为不一致:在foreach循环中调用时,List <T> .Sort方法中不会抛出异常

我们知道,如果我们在foreach循环中更改集合,则抛出以下异常:

InvalidOperationException:Collection已被修改; 枚举操作可能无法执行.

但是有一种行为方式不同:List<T>.Sort(Comparison<T>).

例如(dotnetfiddle.net):

List<int> list = new List<int> { 2, 1 } ;
foreach (int i in list)
{
    //list.Sort(Comparer<int>.Default);         // InvalidOperationException
    //list.Sort();                              // InvalidOperationException
    list.Sort((a, b) => a.CompareTo(b));        // No exception

    Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)

根据referencesource.microsoft.com,我们可以看到这个特定方法没有版本增量,而上面的方法中有一个:

public void Sort(int index, int count, IComparer<T> comparer) {
    ...
    _version++;
}
Run Code Online (Sandbox Code Playgroud)

在修改列表的所有其他方法中,版本也会增加.

我的问题是:

  1. 这是一个错误吗?或者有这种行为的原因?
  2. 如果它是一个错误,为什么它多年没有修复?

我记得我在大约8 - 9年前将这个错误报告发布给微软,但它被拒绝了.现在我再也找不到了.

c# base-class-library

8
推荐指数
1
解决办法
173
查看次数

为什么使用Linq-to-Objects进行订购会将项目与自己进行比较?

考虑LINQ下面简单的代码OrderByThenBy:

static void Main()
{
  var arr1 = new[] { "Alpha", "Bravo", "Charlie", };

  var coStr = Comparer<string>.Create((x, y) =>
  {
    Console.WriteLine($"Strings: {x} versus {y}");
    return string.CompareOrdinal(x, y);
  });

  arr1.OrderBy(x => x, coStr).ToList();

  Console.WriteLine("--");

  var arr2 = new[]
  {
    new { P = "Alpha", Q = 7, },
    new { P = "Bravo", Q = 9, },
    new { P = "Charlie", Q = 13, },
  };

  var coInt = Comparer<int>.Create((x, y) =>
  {
    Console.WriteLine($"Ints: {x} …
Run Code Online (Sandbox Code Playgroud)

c# linq sorting algorithm base-class-library

8
推荐指数
1
解决办法
254
查看次数

IEnumerable/IEnumerable <T>接口只有MoveNext的原因是什么?

基本上我想知道为什么MS决定实现一个只支持前进的枚举器:MoveNext().

MovePrevious在整个.NET框架中强制执行这个广泛使用的界面是不是更灵活?

我可以想象它使Linq.ReverseMS更容易实现并且性能更高效,但我不确定这是否会使其他事情变得更慢或者在其他任何事情上都会产生巨大的开销.

任何对此主题有更多了解的人都可以提供更多信息吗?即,优点和具有或不具有的缺点MovePreviousIEnumerable/IEnumerable<T>.

.net c# ienumerable base-class-library

7
推荐指数
2
解决办法
691
查看次数

是否正在使用System.*您自己的类上的命名空间被认为是不良实践?

我有一个叫做的课 ConfigurationElementCollection<T>

这是一个通用的实现 System.Configuration.ConfigurationElementCollection

它存储在我们的解决方案',Project.Utility.dll中,但我已将其定义为System.Configuration命名空间的一部分

namespace System.Configuration
{
    [ConfigurationCollection(typeof(ConfigurationElement))]
    public class ConfigurationElementCollection<T> : 
        ConfigurationElementCollection where T : ConfigurationElement, new()
    {
       ...
    }
}
Run Code Online (Sandbox Code Playgroud)

将类放在System.*名称空间中当它们不属于系统时被认为是不好的做法.*基类库?

从表面上看,似乎有意义,因为它在同一个地方保留了类似功能的类似类.然而,对于那些没有意识到它实际上是非.net BCL的一部分的人来说,它可能会引起混淆,因为他们不知道去哪里寻找参考.

.net c# namespaces naming-conventions base-class-library

7
推荐指数
1
解决办法
474
查看次数

什么是System.Reflection.Module?

刚刚Assembly.LoadModule()在intellisense中注意到了.我看到它返回对基本未记录的Module类的引用.

我知道反思很好,我从来没有听说过模块吗?这些是什么?这个名字很诱人.

.net reflection base-class-library

7
推荐指数
2
解决办法
785
查看次数