Ce n'est pas une erreur de compilation, c'est une erreur d'exécution.
Notez la documentation String.Substring(int, int)
:
Récupère une sous-chaîne de cette instance. La sous-chaîne commence à une position de caractère spécifiée [startIndex
] et a une longueur spécifiée [length
].
La sous-chaîne aura donc la longueur spécifiée. Par conséquent, il doit y avoir suffisamment de caractères commençant à startIndex
pour renvoyer une sous-chaîne de la longueur spécifiée. Par conséquent, les inégalités suivantes doivent être remplies pour que String.Substring
pour réussir sur une instance s
de string
:
startIndex >= 0
length >= 0
length > 0 implies startIndex + length <= s.Length
Notez que si vous voulez juste une sous-chaîne de index
à la fin de la chaîne, vous pouvez dire
s.Substring(index);
ici, la seule contrainte est
startIndex>= 0
startIndex < s.Length
Il n'y a pas vérifier que index1 est> -1 (qu'il y avait même un. Dans la chaîne). Si vous faites une sous-chaîne w/index: -1 cela renvoie aussi cette erreur ... – Rikon
Pas une réponse à votre question, mais un moyen plus fiable pour trouver une extension de fichier est d'utiliser la classe Path: http: // msdn. microsoft.com/en-us/library/system.io.path.aspx –
@Rikon Même erreur, mais avec un message différent ... –