我和我的朋友讨论了c#中的托管和非托管资源.
根据我的朋友说:
1.a)C#中的每个对象都是托管的,当我们用C#编码时,没有任何东西像非托管对象或资源.非托管资源概念仅适用于C++.
1.b)无论我们是否在C++中拥有托管或非托管资源,我们都需要明确地释放它.由于我们在C#中有自动垃圾收集器,因此我们不需要考虑管理资源.
据我说:
2.a)如果我们没有非托管资源那么为什么我们需要在C#中使用终结器或Dispose方法?
2.b)垃圾收集器只有关于已分配内存的信息,而不是有关资源状态的信息.因此我们需要使用dispose方法在C#中释放资源.
我需要帮助理解上述哪些参数是正确的以及有关c#中非托管资源的信息,是否存在?
提前致谢.
我试图读取一个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)
需要一些关于这个问题的帮助.
谢谢