Jump to content
Moneybag

É possível criar método a retornar um array?

Recommended Posts

Moneybag

Boas Pessoal

És possivel fazer algo do tipo?

private string[] lerFicheiro()

{

...

}

Eu já tive a pesquisar e acho que é possível, mas depois como é que leio o array?

Share this post


Link to post
Share on other sites
M6

Lês o array da mesma forma que lês qualquer array, iteras pelas suas posições.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
softklin

É perfeitamente possível, até podes devolver objectos de classes criadas por ti. Quanto à leitura, o M6 já te respondeu: podes usar um simples foreach ou o "tradicional" for.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Moneybag

É perfeitamente possível, até podes devolver objectos de classes criadas por ti. Quanto à leitura, o M6 já te respondeu: podes usar um simples foreach ou o "tradicional" for.

Poderiam dar um exemplo de um foreach?

Share this post


Link to post
Share on other sites
M6

A preguiça é uma coisa lixada... :P

http://lmgtfy.com/?q=c%23+foreach


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
Moneybag

Já matei a minha preguiça e já consegui escrever um código que funcione  :P

[glow=red,2,300]Main[/glow]

    class Program
    {
        static void Main(string[] args)
        {
            classe x = new classe();
            string[] sorted = new string[5];
            int i = 0;
            foreach (string lol in x.teste())
            {
                sorted[i] = lol;
                Console.WriteLine(sorted[i]);
                i++;
            }
            Console.ReadKey();
        }
    }

[glow=red,2,300]Class[/glow]

       public string[] teste()
       {
           string[] lol = new string[] { "d", "c", "a", "b", "k" };
           return lol;
       }

Existe alguma maneira de tornar este código mais simples?

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Podes simplificar assim a tua console application (não testei o código).

Poderás, eventualmente, colocar tudo apenas numa só classe (Program) mas o teu método teste terá de ser declarado como static.

    class Program
    {
        static void Main(string[] args)
        {
            classe x = new classe();
            foreach (string lol in x.teste())
            {
                Console.WriteLine(lol);
            }
            Console.ReadKey();
        }
    }


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
Moneybag

Olá,

Podes simplificar assim a tua console application (não testei o código).

Poderás, eventualmente, colocar tudo apenas numa só classe (Program) mas o teu método teste terá de ser declarado como static.

    class Program
    {
        static void Main(string[] args)
        {
            classe x = new classe();
            foreach (string lol in x.teste())
            {
                Console.WriteLine(lol);
            }
            Console.ReadKey();
        }
    }

Para o que necessito preciso do outro array, na realidade o que necessito mesmo é fazer uma copia de um array para outro. O console.writeline esta so para efeitar.

Share this post


Link to post
Share on other sites
Moneybag

É possivel fazer qualquer coisa deste género?

stored[] = x.Teste();

Era isto o que eu precisava mesmo, copiar o contiudo do array(metodo) para o array normal.

Share this post


Link to post
Share on other sites
daj

Podes guardar uma referência para o array retornado.

String[] stored = x.Teste();

No entanto, não ficas com um array diferente, o que significa que se alterares itens em stored, estás a alterar o objecto que Teste devolveu. Podes fazer um clone do array, se quiseres: http://msdn.microsoft.com/en-us/library/system.array.clone.aspx

Um exemplo:

using System;

class A {
public void Show() {
	Console.WriteLine("A.Show(): " + String.Join(", ", data));
}

public String[] Data {
	get { return data; }
}

public String[] DataClone {
	get { return (String[])data.Clone(); }
}

private String[] data = { "A", "B", "C" };
}

class Program {
static void Main() {
	A a1 = new A();

	a1.Show();

	String[] d1 = a1.Data;
	d1[1] = "X";
	Console.WriteLine("Program.Main(): " + String.Join(", ", d1));

	a1.Show();


	A a2 = new A();

	a2.Show();

	String[] d2 = a2.DataClone;
	d2[1] = "X";
	Console.WriteLine("Program.Main(): " + String.Join(", ", d2));

	a2.Show();
}
}

De notar que o Clone do array devolve-te um array diferente mas com referências para os mesmos objectos (shallow copy).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.