小编Vin*_*zes的帖子

我们在C#中有非托管资源吗?

我和我的朋友讨论了c#中的托管和非托管资源.

根据我的朋友说:

1.a)C#中的每个对象都是托管的,当我们用C#编码时,没有任何东西像非托管对象或资源.非托管资源概念仅适用于C++.

1.b)无论我们是否在C++中拥有托管或非托管资源,我们都需要明确地释放它.由于我们在C#中有自动垃圾收集器,因此我们不需要考虑管理资源.

据我说:

2.a)如果我们没有非托管资源那么为什么我们需要在C#中使用终结器或Dispose方法?

2.b)垃圾收集器只有关于已分配内存的信息,而不是有关资源状态的信息.因此我们需要使用dispose方法在C#中释放资源.

我需要帮助理解上述哪些参数是正确的以及有关c#中非托管资源的信息,是否存在?

提前致谢.

c# garbage-collection dispose unmanagedresources

7
推荐指数
2
解决办法
6968
查看次数

尝试尝试一些Resharper Open API

我试图读取一个C#源文件并使用Resharper解析它.我想获取文件中使用的命名空间列表,但我在这一行中有一个例外.

   ICSharpFile file = CSharpParserUtil.Parse(sCode);
Run Code Online (Sandbox Code Playgroud)

异常详细信息: JetBrains.Platform.ReSharper.Shell.dll中出现"System.InvalidOperationException"类型的第一次机会异常

线程0x1020已退出,代码为0(0x0).线程0x14c0已退出,代码为0(0x0).

  static void Main()
    {

        String sCode = File.ReadAllText(@"D:\ResharperTries\TestFile.cs");

        try
        {
            ICSharpFile file = CSharpParserUtil.Parse(sCode);
            IList<ICSharpNamespaceDeclaration> x = file.NamespaceDeclarations;

            foreach (ICSharpNamespaceDeclaration value in x)
            {
                Console.WriteLine(value.ContainingNamespace.ShortName);
            }

        }
        catch (Exception e)
        {

            Console.WriteLine(e.Message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

需要一些关于这个问题的帮助.

谢谢

resharper

1
推荐指数
1
解决办法
330
查看次数