---
title: "Vilken datatyp?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/78562-vilken-datatyp"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "clarkbones"
published: "2003-05-31T08:58:13.000Z"
updated: "2003-05-31T10:05:28.000Z"
replies: 4
views: 191
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/78562-vilken-datatyp"
---

# Vilken datatyp?

## #1 — clarkbones, 2003-05-31T08:58Z

Hur kan jag läsa av vilken datatyp en variabel har?

Permalänk: https://www.webforum.nu/p/78562

## #2 — niko, 2003-05-31T09:24Z

För referenstyper kan man använda *TypeOf*\-operatorn:

```
if TypeOf x is ADODB.Connection then ..
```

För enkla värdetyper (integer, long ..) tror jag inte det går. Fast då finns det väl egentligen aldrig nåt behov eftersom dessa inte kan ändras run-time?

Permalänk: https://www.webforum.nu/p/1068178

## #3 — clarkbones, 2003-05-31T09:35Z

Nja, det är så att jag har en funktion accepterar vissa inparametrar. En inparameter ska vara ett tal. Om nu användaren skriver "kalle" istället för 1, 178 eller 3042 så vill jag kunna upplysa användaren om att inmatningen är fel. Jag trodde det fanns något enkelt sätt att bara läsa av datatypen. Men jag kan nog göra någon lite mer avancerad funktion som kollar vad användaren matat in... 

Men vad menar du att de inte kan ändras run-time? Om jag kör cstr till exempel så är väl det an datatypsförändring som sker run time?

Tack för hjälpen...

Permalänk: https://www.webforum.nu/p/1068182

## #4 — niko, 2003-05-31T10:00Z

OK. Det verkar som jag missförstod lite. Det du talar om skulle jag snarare kalla *formatet* än *typen* på datan och du borde kunna använda funktioner som tex *IsNumeric*.

> **clarkbones skrev:**
>
> Men vad menar du att de inte kan ändras run-time? Om jag kör cstr till exempel så är väl det an datatypsförändring som sker run time?

Jag menar ungefär så här: Om X är en referenstyp så kan X referera till olika saker under körningen och det kan finnas behov av att kolla typen:

```
dim X as Object

set x= new ADODB.Connection

'40 rader längre ner:

set X = new ADODB.RecordSet

' Ännu längre ner:

if TypeOf X is ADODB.Connection then ..
```

Om X däremot är en värdetyp tex en Integer så är ju detta fastslaget redan under kompileringen och X kan aldrig representera nåt annat än 2 bytes i minnet. *CStr* och andra konverteringfunktioner används när man vill omtolka datan och placera den nån annanstans:

```
dim X as Integer
Dim Y as String
X=7
Y=CStr(X)
```

Här kommer ju X för evigt att fortsätta vara en 2-bytes integer och det finns aldrig nåt behov av att skriva tex:

```
if TypeOf X is Integer then
```

Det var så jag menade ..

Permalänk: https://www.webforum.nu/p/1068199

## #5 — clarkbones, 2003-05-31T10:05Z

OK, tack för att du tog tid.

Permalänk: https://www.webforum.nu/p/1068205

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/78562-vilken-datatyp
