main()
{
....
i = index;
while (i < j)
{
if (ip[i] == "/")
{
ip[i - 1] = (double.Parse(ip[i - 1])/double.Parse(ip[i + 1])).ToString();
for (int k = i; k < (ip.Length - 2); k++)
{
ip[k] = ip[k + 2];
}
Array.Resize(ref ip, ip.Length - 2);
j = j - 2;
i--;
}
i++;
}
}
Pour le code ci-dessus, je voulais appliquer les concepts d'Oop.Retour des tableaux
Ce motif se répète presque 5 fois (pour div, mul, add, sub, pow) dans le programme principal, avec quatre lignes identiques.
Pour diminuer le nombre de lignes et là pour augmenter l'efficacité du code, j'ai écrit la même chose comme ça.
i = index;
while (i < j)
{
if (ip[i] == "/")
{
ip[i - 1] = (double.Parse(ip[i - 1])/double.Parse(ip[i + 1])).ToString();
ext.Resize(ip, i, j);
}
i++;
}
class ext
{
public static void Resize(string [] ip, int i, int j)
{
for (int k = i; k < (ip.Length - 2); k++) { ip[k] = ip[k + 2]; }
Array.Resize(ref ip, ip.Length - 2);
j=j-2; i--;
return ;
}
}
Le code a été compilé avec succès. Mais le problème est que les changements dans le tableau et les variables qui ont eu lieu dans la fonction appelée ne sont pas reflétés dans le programme principal. Le tableau et les variables restent inchangés dans le programme principal. Je ne suis pas capable de comprendre où je me suis trompé. Plz guide moi.
Merci.
Heh? Où 'j' est-il défini dans' ext.Resize'? 'Array.Resize' est si Esoteric il n'a même pas une description sur MSDN: http://msdn.microsoft.com/en-us/library/1ffy6686%28VS.85%29.aspx – Kobi
@Kobi: Je vois une description: http://msdn.microsoft.com/en-us/library/bb348051.aspx –
Jon - qui est mieux. Merci. Je suppose que Google s'est mal conduit. – Kobi