clr相关内容

与C#中的string.Format等效的CLR函数

我正在寻找一个CLR函数,该函数将与C#中的String.Format做相同的事情.例如,我想通过CLR函数执行以下操作: String.Format(“我的名字是{0},我住在{1}",myName,cityName) 我希望能够在第一个参数之后传递可变数量的参数,这将与在第一个参数中为此CLR函数指定的占位符一样多.任何人对于这种CLR函数的C#代码有什么想法? 解决方案 我正 ..
发布时间:2021-04-22 19:41:53 其他开发

CPack NuGet软件包

上下文 我有一个Managed C ++/CLR库,它使用CMake 3.17构建,并使用CPack打包到NuGet包中.由于软件包管理器发出以下错误,因此无法将生成的nupkg文件导入C#项目:"[snip]软件包不包含任何与[.NETFramework,Version = v4.5.2]兼容的程序集引用或内容文件.".但是,添加对项目的引用(添加到解决方案中时)或由构建生成的相应库文件, ..
发布时间:2021-04-22 19:41:50 C#/.NET

从C#终结器调用静态方法

杰弗里·里希特(Jeffrey Richter)通过C#书在其CLR中(如示例章节使用需要特殊清除的类型)表示以下内容: 此外,CLR不能保证Finalize方法的调用顺序.因此,应避免编写Finalize方法来访问其类型定义了Finalize方法的其他对象.这些其他对象可能已经完成.但是,完全可以访问未定义Finalize方法的值类型实例或引用类型对象.调用静态方法时还需要小心,因为这些方 ..
发布时间:2021-04-22 19:41:46 C#/.NET

是否可以在C#中创建System.Int32?

如果深入了解,编译器/CLR将非常特殊地对待C#中的值类型.但是CLR内部的类型甚至被更特别地对待.这是我的意思: int a = 5;整数b = 10;intс= a + b;a.CompareTo(b); 您可以将鼠标悬停在Visual Studio中的 int 上,并查看它实际上是 System.Int32 结构.没关系.现在,您可以获取ILDasm,并查看什么是 System.In ..
发布时间:2021-04-22 19:41:43 C#/.NET

CLR在哪里为一种类型的实例存储方法

