Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

C#: Overføre den ene dimension af et 2D array til function

3 views
Skip to first unread message

Ulrik Smed

unread,
Sep 19, 2011, 1:13:50 PM9/19/11
to
Hey, har et lille array problem i C# 2010.

Jeg har et 2-dimensionelt array (en lydbuffer med venstre og højre kanal).
Og jeg har nogle funktioner til at behandle 1-dimensionelle arrays med,
f.eks en FFT. Kan jeg give den ene halvdel, f.eks venstre kanal, med som
parameter i et kald til FFT? Og hvordan?

Normalt giver man jo bare navnet med uden [], men hvad når kilden er
2-dimensionel? Det virker ikke at sige array[0] eller array[1] for venstre
eller højre lydkanal, så får jeg:
Error 1 Wrong number of indices inside []; expected 2

--
Ulrik Smed
Aarhus


Arne Vajhøj

unread,
Sep 20, 2011, 9:10:47 PM9/20/11
to
On 9/19/2011 1:13 PM, Ulrik Smed wrote:
> Jeg har et 2-dimensionelt array (en lydbuffer med venstre og højre kanal).
> Og jeg har nogle funktioner til at behandle 1-dimensionelle arrays med,
> f.eks en FFT. Kan jeg give den ene halvdel, f.eks venstre kanal, med som
> parameter i et kald til FFT? Og hvordan?
>
> Normalt giver man jo bare navnet med uden [], men hvad når kilden er
> 2-dimensionel? Det virker ikke at sige array[0] eller array[1] for venstre
> eller højre lydkanal, så får jeg:
> Error 1 Wrong number of indices inside []; expected 2

Der er to slags 2D arrays i C#.

Du skal bruge den rigtige.

:-)

using System;

namespace E
{
public class Program
{
public static void Test(int[] a)
{
foreach(int v in a)
{
Console.WriteLine(v);
}
}
public static void Main(string[] args)
{
int[,] a1 = new int[2,2];
a1[0,0] = 1;
a1[0,1] = 2;
a1[1,0] = 3;
a1[1,1] = 4;
// umuligt at kalde Test med a1
int[][] a2 = new int[2][];
a2[0] = new int[2];
a2[1] = new int[2];
a2[0][0] = 1;
a2[0][1] = 2;
a2[1][0] = 3;
a2[1][1] = 4;
Test(a2[0]);
Test(a2[1]);
Console.ReadKey();
}
}
}

Arne

Ulrik Smed

unread,
Sep 21, 2011, 2:58:46 AM9/21/11
to
Yes, perfekt. Jagged arrays var svaret. :-)

--
Ulrik Smed
Aarhus


0 new messages