问题标签 [base-class-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET 中是否有“数字”结构/类?
我正在尝试存储一个可变长度的数字,该数字可以有前导零作为该数字的一部分。
.NET 框架中是否有一个类能够存储这样的值而不会丢失有关前导零的信息,并且可以超过 long 的上限?
我目前将它们存储在这样的类中,如果 BCL 中没有可用的结构或类,有什么方法可以更好地编写这个类:
将其用作结构的能力将非常有用,轻松检查相等性的能力也将非常有用。
粗体/斜体项目是此类的要求。
.net - 捆绑 .NET dll 以在 .NET-less 机器上运行应用程序?
AFAIK,ngen将 MSIL 转换为本机代码(也称为 pre-JIT),但我从未过多关注它对启动性能的影响。Ngen 的应用程序仍然需要 .NET基类库(运行时)。
由于基类库拥有我们的 .NET 程序集所需的一切(对吗?),是否可以将框架的 DLL 与我的 ngen 应用程序一起提供,以便它不需要安装运行时?(例如,大多数 Windows XP 机器的场景)
哦,请不要提及Remotesoft 的 Salamander Linker或Xenocode的 Postbuild。它们不适合我(和许多人)当前的预算(而且它们似乎只是将框架捆绑在虚拟化环境中,这意味着我认为下载量很大并且启动时间很慢)
编辑:
我现在知道,ngen 并没有像我想象的那样做。
但是是否可以在不使用 VM 的情况下将 .NET 文件与应用程序捆绑在一起?
c# - 转到被认为有害的声明?
如果上面的陈述是正确的,那么为什么当我在 .Net BCL 上使用反射器时,我看到它被大量使用?
编辑:让我换个说法:我在反射器中看到的所有 GO-TO 都是由人类或编译器编写的吗?
.net - 为什么需要为类成员提及“.NET Compact Framework 支持”?
在 MSDN 文档中,许多 .NET 类方法(如 ArrayList )提到“受 .NET Compact Framework 支持”。
它是如何在内部进行修改以使其得到 .NET compact Framework 的支持?我假设所有 .NET Base 类库都可以在 .NET compact Framework 上使用。
.net - 为什么存在 String.Format 的重载?
我正在使用 Reflector 来查看 String.Format 的实现,并且一直认为采用 1、2 和 3 个参数的 String.Format 的重载是采用对象数组的方法的优化版本。但是,我发现它们在内部创建了一个对象数组,然后调用了一个采用对象数组的方法。
1 个参数
2个参数
3 个参数
对象数组
在内部,它们最终都使用相同的代码,因此使用 1、2 和 3 参数版本并不比对象数组版本快。
所以我的问题是——它们为什么存在?
当您使用带有逗号分隔值列表的对象数组版本时,编译器会自动将参数转换为对象数组,因为 params/ParamArray 关键字本质上是 1、2 和 3 版本所做的,因此它们看起来是多余的。为什么 BCL 设计者要添加这些重载?
.net - 为什么 IDictionary(非泛型)不继承自 IEnumerable?
IDictionary<TKey, TValue>
继承自IEnumerable<KeyValuePair<TKey, TValue>>
,但IDictionary
由于某种原因不继承自IEnumerable<DictionaryEntry>
。我想知道为什么?每次.OfType<DictionaryEntry>()
我需要对IDictionary
.
c# - 为什么 BCL 集合使用结构枚举器,而不是类?
我们都知道可变结构通常是邪恶的。我也很确定,因为IEnumerable<T>.GetEnumerator()
返回 type IEnumerator<T>
,结构会立即被装箱到引用类型中,这比它们一开始只是引用类型的成本要高。
那么,为什么在 BCL 泛型集合中,所有枚举数都是可变结构?肯定有一个很好的理由。我唯一想到的是可以轻松复制结构,从而在任意点保留枚举器状态。但是向接口添加一个Copy()
方法IEnumerator
会不那么麻烦,所以我不认为这本身就是一个合乎逻辑的理由。
即使我不同意某个设计决定,我也希望能够理解其背后的原因。
.net - 确定 .NET 程序集框架依赖项的工具
我正在寻找一种工具,它可以告诉我 .NET 程序集将在哪些框架下工作。或者更具体地说,其中的方法需要什么 BCL(基类库)版本。
触发我的是:今天我收到了一个针对我们正在制作的应用程序的错误报告,它基本上说:“你正在使用 WaitOne(Int32),但这仅适用于 .NET 3.5 SP1,不适用于普通 3.5;使用 WaitOne( Int32,Boolean) 代替"。确实,用户是对的。WaitOne 在 .NET 中一直存在,但是在 1.0、2.0 等的服务包中引入了只需要一个 int 的特定重载。因此,我们的应用程序将在例如普通的 3.5 框架安装时失败。坦率地说,我们没有对此进行测试。
我不是在安装了各种框架的机器上测试/加载应用程序,这不是很容易,因此我正在寻找一种工具,它可以简单地告诉我给定程序集中的方法将在哪些正式发布的框架版本下工作 -或者,更有趣的是,它不能在哪些版本下运行以及有什么问题的方法是什么。
c# - 目录的最大字符数或长度是多少?
使用 C# 时,目录的典型路径可以包含的最大字符数是多少?
例如C:\test\
长度为 7 个字符,最大长度是多少?