#c#
#c#
Вопрос:
Я пытался получить имя или букву жесткого диска, но все еще запутался, потому что здесь есть несколько функций, которые можно использовать. в чем разница между тремя приведенными ниже кодами для получения буквы жесткого диска? и какой из них лучше использовать?
Directory.GetLogicalDrives()
Environment.GetLogicalDrives()
DriveInfo.GetDrives()
Ответ №1:
Все они вызывают этот код, который является просто оболочкой для Win32 API функции GetLogicalDrives
new EnvironmentPermission(PermissionState.Unrestricted).Demand();
int drives = Win32Native.GetLogicalDrives();
if (drives == 0)
__Error.WinIOError();
uint d = (uint)drives;
int count = 0;
while (d != 0)
{
if (((int)d amp; 1) != 0) count ;
d >>= 1;
}
String[] result = new String[count];
char[] root = new char[] { 'A', ':', '\' };
d = (uint)drives;
count = 0;
while (d != 0)
{
if (((int)d amp; 1) != 0)
{
result[count ] = new String(root);
}
d >>= 1;
root[0] ;
}
return resu<
За исключением того, что GetDrives
передает результаты в DriveInfo
класс
// Directory.GetLogicalDrives demands unmanaged code permission
String[] drives = Directory.GetLogicalDrives();
DriveInfo[] di = new DriveInfo[drives.Length];
for(int i=0; i<drives.Length; i )
di[i] = new DriveInfo(drives[i]);
return di;
Итак, ответ таков: заметной разницы нет
Ссылки
Ответ №2:
Документация бы предполагала, что эти три метода предоставляют одну и ту же информацию. Только DriveInfo.GetDrives(), казалось бы, предполагает, что предоставляется больше информации, но если вам нужно знать только фактические буквы, то первых двух более чем достаточно.