我对CLR和GC的工作方式很着迷(我正在通过C#,Jon Skeet的书籍/帖子等阅读CLR来扩展我的知识).
无论如何,说:有什么区别:
MyClass myclass = new MyClass();
myclass = null;
Run Code Online (Sandbox Code Playgroud)
或者,通过使MyClass实现IDisposable和析构函数并调用Dispose()?
另外,如果我有一个带有using语句的代码块(例如下面的代码),如果我单步执行代码并退出using块,那么对象是在处理垃圾收集时发生的吗?如果我在使用块中调用Dispose()会发生什么?
using (MyDisposableObj mydispobj = new MyDisposableObj())
{
}
Run Code Online (Sandbox Code Playgroud)
流类(例如BinaryWriter)有一个Finalize方法吗?我为什么要用它?
可能重复:以
编程方式确定UNC路径中可用的空间
我正在尝试找到一个可以从C#调用的函数来检索该信息.这是我到目前为止所尝试的:
String folder = "z:\myfolder"; // It works
folder = "\\mycomputer\myfolder"; // It doesn't work
System.IO.DriveInfo drive = new System.IO.DriveInfo(folder);
System.IO.DriveInfo a = new System.IO.DriveInfo(drive.Name);
long HDPercentageUsed = 100 - (100 * a.AvailableFreeSpace / a.TotalSize);
Run Code Online (Sandbox Code Playgroud)
这可以,但只有我通过驱动器号.有没有办法通过传递一条完整的路径来检索自由空间?
谢谢.
我正在使用VC++中的应用程序,其中使用网络驱动器来访问文件.用户手动分配驱动器,然后在应用程序中选择驱动器.这导致驱动器不总是映射到相同的服务器.
我如何获得这样一个文件的UNC路径?这主要用于识别目的.
String machineName = System.Environment.MachineName;
String filePath = @"E:\folder1\folder2\file1";
int a = filePath.IndexOf(System.IO.Path.DirectorySeparatorChar);
filePath = filePath.Substring(filePath.IndexOf(System.IO.Path.DirectorySeparatorChar) +1);
String networdPath = System.IO.Path.Combine(string.Concat(System.IO.Path.DirectorySeparatorChar, System.IO.Path.DirectorySeparatorChar), machineName, filePath);
Console.WriteLine(networdPath);
Run Code Online (Sandbox Code Playgroud)
我使用String.Concat和编写了上述代码Path.Combine以获取网络路径。但这只是一种解决方法,而不是具体的解决方案,可能会失败。是否有获取网络路径的具体解决方案?
我正在创建一个WPF应用程序,除其他外应检查是否存在多个映射驱动器.代码很简单:
DriveInfo[] systemDrives = DriveInfo.GetDrives();
foreach (DriveInfo i in systemDrives)
{
if ((i.Name.Contains("V")) && (i.IsReady))
{
result = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
映射的驱动器将映射到所有用户.上面的代码作为普通用户运行时工作正常,但是Visual Studio 2010以管理员身份运行,GetDrives方法仅返回固定驱动器和DVD驱动器,但不返回映射驱动器.如果可执行文件作为管理员运行,则会发生相同的情况 任何想法为什么会这样?