2010-07-23 5 views
1

Je travaille sur mon code HWID. J'ai récemment essayé de convertir ce code de VB.net en C#. J'ai cette erreur que je n'arrive pas à comprendre.C# Get VolumeSerialNumber

« dsk » est une « variable » mais est utilisé comme une « méthode »

Voici mon code

string returnString = null; 
    string systemDisk = Environment.GetEnvironmentVariable("windir", EnvironmentVariableTarget.Machine); 
    if (systemDisk != null) 
    { 
     ManagementObject dsk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + systemDisk.Substring(0, 2) + "\""); 
     dsk.Get(); 
     returnString = dsk("VolumeSerialNumber"); 
    } 
    return returnString; 

Répondre

2

En C# nous utilisons [] pour les indexeurs au lieu de().() Est habituellement (toujours?) Utilisé pour appeler une méthode/délégué.

Vous devez changer la ligne

returnString = dsk("VolumeSerialNumber"); 

à

returnString = dsk["VolumeSerialNumber"]; 
+0

Penguin a seulement 100 représentant et cela n'a pas pris le temps donc je suis indifférent, mais en général la première réponse lorsque toutes les réponses sont par ailleurs correct/identique est accepté. –

1

dsk doit mettre en œuvre l'indexation, qui utilise la même syntaxe comme un appel de méthode VB.NET. Cependant, en C#, il utilise sa propre syntaxe (var[index]). En tant que tel, essayez ceci:

returnString = dsk["VolumeSerialNumber"];