问题标签 [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.

0 投票
1 回答
97 浏览

.net - 为什么 .NET 将字符串与字符区分开来?

字符串还不够吗?

举个例子,为什么 String 类可以让你
将 char 数组或字符串数​​组传递给它的Split方法?
虽然只使用字符串版本是完全有效的?

  1. String.Split 方法 (Char[], StringSplitOptions)
  2. String.Split 方法 (String[], StringSplitOptions)
0 投票
1 回答
3251 浏览

c# - UnderlyingSystemType 何时与当前 Type 实例不同

System.Type包含一个UnderlyingSystemType属性。MSDN指出

指示由公共语言运行时提供的表示此类型的类型。

在大多数情况下,此属性仅返回当前Type实例。

我的问题是,在什么情况下这个属性返回当前Type实例本身。在这些情况下,当前Type实例和返回的底层系统类型是什么类型?

0 投票
4 回答
3724 浏览

c# - RuntimeHelpers.GetHashCode 有什么作用

RuntimeHelpers.GetHashCode(object)方法允许基于对象的身份生成哈希码。MSDN状态

RuntimeHelpers.GetHashCode 方法始终以非虚拟方式调用 Object.GetHashCode 方法,即使对象的类型已覆盖 Object.GetHashCode 方法。

但是,当Object.GetHashCode()使用 Reflector (.NET 4.0) 检查方法时,我们将看到以下代码:

这让我相信 MSDN 文档是错误的,因为Object.GetHashCode从内部调用RuntimeHelpers.GetHashCode(object)会导致堆栈溢出。

那么它的实际行为是什么RuntimeHelpers.GetHashCode(object)以及它是如何工作的呢?它是如何计算哈希的?

0 投票
1 回答
1560 浏览

c# - MemoryCache 神奇地进入 Disposed 状态

我做了很多测试,我的 MemoryCache 实例在一段时间后被释放,当我调用 Get 方法时总是返回 null。我认为那是在 PollingInterval 之后。

为了模拟,您可以启动一个新的 webapp 并编写以下代码:

我将 PollingInterval 配置为 30 小时,似乎可行。

我认为可能是 AppDomain Unload,但经过一番调查,我认为不是这样:

1-) MSDN 说要为 ASP.NET 使用 MemoryCache:http: //msdn.microsoft.com/en-us/library/ff477235 (v=vs.100).aspx 并说 ASP.NET 4 缓存是用对象缓存:

在 ASP.NET 4 中,缓存是通过使用 ObjectCache 类实现的。

2-) AppDomain 卸载将重置静态变量,创建新的 MemoryCache 实例。

3-) 我像 MemoryCache 一样在 AppDomain Unload 上附加了一个事件(我看到了反编译的源代码),在我的测试中它没有被调用并且 memorycache 被处理掉了。

参考:

MSDN 论坛上的相同帖子:http: //social.msdn.microsoft.com/Forums/en/netfxbcl/thread/1233ffb3-6480-431b-94ca-1190f96cf5f6

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/0a666d5e-9bda-47bd-8dd3-98d32eb5fe60

MemoryCache Empty :设置后返回 null

System.Runtime.Caching.MemoryCache 奇怪的行为?

添加对象后,MemoryCache 为空

MemoryCache 不遵守配置中的内存限制

0 投票
2 回答
6058 浏览

c# - MemoryStream 的 byte[] 缓冲区可以具有可变大小吗?

我正在将一个对象序列化为byte[]using MemoryStream

有什么办法可以设置'serialized'根据大小增长stuffToSerialize

0 投票
2 回答
622 浏览

c# - Enum.TryParse:当返回值为`false`时,out参数值是否有保证或约定?

根据文档Int32.TryParse,如果该方法返回 false,它会将 out 参数设置为零。我在其文档中没有看到 Enum.TryParse 的类似保证。似乎应该有这样的保证,因为该方法必须将 out 参数设置为something,而零最有意义。

是否在其他地方指定或记录了保证,或者真的没有保证?

0 投票
0 回答
94 浏览

silverlight - 无法在 Silverlight XAML 中实例化简单 BCL 对象

如果我声明了正确的 XML 命名空间,我可以使用 Silverlight XAML 中的公共和默认构造函数创建/实例化我自己的任何类ResourceDictionary

但是,如果我尝试使用命名空间中基类库的任何(非 UI)类System.*,我会收到一个错误,即找不到类型。

例如:

给我错误The type 'AesManaged' was not found because 'clr-namespace:System.Security.Cryptography;assembly=System.Core' is an unknown namespace. [Line: 12 Position: 37]

我很困惑,因为我认为这很容易实现。我正在使用 Visual Studio 2012 和 Silverlight 5。System.Core程序集在我的项目中正确链接(默认情况下)。我可以在 XAML 中以不同方式声明命名空间以使其工作吗?如果是这样,怎么做?

0 投票
2 回答
253 浏览

c# - System.Drawing.Color -state 有什么价值?

System.Drawing.Color 有一个私有字段int state,这使得相等比人们对结构的期望要复杂一些。

有谁知道它到底是干什么用的?谁,什么以及为什么设置和阅读它?

0 投票
1 回答
627 浏览

c# - 当 BigInteger 的大小超过 ¼ GB 时,BigInteger 的对数错误

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

当然,对于超过 的数字1,我们必须有一个正对数,对于数字 ,我们必须有一个零对数1,对于介于0and之间的数字,我们必须有一个负对数1(那里没有整数)。我的数字i1i2以上的数字大于,1因为按照惯例,当最高有效字节介于0and之间时127,这意味着 positive BigInteger

现在,如果您阅读 的文档BigInteger.Log,他们声称如果对数“超出 Double 数据类型的范围”,它可能会抛出。现在,显然这需要一台内存容量超过1E+300字节的计算机,而可观测的宇宙太小而无法容纳这样的计算机,所以我想这永远不会发生。

那么为什么这不起作用呢?

PS!Size over 2 ^^ 31bits 表示 的实际值BigInteger超过2 ^^ (2 ^^ 31)或近似circa 8.8E+646456992


更新:我向 Microsoft Connect发送了错误报告。在阅读了讨论后,我也意识到,由于BigInteger单个对象大小的设计和上限为 2 GB,aBigInteger永远不会超过 2 GB(无论您有多少内存)。因此,当BigInteher¼ 和 2 GB 之间时,就会发生此错误。

0 投票
2 回答
1670 浏览

collections - 为什么没有HashSet实现 IReadOnlyCollection?

.NET 4.5 中新的只读接口(例如IReadOnlyCollection<T>IReadOnlyDictionary<TKey,TValue>)非常有用,尤其是因为它们已在常见的 BCL 类型(例如Collection<T>List<T>Dictionary<TKey,TValue>.

但是,HashSet<T>SortedSet<T>没有升级为 implement IReadOnlyCollection<T>,我看不出这个决定背后的逻辑,因为这些类在没有任何修改或破坏性更改的情况下与接口匹配。它只是被 BCL 团队忽略了,还是我在这里遗漏了什么?

(这特别烦人,因为没有内置方法可以将集合包装在 aIReadOnlyCollection<T>中。确实,ReadOnlyCollection<T>包装IList<T>而不是ICollection<T>。我知道编写自己的包装器是微不足道的。)