草庐IT

c++栈对象的shared_ptr

全部标签

c# - 垃圾回收如何处理对象引用?

我对对象的垃圾回收过程感到困惑。objectA=newobject();objectB=A;B.Dispose();通过仅对变量B调用Dispose,创建的对象将不会被垃圾回收因为对象仍然被A引用。现在下面的代码和上面的一样吗?publicstaticimageTest1(){BitmapA=newBitmap();returnA;}现在我从其他方法调用这个静态函数。publicvoidTestB(){BitmapB=Test1();B.Dispose();}静态函数Test1返回了对Bitmap对象的引用。引用已保存在另一个变量B中。通过对B调用Dispose,B和对象之间的连接丢失

c# - VSIX:获取 DTE 对象

我的VisualStudio程序包需要使用EnvDTE.DTE变量,但返回时始终为空。在阅读了许多hack之后,他们都说使用OnShellPropertyChange()方法(IVsShellPropertyEvents),但有时它永远不会触发-就好像我的扩展永远不会完成加载一样。我正在使用VS2010并检查VSSPROPID_Zombie和ShellInitialized-没有工作。:(有什么想法吗?这是我正在使用的代码:publicintOnShellPropertyChange(intpropid,objectvar){if(propid==-9053||(int)__VSSPR

c# - 从 C# 中的流对象创建一个临时文件

给定一个包含xlsx文件的流对象,我想将它保存为一个临时文件,并在不再使用该文件时将其删除。我想创建一个实现IDisposable的class并将其与using代码块一起使用,以便删除临时文件结束。知道如何将流保存到临时文件并在使用结束时将其删除吗?谢谢 最佳答案 您可以使用TempFileCollection类:using(vartempFiles=newTempFileCollection()){stringfile=tempFiles.AddExtension("xlsx");//dosomethingwiththefileh

c# - 如何将 "int"分配给对象?

我们如何能够将整数分配给.NET中的对象?引用类型派生自System.Object,值类型派生自System.ValueType。那么,这怎么可能呢? 最佳答案 术语“装箱”非常不透明,但使用调试器很容易将实际发生的事情可视化。编写一个像这样的小控制台模式应用程序:usingSystem;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){intvalue=42;objectobj=value;}//在指定位置设置断点,然后按F5。当断点命中时

c# - 确定性处理 ThreadStatic 对象

ThreadStaticattribute将静态变量声明为每个线程唯一。您知道正确处理此类变量的简单模式吗?我们在ThreadStatic之前使用的是一个ThreadContextManager。每个线程都分配了一个ThreadContext,它保留了所有线程特定的信息。我们生成了一些线程并让它们工作。然后,当它们全部完成时,我们释放了ThreadContentManager,如果它们是IDisposable,它又释放了所有上下文。我没有看到立即将此模式转换为ThreadStatic对象的方法。这些对象最终会被处理掉,因为线程死了,所以没有任何东西引用它们。但是,我们更喜欢确定性处置。

c# - 从一个对象到同一实体类型的两个对象的多个关联

我正在尝试使用代码优先和流畅的API创建一个对象,该对象包含来自同一个表的两个不同实体。换句话说,传输对象持有对两个不同jar对象的引用——一个是源,另一个是目的地。但是,当我使用以下代码时,出现异常,指出“引用关系将导致不允许的循环引用。”modelBuilder.Entity().HasRequired(t=>t.Source).WithMany(t=>t.OutboundTransfers);modelBuilder.Entity().HasRequired(t=>t.Destination).WithMany(t=>t.InboundTransfers);我最好的猜测是它认为我

c# - 几何对象的可视化调试器

在处理表示几何对象的库时,调试当前看起来像这样:在这里,我在Autos、Locals、Watch和Immediate窗口中查看局部变量。由于我很难在脑海中想象出物体的形状,所以我更喜欢用图形组件来表示这些物体。所以我已经开始创建一个DebuggerVisualizer来绘制对象。我在bitbucket的公共(public)仓库中有它here.现在我无法让它在解决方案中的控制台应用程序之外工作。我做错了什么?这是它工作时的样子:此外,我怎样才能以允许我一次查看多个对象的方式执行此操作。我意识到我真的很想看到多个对象及其交互,而不仅仅是单个对象。(例如寻找交叉路口等)。附言有没有人在任何地

c# - 当我们创建其继承类的新对象时,是否创建了基类的对象?

在C#中,当我们创建一个继承类对象时,它是否也创建了一个基类对象?因为它从子类构造函数调用基类构造函数而感到困惑。Willcallingabaseclassconstructorfromchildclassconstructor,createabaseclassobject? 最佳答案 只创建了一个对象,但它有两个“层”——基类属性和行为以及继承类属性和行为。所以在某种意义上答案是“是的,创建了一个基类对象”(该对象与任何其他基类对象具有相同的属性和行为)但它与继承类是同一对象所以说“否”也是正确的,基础对象也未创建。”。关键区别在

c# - 如何在业务逻辑层设计数据传输对象

数据传输我正在构建一个Web应用程序,我想扩展到许多用户。此外,我需要通过Web服务向受信任的第三方公开功能。我正在使用LLBLGen生成数据访问层(使用SQLServer2008)。目标是构建一个业务逻辑层,使Web应用程序免受DAL细节的影响,当然,还提供DAL之外的额外验证级别。此外,据我所知,Web服务本质上是BLL上的薄包装。DAL当然有自己的一组实体对象,例如CustomerEntity、ProductEntity等。但是,我不希望表示层直接访问这些对象,因为它们包含特定于DAL的方法并且程序集特定于DAL等等。因此,我们的想法是创建数据传输对象(DTO)。这个想法是,这些

c# - 嵌入 IronPython,内置帮助命令,我的 CLR 对象

我将IronPython(2.6.1)嵌入到C#程序集中,并将多个对象暴露给使用PythonEngine.ExecuteFile执行的脚本。我用scope.SetVariable("SomeObject",newSomeObject())或engine.Execute("fromMyNamespaceimportSomeObject",scope)取决于脚本如何使用它们。我的应用程序集被添加到引擎中engine.Runtime.LoadAssembly(Assembly.GetExecutingAssembly())现在脚本可以执行help(SomeObject)并转储漂亮的小帮助信息