Tag: clr

C#方法可以定义的参数的最大数量是多less?

我想弄清楚什么C#中的方法可以有最大数量的参数。 我已经到处检查了一个答案,包括C#官方文档,MSDN和几个CLR引用,我找不到答案。 有没有人有这个问题的答案?

MarshalByRefObject是否特别?

.NET有一个叫远程的东西,你可以在不同的AppDomain或者物理机器之间传递对象。 我不完全理解这个魔法是如何完成的,因此这个问题。 在远程处理中,有两种传递对象的基本方法 – 可以将它们序列化(转换为一堆字节并在另一端重新构build),也可以从MarshalByRefObjectinheritance,在这种情况下,.NET会生成一些透明的代理和所有方法调用被转发回原来的实例。 这很酷,像魔术一样工作。 而且我不喜欢编程中的魔法。 使用Reflector查看MarshalByRefObject我没有看到任何可以将它与其他任何典型对象区分开来的东西。 甚至不是一个奇怪的内部属性或任何东西。 那么整个透明代理事物是如何组织的呢? 我能自己制造这样一个机制吗? 我可以做一个替代的MyMarshalByRefObject不会从MarshalByRefObjectinheritance,但仍然会一样吗? 还是MarshalByRefObject接受了.NET引擎本身的一些特殊处理,整个远程的壮举是不可复制的,只有凡人?

ASP.NET CLR未启用

当我运行我的应用程序时,我的新安装的ASP.Net和SQL Server上出现以下错误: Execution of user code in the .NET Framework is disabled. Enable "clr enabled" configuration option 我试图解决它通过运行这个: use dasolPSDev; sp_configure 'clr enabled', 1 go RECONFIGURE go sp_configure 'clr enabled' go 但是,我得到: Msg 102, Level 15, State 1, Line 3 Incorrect syntax near 'sp_config

SQL Server 2005中VARBINARY字段的大小

我正在尝试使用SQL来确定SQL Server 2005中VARBINARY(MAX)字段中内容的字节大小。 我怀疑是否有本地支持,可以使用CLR集成吗? 任何想法将不胜感激。

关于CLR的Clojure

我有兴趣在CLR上调查Clojure。 我看到有一个端口 -但我总是对这些二等公民持有一些怀疑(即他们没有原来的稳定性或function)。 如果一般人在CLR上发现Clojure不成熟,我就不会在这一点上花费很多时间 – 在这一点上,我根本没有时间和精力来解决一堆问题。 另一方面,如果CLR上的Clojure看起来很好,我今天就开始跳水! 有没有人在CLR上使用Clojure的实际经验? 任何意见和/或其他帮助CLR版本入门也将不胜感激。

根源是什么?

垃圾收集的根源是什么? 我已经把root的定义看作“你程序可以访问的任何引用”,live的定义就是一个正在使用的对象,它可以是一个局部variables,静态variables。 我有点混淆区分根和活的物体之间的差异。 什么是根path? 根和活物体如何工作? 有人可以详细说明吗?

如何在运行时检测到.NET 4.5版本正在运行您的代码?

我从http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27541安装了.NET 4.5 Developer预览版,它将“replace”.NET 4.0版本。 然而,旧的方式来检测.NET框架版本似乎返回4.0(更确切地说,我的电脑4.0.30319.17020),而不是4.5(当然可能是为了向后兼容,或?): using System; namespace ConsoleApplication { class Program { static void Main(string[] args) { var version = Environment.Version; Console.WriteLine(version.ToString()); Console.ReadKey(); } } } 如何检测我的代码是否真正由.NET 4.5执行?

在“任何CPU”.NET程序集上强制执行x86 CLR

在.NET中,“平台目标:任何CPU”编译器选项允许.NET程序集在x64机器上以64位运行,在x86机器上以32位运行。 也可以使用“Platform Target:x86”编译器选项强制程序集在x64机器上作为x86运行。 是否有可能使用“任何CPU”标志运行程序集,但确定它是否应该在x86或x64 CLR中运行? 正常情况下,这个决定是由CLR / OS Loader(根据我的理解)根据底层系统的位数来做出的。 我正在尝试编写一个C#.NET应用程序,它可以与其他正在运行的进程交互(读入:注入代码)。 x64进程只能注入到其他x64进程中,并且与x86一样。 理想情况下,我想利用JIT编译和Any CPU选项来允许单个应用程序用于注入x64或x86进程(在x64机器上)。 这个想法是,应用程序将被编译为任何CPU 。 在x64机器上,它将以x64运行。 如果目标进程是x86,则应该重新启动自己,强制CLR将其作为x86运行。 这可能吗?

性能:从generics派生的types

我遇到了一个我不能理解的性能问题。 我知道如何解决,但我不明白为什么会发生。 这只是为了好玩! 让我们来谈谈代码。 我尽可能简化代码来重现问题。 假设我们有一个generics类。 它里面有一个空的列表,在构造函数中用T做一些事情。 它有Run方法调用列表上的IEnumerable<T>方法,例如Any() 。 public class BaseClass<T> { private List<T> _list = new List<T>(); public BaseClass() { Enumerable.Empty<T>(); // or Enumerable.Repeat(new T(), 10); // or even new T(); // or foreach (var item in _list) {} } public void Run() { for (var i = 0; i < 8000000; i++) […]

我如何决定是否将ATL,MFC,Win32或CLR用于新的C ++项目?

我刚刚开始我的第一个C ++项目。 我正在使用Visual Studio 2008 。 这是一个单一窗体的Windows应用程序,用于访问几个数据库并启动WebSphere MQ事务。 我基本上理解ATL,MFC,Win32(我实际上对此有点朦胧)和CLR之间的区别,但是我对如何select我却不知所措。 是否有一个或多个这些为了向后兼容? CLR 是一个坏主意吗? 任何build议感激。 编辑:我已经selectC ++这个项目,因为我没有在post中进入,这不完全是技术性的。 所以, 假设 C ++是唯一的/最好的select,我应该select哪一个?