class MyClass{公共字符串MyProperty {get;放;}公共无效MyMethod(){//在这里做一些困难的事情//这里有100500行代码...}} 我们有很多 MyClass 的实例. CLR是否为该类的任何实例创建此真正消耗内存的 MyMethod() ? 解决方案 不,不是.当我们第一次调用此方法时,此方法将编译一次.然后,编译后的代码将被任何 My ..
发布时间:2021-04-22 19:41:40 C#/.NET

在C#中注册

我们都知道堆栈和堆的概念,但是我最近阅读了有关保存数据的第三个选项:寄存器. 我很难找到有关此类型的好文章,发现的是: http://www.dotnetperls.com/method-parameter ,以及用于C的很多内容,例如: 每个CPU都有一组寄存器,这些寄存器用于涉及任何数据的大多数操作.通常,一条指令将一些数据从内存加载到寄存器中,然后另一条指令对寄存器中的数据进行一些计 ..
发布时间:2021-04-22 19:41:32 C#/.NET

增强的强命名

我正在测试增强型强命名( http://msdn.microsoft.com/en-us/library/hh415055.aspx ),并且在将其纳入构建过程时遇到了一些问题.根据本文所述,您必须先对程序集进行延迟签名,然后再对它们进行重新签名,以获取正确的增强字符串名称.这不适用于构建过程.通常,我们在开发时延迟对程序集进行签名,然后在构建服务器上对它们进行完全签名.有没有人对增强强命名有任何 ..
发布时间:2021-04-22 19:41:26 C#/.NET

如何打破垃圾收集?

如何才能在WinDGB中设置断点以查看对 GC.Collect()的调用?我已经尝试过 bp clr!SVR :: GCHeap :: GarbageCollect ,但是它不起作用... 我正在使用.NET 4.5.1. 解决方案 没关系!我刚刚想通了: bp clr!WKS :: GCHeap :: GarbageCollect ..
发布时间:2021-04-22 19:41:23 其他开发

如何在非托管内存中实例化C#类?(可能的?)

更新:现在有一个可以接受的答案,“有效".您永远不要,永远,永远永远使用它.每个. 首先,我要说我是一名游戏开发人员来开始我的问题.有一个与性能相关的正当理由(即使非常不寻常),也是要这样做的原因. 说我有一个像这样的C#类: Foo类{公共诠释a,b,c;公共无效MyMethod(int d){a = d;b = d;c = a + b;}} 没什么好看的.请注意,它是仅包含 ..
发布时间:2021-04-22 19:41:19 C#/.NET

CLR在运行时使用的dll

我有一个引用.NET DLL的C#应用​​程序. 如果此DLL同时存在于我的应用程序的 bin 目录和GAC中,则CLR将在运行时选择哪一个?如果GAC具有最新版本,是否使用该版本代替 bin 中存在的版本? 以及如何强制CLR始终使用我的 bin 中的那个而不是GAC? 根据MSDN : CLR检查全局程序集缓存,配置文件中指定的代码库以及然后检查应用程序的目录和子目录. ..
发布时间:2021-04-22 19:41:16 C#/.NET

System.Int32包含...另一个System.Int32

我用反射检查了 System.Int32 的内容,发现它包含另一个 System.Int32 . System.Int32 m_value; 我不知道怎么可能. 此 int 确实是您拥有的整数:如果您将 int 装箱并使用反射更改其 m_value的值字段,您可以有效地更改整数的值: object testInt = 4;Console.WriteLine(testInt);// ..
发布时间:2021-04-22 19:41:11 其他开发

了解“此"结构的参数(特别是Iterators/async)

我目前正在使用Profiler API检查CLR中的深层对象.我在分析迭代器/异步方法的“此"参数时遇到了一个具体问题(由编译器生成,格式为 d__123 :: MoveNext ). 在研究这一点时,我发现确实存在一种特殊的行为.首先,C#编译器将这些生成的方法编译为结构(仅在发布模式下).ECMA-334(C#语言规范,第5版: https://www.ecma-inter ..
发布时间:2021-04-22 18:35:37 C#/.NET

本地变量在CLR中实际分配在哪里?

我只是进入CLR和IL之内,对此事感到困惑. 我有以下C#代码: int x = 1;对象obj = x;int y =(int)obj; IL为此为此拆卸了 //代码大小18(0x12).maxstack 1.locals init([0] int32 x,[1]对象obj,[2] int32 y)IL_0000:不IL_0001:ldc.i4.1IL_0002:stloc.0I ..
发布时间:2021-04-22 18:35:34 C#/.NET

如果我在C#中的Main方法是私有的,为什么我的程序可以工作?

默认情况下,类中每个成员的类型修饰符都是私有的,即使Main()函数类型修饰符也是私有的.CLR如何调用外部看不见的main方法? 解决方案 没错. 它必须是公开的.例如 public static void Main(). 编辑:这是我发现的&今天学习,了解为什么 Main 不需要 public 的原因. http://social.msdn.microsoft.com/fo ..
发布时间:2021-04-18 20:53:13 C#/.NET

C#System.Object是最终的基类

在msdn规范中,我可以注意到 System.Object 是.Net中的最终基类.他们说 System.ValueType 是从 System.Object 继承的抽象类,并覆盖了 Equals , Compare 等方法.值类型,例如 bool , int 等.都从 System.ValueType 继承,所有其他.net对象都从 System.Object . 我对此有2个问题. ..
发布时间:2021-04-18 20:48:15 C#/.NET

ValueType.ToString和ReferenceType.ToString之间的区别

两个变量的ToString调用之间有什么区别? int i = 0;i.ToString(); 调用i.ToString()会使我先被装箱,然后调用ToString还是在调用ToString()之前已经被装箱了? 解决方案 int 是 System.Int32 结构类型(隐式密封)的别名,该结构类型具有方法 Int32.ToString(),这是在代码第二行中调用的方法,因此不会发 ..
发布时间:2021-04-18 20:40:12 C#/.NET