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


Kan man göra så?

Postades av 2004-07-16 18:26:57 - Andreas Wemmenhed, i forum vb.net, Tråden har 4 Kommentarer och lästs av 932 personer

Hejsan

Nybörjaren här igen. Sitter och skiftar mellan C# och VB.NET men hittar ingenstans om man kan tillverka objekt dynamiskt? Alltså skulle vilja tillverka ett objekt tex bil med tillhörande metoder,properties, fält odyl och sedan när man trycker på en knapp i ett formulär skapa en instans eller ett nytt objekt (samma sak väl?) av denna som ärver alla egenskaper odyl men heter det namn och får de värden som man angivit i textrutor! tex ett objekt som heter "Jaguar" med "200hk" ett annat som heter "Fiat" "55hk" osv, som alla har ärvt från klassen Bil och alltså tillverkats dynamiskt av användaren.

Kan man göra så? eller måste man göra som jag gjort nu skapat en array av objekt som jag initierar redan från start? känns lite onödigt deklarera 200 olika objekt när man kanske sedan bara kommer att använda en 10st.

Ok hoppas ni förstod vad jag menade :)
Tackar så mycket
/Andy


Svara

Sv: Kan man göra det?

Postades av 2004-07-16 19:19:30 - Thomas Vanhaniemi

Om du med objekt menar klasser med olika egenskaper etc så är det inga problem...

I koden kan du till exempel skriva något i stil med...
Kanske under en knapp eller liknande...
Sedan har du en arraylist eller collection dit du bara slänger in instansen av klassen "Bil.
Säg att arraylisten heter "BilCollection"

<code>
Dim BilInstans As New Bil
BilInstans.Marke = "Fiat"
BilInstans.HK = "200hk"

BilCollection.Add(BilInstans)
</code>

Du kan även göra egna collections som enbart tar emot din bilklass eller en Interface...

Var det det du undrade över eller var det något helt annat?

Mvh,
Thomas


Svara

Sv: Kan man göra det?

Postades av 2004-07-17 09:48:37 - Andreas Wemmenhed

Precis vad jag menade! tusen tack för svaret

Kunde dock inte hitta den här metoden Add till arrayen. Deklarerade Arrayen så här : Dim bilArray() as bil och det är väl rätt? Det kanske bara fungerar med det du kallar collections? får läsa in mig på collections.
Tack för svaret ivarjefall


Svara

Sv: Kan man göra det?

Postades av 2004-07-17 10:54:47 - Per Hultqvist

Det finns ingen add-metod på arrayer, där måste du själv sätta in elementet på rätt plats :
<code>
Dim a() As Bil=new Bil(10) ' Deklarera och initiera arrayen

Dim b As Bil=new Bil() ' Skapa bil-instansen
b.AntalHjul=4 ' :-)
b.DåligFörare=true ' :-)

a(4)=b ' Sätt in bilen på platsen med index 4
</code>
Med Collections kan det se ut så här :
<code>
Imports System.Collections

Dim a As New System.Collections.ArrayList() ' Skapa en arraylist
' (en upphottad array-klass,
' med lite godis som t ex sortering)
Dim b As Bil=new Bil() ' Skapa bil-instansen
b.AntalHjul=4 ' :-)
b.DåligFörare=true ' :-)

a.Add(b) ' Sätt in bilen på första plats i arrayen
</code>
En annan klass under System.Collections är Hashtable som ger dig möjlighet att lagra en nyckel tillsammans med objektet. Om du t ex lagrar bilar så kan ju registreringsnummer vara nyckel eftersom det är unikt (i alla fall inom sverige), och för personer kan personnumret vara nyckel. Du kan sedan lätt hämta rätt objekt om du vet nyckeln (väldigt bra prestanda på att hämta element från en Hashtable, inte fullt så snabb på att lägga in objekt) :
<code>
Imports System.Collections

Dim a As New System.Collections.Hashtable() ' Skapa en Hashtable

Dim b As Bil=new Bil() ' Skapa bil-instansen
b.AntalHjul=4 ' :-)
b.DåligFörare=true ' :-)

a.Add("ABC 123",b) ' Sätt in bilen i tabellen och associera den med
' registreringsnumret "ABC 123"

b=Nothing ' Töm b
b=DirectCast(a("ABC 123"),Bil) ' Hämta bilen med reg nr "ABC 123" samt
' typkonverterar till typen Bil. Nödvändigt om
' du har Option Strict On (rekommenderas) eftersom
' hashtablen returnerar objektet som en System.Object.
</code>
Det finns andra intressanta klasser under System.Collection men dessa två är de som jag använder mest. Lycka till...


Svara

Sv: Kan man göra det?

Postades av 2004-07-17 12:33:47 - Thomas Vanhaniemi

Precis som Hultan skrev...

Du kan dock skriva egna Collections också genom att ärva från någon collection eller implementera olika interface...

<code>
Public Class EmailCollection
Inherits ArrayList

Public Shadows Sub Add(ByVal Item As Bil)
MyBase.Add(Item)
End Sub

Public Shadows Sub Insert(ByVal Index As Integer, ByVal Item As Bil)
If Index < 0 Then MyBase.Insert(0, Item) : Exit Sub
If Index >= Count Then Add(Item) : Exit Sub

MyBase.Insert(Index, Item)
End Sub

Public Shadows Sub Remove(ByVal Item As Bil)
MyBase.Remove(Item)
End Sub

Public Shadows Sub RemoveAt(ByVal Index As Integer)
If Index < 0 Or Index >= Count Then Exit Sub
MyBase.RemoveAt(Index)
End Sub

Default Public Shadows Property Item(ByVal Index As Integer) As Bil
Get
If Index < 0 Or Index >= Count Then Exit Property
Return MyBase.Item(Index)
End Get
Set(ByVal Value As Bil)
If Index < 0 Or Index >= Count Then Exit Property
MyBase.Item(Index) = Value
End Set
End Property

End Class
</code>

Ovanstående är en liten grund till en egen ArrayList som tar emot och retunerar objekt av typen Bil, inte Object som det blir om du bara skriver Dim List As New ArrayList...

Används såhär...

<code>
Dim BilLista As New BilCollection
Dim Bil As New Bil

Bil.Color = "Svart"
Bil.Mark = "Peugeot"
Bil.YearModell = 1988

BilLista.Add(Bil)
</code>

Men ovanstående exempel är bara exempel hur man kan göra, det finns flera sätt och vilken man väljer är beroende på vad man behöver etc...

Mvh,
Thomas


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 570 722
27 958
271 751
559
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