当我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,而负日志之间的数字0和1(无整数那里).按照惯例,当最高有效字节在和之间时,我的数字i1和i2以上都大1 …
我经常读到这个框架太大了,一个开发人员无法体验它的每一部分.有一些实际数字肯定有助于把事情放在眼里.
MSDN似乎列出了所有这些,但没有实际的数字(从我能看到的),花费数小时计算它们并不是我对生产时间的看法.
我意识到还有代表,枚举,事件等,但上述类型是最感兴趣的.
此外,基类库(BCL)中的类型数量以及整个框架类库(FCL)的大小将是有趣的.
这些信息有两种用途:
首先,要了解您实际使用的整体框架的数量以及您还需要学习多少.
其次,来自其他平台(和非技术人员)的许多程序员经常会惊讶于程序员可以将大部分时间花在".NET Framework"中.有一些数字肯定有助于解释为什么这不是狭隘的技能/经验的迹象.
[更新]
使用安德鲁的代码(在我的.NET 3.5 SP1系统上),我得到:
Classes: 12688 Value types: 4438 Interfaces: 1296
新的只读接口在.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>.我知道编写自己的包装器是微不足道的.)
Java SE仍然是开源的吗?Oracle可以在专用于GPL之后更改许可吗?
但是,在Oracle Java FAQ上,它声明它是二进制代码许可证.
"Sun开始在GPL下发布Java"
- 自由软件基金会
"采用Sun的Java SE(JDK)和Java ME实现的GPL v2许可证,并将此许可证添加到Sun的Java EE实现中."
- 詹姆斯戈斯林
然而,在Java FAQ页面上,它指出:
- 问:Java技术是免费的吗?我在哪里可以获得有关许可的信息?答:Java SE继续在Sun二进制代码许可证(BCL)下可用,无需额外成本用于通用计算.Java技术支持和EOL路线图提供了更多信息.Java for Business二进制文件在单独的许可条款下提供.下面提供了Java SE和Java for Business许可条款的摘要
- 甲骨文
如果他们可以更改许可证,它会追溯所有已发布的源吗?
我们知道,如果我们在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)
在修改列表的所有其他方法中,版本也会增加.
我的问题是:
我记得我在大约8 - 9年前将这个错误报告发布给微软,但它被拒绝了.现在我再也找不到了.
考虑LINQ下面简单的代码OrderBy和ThenBy:
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) 基本上我想知道为什么MS决定实现一个只支持前进的枚举器:MoveNext().
MovePrevious在整个.NET框架中强制执行这个广泛使用的界面是不是更灵活?
我可以想象它使Linq.ReverseMS更容易实现并且性能更高效,但我不确定这是否会使其他事情变得更慢或者在其他任何事情上都会产生巨大的开销.
任何对此主题有更多了解的人都可以提供更多信息吗?即,优点和具有或不具有的缺点MovePrevious在IEnumerable/IEnumerable<T>.
我有一个叫做的课 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的一部分的人来说,它可能会引起混淆,因为他们不知道去哪里寻找参考.
刚刚Assembly.LoadModule()在intellisense中注意到了.我看到它返回对基本未记录的Module类的引用.
我知道反思很好,我从来没有听说过模块吗?这些是什么?这个名字很诱人.
.net ×6
c# ×6
.net-4.5 ×1
algorithm ×1
biginteger ×1
collections ×1
gpl ×1
ienumerable ×1
java ×1
licensing ×1
linq ×1
logarithm ×1
namespaces ×1
oracle ×1
reflection ×1
sorting ×1
web-services ×1