Sobes.tech
Junior

Mis on viidetüübid?

sobes.tech AI

Vastus AI-lt

Viidatüübid ei hoia ise väärtust, vaid viidet (mäluaadressi) kohta, kus see väärtus asub. Selliste andmete määramisel või edastamisel kopeeritakse ainult viide, mitte kogu objekt. Muudatused, mis tehakse ühe viitega, on nähtavad ka teiste viidetega, mis osutavad samale objektile.

Näited viidatüüpidest erinevates keeltes:

  • Java: Klassid (String, Object, kasutajate klassid), liidesed, massiivid.
  • C#: Klassid (string, object, kasutajate klassid), liidesed, delegaadid, massiivid.
  • Python: Kõik andmetüübid (loendid, sõnastikud, tükid, kogud, klassid, funktsioonid).
# Näide Pythonis
list1 = [1, 2, 3]
list2 = list1  # list2 viitab samale listile, mis list1

list2.append(4)

print(list1)  # Väljund: [1, 2, 3, 4]
print(list2)  # Väljund: [1, 2, 3, 4]

Erinevus väärtustüüpidest (value types) seisneb selles, et väärtustüübid hoiavad ise väärtust ning määramisel/edastamisel tehakse kogu väärtuse koopia.

Võrdlusnäide:

Omadus Väärtustüübid Viidatüübid
Säilitamine Oma väärtus Viide väärtusele
Määramine/edastamine Väärtuse kopeerimine Viite kopeerimine
Muutmine Ei mõjuta algset Muudab algset
Näide (C#) int, struct, enum class, interface, array