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 |