Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Multidimensionell array som object.. [OLöslig]

Postades av 2002-11-25 14:55:30 - Johan Bovin, i forum c# (c-sharp), Tråden har 12 Kommentarer och lästs av 1966 personer

Hej
Har ett litet problem, ska konvertera från Java och där finns en klass (java.lang.reflect.Array) där du kan skicka in en array som object och en int och tillbaka får du objektet (som kan vara en ny array) som finns på den platsen i arrayen.
Jag kan inte typkasta till en object[] eftersom jag inte vet hur många dimensioner arrayen har. Nån som har en bra lösning?

/Johan


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-25 18:02:32 - Mattias Sjögren

Låter som du är ute efter System.Array.GetValue(). Eftersom alla vektorer och matriser ärver från System.Array så är det bara att casta till det och köra.


MS


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-25 18:04:14 - Johan Bovin

jo... har testat och kommit fram till att det faktiskt funkar men nu är problemet setValue... den verkar inte gilla när det är multidimensionella arrayer men jag får testa vidare imorgon

/Johan


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-26 08:30:31 - Johan Bovin

jo problemet GetValue är avklarat men SetValue kvarstår.
Problemet är alltså enligt följande:
Jag har ett objekt som kan vara en multidimensionell array. Jag kastar den till Array så att jag kan använda SetValue. Problemet är nu att jag vill sätta t.ex. pos 1 till en annan array dvs det blir flera dimensioner...
Enligt följande: a=new int[2,2]
b=new int[2]
nu vill jag alltså köra typ:
arrayA.SetValue(arrayB,1) men detta klarar han inte av... hur fasiken löser man det?

/Johan


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-26 09:48:00 - Mattias Sjögren

>Jag har ett objekt som kan vara en multidimensionell array. Jag kastar den till Array
>så att jag kan använda SetValue. Problemet är nu att jag vill sätta t.ex. pos 1 till en
>annan array dvs det blir flera dimensioner...
>Enligt följande: a=new int[2,2]
>b=new int[2]
>nu vill jag alltså köra typ:
>arrayA.SetValue(arrayB,1) men detta klarar han inte av... hur fasiken löser man det?


Ja det fungerar naturligtvis inte, eftersom elementtypen i en int[,] är int, inte int[]. Du kanske skulle använda en "jagged array" istället

int[][] a = new int[2][];
int[] b = new int[2];
a.SetValue(b, 1);


MS


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-26 10:17:16 - Johan Bovin

problemet är ju bara att jag inte vet hur många dimensioner det är. Bara att den det skall in i har en dimension mer än den som jag skall stoppa in...

Saken är att det är en konvertering från Java och jag har typ en method som tar in två arrayer som object och en position

Add(Object arrA, Object arrB, int pos)

så nu vill jag stoppa in arrB i position pos i arrA.
Det enda jag är säker på är att arrA har en dimension mer än arrB...
arrA.SetValue(arrB,pos) hade varit så klockrent men av nån outgrundlig anledning så funkar inte det i .Net

/Johan


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-26 16:20:24 - Johan Bovin

Gör ett sista försök...
Har ett par värden i en matrix, t.ex.
{{1,2,3},
{4},
{5,6}
}

Vill alltså ha en GENERELL metod som ger mig:
*Namnet på componentType (t.ex. int i exemplet ovan)
*Datan

Vill stoppa in data i en jagged array enligt följande:
/************* begin code *************/
<code>
int[] dimensions = new int[nrDimensions];//eg. 2
dimensions[0] = firstDimensionSize;//eg 3
for (int i = 1; i < nrDimensions; i++) dimensions[i] = 0;
Object myVector = System.Array.CreateInstance
(componentType, (System.Int32[]) dimensions);//just create
for (int i = 0; i < firstDimensionSize; i++){
vectorComponent=(Object)getComponent(...);//eg. a int[]
with Rank (nr of dimensions)=1
((Array)myVector).SetValue(vectorComponent,i); //CRASH!
if nrDimensions>1
}
</code>
/************* end code *************/

Men detta funkar inte. Även om vectorComponent är korrekt (antal dimensioner). Det ger felmeddelandet:
System.ArgumentException: Array was not a one-dimensional
array.
at System.Array.SetValue(Object value, Int32 index)

Har försökt på ett antal olika sätt att komma runt det här men det verkar som C# förbjuder en att sätta något annat än ett ensamt Object (inte array) på en gång

Nån som har en aning?

/Johan


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-27 15:45:37 - Mattias Sjögren

Okej det verkar ju vara krångligare. Det är risk för att du måste göra det manuellt, element för element.


MS


Svara

Sv: Multidimensionell array som object..

Postades av 2002-11-27 16:01:51 - Johan Bovin

för en tänkbar lösning se: [Jagged Array]
/Johan


Svara

Sv: Multidimensionell array som object.. [OLöslig]

Postades av 2002-11-28 09:53:34 - Anders Drevin

Vad händer om du ändå typecastar den till ett object[] och sedan använder GetLower- och GetUpperBound(dimension) för att ta reda på hur många dimensioner object[] kan tänkas ha?

Använd ex vis GetUpperBound(i) i en for- loop och fånga sedan felet då det inte finns några fler dimensioner (det borde bli fel då).


Svara

Sv: Multidimensionell array som object.. [OLöslig]

Postades av 2002-11-28 10:05:43 - Johan Bovin

Och vad hjälper det? Jag vet hur många dimensioner den har... problemet är att kopiera in den i en ny vector med dimensionerna n+1... och som sagt innan så verkar det inte finnas någon lösning på detta problem...

Jag menar jag vill ju inte gå ner och kopiera varje enskilt objekt för sig eftersom det skulle ta för lång tid...

/Johan


Svara

Sv: Multidimensionell array som object.. [OLöslig]

Postades av 2002-11-28 10:50:08 - Anders Drevin

Ok.Du skrev längst upp att du inte visste hur många dimensioner den hade. Men om du vet hur många element den har, går det inte att få en ny array att "peka" på den du erhåller?


Svara

Sv: Multidimensionell array som object.. [OLöslig]

Postades av 2002-11-28 13:06:51 - Johan Bovin

Grejen var så här att jag vet inte på förhand hur många dimensioner den har och inte heller vilken typ den är. Det enda jag vet är att ett antal vectorer skall sättas ihop till en ny vector av dessa vectorer.

Så här är det: Du kan få en array att peka på en annan vector precis som vilket objekt som helst men du kan inte få den att fatta att det är ytterliggare dimensioner i den arrayen. Och, det är ju så man vill ha det. Tyvärr verkar .Net bry sig för mycket...


/Johan


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
963
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies