问题标签 [clr]

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 投票
7 回答
192682 浏览

c# - C# 和 Java 之间的主要区别是什么?

我只想澄清一件事。这不是哪个更好的问题,这部分我留给其他人讨论。我不在乎。我在工作面试中被问到这个问题,我认为多学一点可能会有用。

这些是我能想到的:

  • Java 是“平台无关的”。现在你可以说有Mono项目,所以 C# 也可以考虑,但我认为这有点夸张。为什么?好吧,当 Java 的新版本完成时,它可以同时在它支持的所有平台上使用,另一方面,在 Mono 实现中仍然缺少 C# 3.0 的多少功能?或者我们真的应该在这里比较CLRJRE吗?
  • Java 不支持事件和委托。据我所知。
  • 在 Java 中,所有方法都是虚拟的
  • 开发工具:我相信还没有像 Visual Studio 这样的工具。特别是如果您使用过团队版本,您就会明白我的意思。

请添加您认为相关的其他人。

更新:我突然想到,Java 没有类、方法等的自定义属性。或者是吗?

0 投票
7 回答
4255 浏览

c# - .NET 程序员必须具备的 CLR 最低知识是什么才能成为一名优秀的程序员?

当我们谈论 .NET 世界时,我们所做的一切都依赖于 CLR。.NET 程序员必须具备的 CLR 最低知识是什么才能成为一名优秀的程序员?你能给我一个/许多你认为是/是最重要的主题:GC?、AppDomain?、Threads?、Processes?、Assemblies/Fusion?

如果您发布有关可以找到更多信息的主题的文章、博客、书籍或其他内容的链接,我将非常感激。

更新:我从一些评论中注意到我的问题有些人不清楚。当我说 CLR 时,我不是指 .Net Framework。这不是要记住 .NET 库,而是要了解执行环境(这些库在运行时所在的环境)如何工作。

我的问题直接受到“Debugging Applications for Microsoft® .NE​​T”一书(我推荐)的作者 John Robbins 的启发,他的同事在这里引用了 Wintellect 的 Jeffrey Richter。在其中一个介绍性章节中,他说“......任何 .NET 程序员都应该知道什么是探测以及如何将程序集加载到运行时”。你认为还有其他这样的事情吗?

最后更新:在阅读了“通过 C# 进行 CLR”的前 5 章后,我必须对阅读本文的任何人说。如果您还没有准备好,请阅读本书!

0 投票
5 回答
1046 浏览

c# - C# 和 CLR 特性混淆,什么特性值得严格描述为 C# 特性?

我得写几篇关于 C# 的文章,一般来说是小菜一碟?不!

我搜索了各种互联网资源和书籍,但我得到了一种头痛。例如垃圾收集器,一些消息来源说这是 C# 功能,其他 CLR 获得了此功能,而 C# 以及所有其他 .NET 语言默认获得了它。当然,我对 CLR 的投票是,但还有很多其他的事情会带来混乱,比如避免显式代码转换。也许我有不好的书籍和资源......所以也许有人会建议某个地方清楚地谈论 C#

第二件事是 C# 语法的起源,同样很少有选择,也不清楚,其他作者的其他语言组合。C、c++、Java,没关系,但 VB6 和 Delphi,我有疑问。来自这些语言的特性又与 c# 混淆了,但实际上并不清楚它是 C# 还是 CLR 特性

第 MTH

0 投票
3 回答
2742 浏览

stored-procedures - 将大量 XML 传输到 CLR 存储过程

我正在编写一个 CLR 存储过程,以字符串形式获取 XML 数据,然后使用这些数据执行某些命令等。

我遇到的问题是,每当我尝试发送长度超过 4000 个字符的 XML 时,我都会收到错误消息,因为 XmlDocument 对象无法加载 XML,因为缺少很多结束标记,原因是文本在 4000 个字符后被截断。

我认为这个问题归结为 CLR 存储过程将字符串参数映射到 nvarchar(4000),当我想像 nvarchar(max) 或 ntext 这样的东西是我需要的。

不幸的是,我找不到从 .NET 类型到 ntext 的映射,并且字符串类型自动转到 nvarchar(max)。

有谁知道我的问题的解决方案?

谢谢你的帮助

0 投票
2 回答
2062 浏览

visual-studio-2008 - 使用 /clr 编译器选项构建的 MFC - CString/System::String 转换

我有一个相当大的 MFC 应用程序,它刚刚从 VS6.0 迁移到 VS2008。这是一个非常痛苦的过程,但现在我想探索任何可用的托管代码选项。我能够使用 /clr 开关成功构建项目,这似乎让我可以访问托管类型。

我想知道 System::String 和 CString 之间的转换是否是自动的。我发现的 MSDN 文档表明这种转换不是自动的,但我没有发现这种情况。以下所有三个示例都有效,并且 1 和 2 均由 MSDN 记录。我很好奇的是示例 3,它也有效,但我不知道为什么。CurrentDirectory 属性返回一个指向托管堆 String^ 的指针,但为什么我可以将它分配给 CString?示例 3 到底在做什么以及内存管理的含义是什么?

示例 1)

例 2)

例 3)

0 投票
2 回答
356 浏览

.net - CLR 是否会自动检测垃圾收集器是否应该在服务器模式下运行?

从上一个问题中,我看到 CLR 的垃圾收集器具有工作站和服务器模式。我知道这些可以使用gcServer元素从配置中设置。

如果你不指定这个,CLR 是否会使用一些魔法来决定垃圾收集器是否应该在服务器模式下运行? 基于 CPU 计数或内存分析的东西?

0 投票
2 回答
455 浏览

.net - 为什么 Visual Studio/CLR 会产生“坏”的可执行文件?

这是我最近开始遇到的一个奇怪问题。我的团队正在开发一个 COTS 应用程序,我们有几个人在编写代码。几周前,我在尝试调试(并运行已编译的 EXE)时收到一条错误消息:

“Windows 无法访问指定的设备、路径或文件。您可能没有访问该项目的适当权限。”

最后我不得不重构这段代码:

对此:

然后允许 VS 生成一个实际工作的 EXE。我真的不明白为什么,但它奏效了。我确实使用了 peverify 实用程序来确定哪个程序集有问题。

现在,在昨天更新了大约 25 个文件后,我在不同的代码分支中遇到了同样的问题。这不会很有趣 - 所以我希望有人能提供一些关于为什么会发生这种情况的见解 - 这可能会帮助我缩小查找范围。

peverify 显示我们所有的程序集都是正确的,但会吐出 System.Windows.Forms.dll 的 90 多个错误!

有人有任何提示吗?

0 投票
4 回答
6306 浏览

c# - 检查文件是否为 .NET 程序集

我已经看到了一些通过检查二进制结构来检查 PEFile 是否为 .NET 程序集的方法

这是测试多个文件的最快方法吗?我假设尝试加载每个文件(例如通过Assembly.ReflectionOnlyLoad)文件可能会很慢,因为它将加载文件类型信息。

注意:我正在寻找一种以编程方式检查文件的方法。

0 投票
4 回答
5605 浏览

memory - 我可以从 WinDbg 运行 .NET 垃圾收集吗?

我正在研究为什么托管进程使用大量内存。有没有办法GC.Collect(3)从 WinDbg 运行,以便我可以专注于实际的内存分配?

0 投票
10 回答
787 浏览

memory - .NET 应用程序的合理内存量是多少?

我收到了一些投诉,称我们的一个托管应用程序使用了 20-25Mb 的 RAM。我通常会反驳说内存很便宜。克服它。

这对于 Windows 窗体应用程序是否合理?