2010-08-24 9 views
1
Private Function getFoo(ByVal _FileInfo As FileInfo) As foo() 
    Dim provider As New ExcelStorage(GetType(foo)) 
    provider.StartRow = 2 
    provider.StartColumn = 1 
    provider.FileName = _FileInfo.FullName 
    Dim res() As foo = provider.ExtractRecords() 
    Return res 
End Function 

J'ai le code ci-dessus dans vb.net que j'essaye de convertir en C#. J'utilise la bibliothèque FileHelper pour extraire des données d'Excel. Ceci est ma conversion en C#.Tableau dynamique en C# (vb.net snippet)

public static foo GetFoo(FileInfo fInfo) 
{ 
var provider = new ExcelStorage(typeof(foo)); 
provider.StartRow = 2; 
provider.StartColumn = 1; 
provider.FileName = fInfo.FullName; 
foo res[] = provider.ExtractRecords(); 
return res; 
} 

Qu'est-ce que je fais mal ici. Je reçois le mauvais séparateur de tableau. Dois-je déclarer la taille du tableau en premier?

Merci

edit: je change le code tel que suggéré. Cependant, je reçois cette erreur.

« Impossible de convertir implicitement le type « objet [] » à « foo [] ». Une existe conversion explicite (vous manque un casting?) »

Je croyais que je l'ai déjà défini le type de foo dans le ExcelStorage comme typeof (foo). Peu importe, je l'ai fait avec le casting.

Répondre

2
foo res[] = provider.ExtractRecords(); 

devrait être

foo[] res = provider.ExtractRecords(); 

De même, vous retournez un tableau de foo s, la déclaration devrait être:

public static foo[] GetFoo(FileInfo fInfo) 
4

devrait être: foo[] res = provider.ExtractRecords()

1

Il est foo[] res au lieu de foo res[].

En VB vous pouvez utiliser la syntaxe où être un tableau est une propriété de la variable:

Dim x() As Integer 

ou où être un tableau est une propriété du type:

Dim x As Integer() 

Le L'ancien a plus de sens dans VB 6, où les tableaux sont un type spécial de variables, et ce dernier a plus de sens dans VB.NET où les tableaux sont des objets.

En C# étant un tableau fait toujours partie du type:

int[] x; 
1

En C# la syntaxe de tableau est attachée au type et non la variable

foo[] res = provider.ExtractRecords(); 
1

En C#, vous déclarez des variables de tableau comme si Type[] VariableName pas comme ça Type VariableName[]

0

plus votre méthode doit retourner un tableau aussi bien

public static foo[] GetFoo(FileInfo fInfo) 
0

Code fixe:

public static foo[] GetFoo(FileInfo fInfo) 
{ 
    var provider = new ExcelStorage(typeof(foo)); 
    provider.StartRow = 2; 
    provider.StartColumn = 1; 
    provider.FileName = fInfo.FullName; 
    foo[] res = provider.ExtractRecords(); 
    return res; 
}