Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Centrala termica immergas

Amenda in Lipsa ?

Acoperire gol extrior intre termo...

Intreprindere individuala fara ac...
 Marci Biciclete - recomandari

Lipsa Tensiune pe o Faza, bransam...

Recomandare bicicleta copil 5 ani.

Recomandare kit automat acces usa
 [email][nvidia] Your GeForce NOW ...

Site nesigur

Baghetele ornamentale intre foile...

O recomandare pentru o camera ful...
 Pareri magazin online quickmobile?

Unde gasesc banane albastre?

Despre compania de aministrare Sq...

Durere taietura deget dupa 2 luni
 

Diferența sintactică între type casting și type conversion

- - - - -
  • Please log in to reply
1 reply to this topic

#1
Rhesus

Rhesus

    Senior Member

  • Grup: Senior Members
  • Posts: 2,882
  • Înscris: 22.04.2014
Continui cu articolele mele legate mai mult de mecanismul din spatele codului pe care transpirăm Posted Image, tocmai pt. a cunoaște ce se întâmplă în spatele unor simple tastări de cuvinte cheie.

Pe tot Internetul, inclusiv pe stackoverflow, există o dezbatere intensă pe tema Type Casting vs. Type Conversion. Ba că sunt definite de la caz la caz, ba că sunt definite diferit în funcție de limbajul de programare (de documentație).

Totuși, părerile oficiale ale dezvoltatorilor (MS), spun așa:

1. Type casting, pornind de la definiția casting-ului (to cast = a arunca, de unde și to cast a spell = a arunca o vrajă), reprezintă mai mult sugerat dpdv sintactic operația pe care o arunc asupra unui tip. Asemănător invocării unei metode.

2. Type conversion reprezintă, mult mai tehnic vorbind, ansamblul tuturor operațiilor survinte în momentul transformării efective a unui tip de dată în alt tip de dată.

double d = 22.5;
int i = (int) d ;

Avem un type conversion explicit, în care cast-ul este defapt operația de aruncare (folosesc cat mai des definiția termenului) a blestemului (alias operatorul de cast (type) d;

Conversia este mecanismul din spatele transformării numărului flotant d 22.5, în 22 (respectiv operațiile aduse mantisei, exponentului, normalizarea, în alte cazuri etc.)

Practic conversia se face prin aplicarea unui operator de cast asupra unui tip (a unei variabile sau obiect,mai corect spus). (în cazul conversiei explicite).

String s = "Hello";
String s2 = (string) s;
// Un exemplu mai cu sens, decat cel de sus
Object o = "Hello";
String s = (string) o; // unboxing.


Conform teoriei specialiștilor, în cazul de mai sus, deși avem implicată noțiunea de cast, nu avem de a face cu conversii. De ce ? Pentru că asupra conținutului, nu operăm absolut deloc. Așadar, deși avem operatorul de cast, primul caz fiind un non-sens - dar ca exemplu este foarte bun -, nu se operează deloc asupra șirului de caractere (respectiv Hello).

Ce părere aveți voi ?

Edited by Rhesus, 04 October 2015 - 17:53.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Nu stiu de unde ai scos "String" ala, dar pute a C# (pe aria C++, C# pute).

Conversie inseamna mai multe. Nu are rost sa povestesc ceea ce e descris foarte bine aici: http://www-h.eng.cam... /tic0129.html

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate