1629得票6回答
使用Try-catch会加速我的代码吗?

我编写了一些代码来测试try-catch的影响,但看到了一些令人惊讶的结果。static void Main(string[] args) { Thread.CurrentThread.Priority = ThreadPriority.Highest; Process.Get...

440得票12回答
在C#中,为什么String是一种行为类似值类型的引用类型?

尽管字符串(String)具有大部分值类型的特征,例如不可变性和 == 重载以比较文本而不是确保引用相同对象,但它实际上是一个引用类型。 那么为什么字符串不是值类型呢?

439得票16回答
解决MSB3247 - 发现同一依赖程序集的不同版本之间的冲突

当使用msbuild编译一个.NET 3.5解决方案时,会出现此警告。 有时候可以使用NDepend来帮助解决问题,但在这种情况下它没有提供更多的细节。就像Bob一样, 我最终不得不打开ILDASM中的每个程序集,直到找到引用旧版本相关程序集的那个程序集。 我尝试使用VS 2010 Bet...

417得票18回答
在CLR中,强制转换和使用'as'关键字的区别

在编写接口时,我发现自己经常需要进行许多类型转换或对象类型转换。 这两种转换方法有什么区别吗?如果有的话,这是否会产生成本差异或者如何影响我的程序呢?public interface IMyInterface { void AMethod(); } public class MyC...

345得票10回答
使用 "as" 和可空类型的性能惊喜

我正在修改《深入理解C#》第四章关于可空类型的部分,并添加了一个使用 "as" 运算符的小节,该运算符允许您编写以下代码:object o = ...; int? x = o as int?; if (x.HasValue) { ... // Use x.Value in here }...

244得票17回答
.NET中API破坏性变更的权威指南

我想尽可能收集关于.NET/CLR API版本控制的信息,特别是API更改如何打破或不打破客户端应用程序的内容。首先,我们来定义一些术语: API更改 - 类型公开可见定义的更改,包括其任何公共成员。这包括更改类型和成员名称,更改类型的基础类型,在类型的实现接口列表中添加/删除接口,添加/删...

209得票7回答
C#和Java之间的主要区别是什么?

我只是想澄清一件事。这不是关于哪个更好的问题,那部分我留给其他人讨论。我不在乎它。 我在面试中被问到这个问题,我觉得学习更多可能会有用。 以下是我能想到的: - Java是“平台无关”的。现在你可以说有Mono项目,所以C#也可以考虑,但我认为有点夸张。为什么?当Java发布新版本时,它...

172得票20回答
在MSIL中,有哪些C#或VB.NET无法实现的功能?

所有使用.NET语言编写的代码都会编译为MSIL,但是是否有特定任务/操作只能直接使用MSIL完成呢? 在MSIL中,我们也可以更轻松地完成一些任务,而不像C#、VB.NET、F#、j#或其他任何.NET语言那样麻烦。 到目前为止,我们有以下这些: 尾递归 泛型协变/逆变(在C#4和VB 1...

151得票3回答
.NET 4.5 beta中出现FatalExecutionEngineError的原因是什么?

下面的示例代码是自然发生的。突然我的代码抛出了一个听起来非常严重的“FatalExecutionEngineError”异常。我花费了30分钟左右来试图分离和最小化有问题的示例。请使用Visual Studio 2012编译此代码作为控制台应用程序: class A<T> { ...

143得票2回答
为什么C#中的堆栈大小恰好为1 MB?

今天的个人电脑虽然有大量的物理内存,但是C#的堆栈大小在32位进程中只有1 MB,在64位进程中为4 MB (C#中的堆栈容量)。 为什么CLR中的堆栈大小还是如此有限呢? 而且为什么正好是1 MB (4 MB)(而不是2 MB或512 KB)? 为什么决定使用这些数量? 我对这个决定背...