IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Ondra Toman
Člen
Avatar
Ondra Toman:6.1.2020 22:11

Doufám že jsem správně zvolil titulek, jelikož v tomhle mám dost zmatek. Jde o to, že když vytvořím projekt, vygeneruje se nějaký kód, začínající using System; atd. Je mi jasný, že using připojí k projektu další jmenné prostory s různými funkcemi, ale například násobení je taky funkce a žádná knihovna k tomu potřeba není. Nebo je? Kde jsou tedy uložené ty algoritmy na násobení? A co dalšího, krom násobení, můžu použít bez toho, abych připojil nějakou knihovnu?

 
Odpovědět
6.1.2020 22:11
Avatar
Odpovídá na Ondra Toman
Michal Štěpánek:7.1.2020 7:34

Mnoho otázek a všechny hrozně obecné. Základní funkce a "namespace" ti visual studio přidá automaticky při založení projektu, další namespace si musíš přidat sám podle toho, které potřebuješ.
Nevím, kolik jsi toho prostudoval z místních tutoriálů (podle dotazu bych řekl, že skoro nic), ale měl by sis je pročíst, protože k pochopení "funkčnosti", použití namespaces a jejich funkcí je toho tam poměrně dost...

Nahoru Odpovědět
7.1.2020 7:34
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
David
Člen
Avatar
David:7.1.2020 14:11

Ahoj,
souhlasím že dáváš vlastně víc otázek. Odpověď je ale celkem snadná - používáš namespace System, i když o tom nevíš.

Je potřeba si uvědomit že int, double atd. jsou aliasy pro struktury (struct) v jmenném prostoru System

konkrétně int je aliasa pro System.Int32 atd.

Další aliasy:
object: System.Object
string: System.String
bool: System.Boolean
byte: System.Byte
sbyte: System.SByte
short: System.Int16
ushort: System.UInt16
int: System.Int32
uint: System.UInt32
long: System.Int64
ulong: System.UInt64
float: System.Single
double: System.Double
decimal: System.Decimal
char: System.Char

takže pokud napíšeš

int a = 1;
int b = 1;
int c = a + b;

nepotřebuješ using System protože následující je přeloženo na:

System.Int32 a = 1;
System.Int32 b = 1;
System.Int32 c = a + b;

a to co se se strukturou nebo třídou děje při použití + - * / == != atd. viz "operator overloading"

 
Nahoru Odpovědět
7.1.2020 14:11
Avatar
Ondra Toman
Člen
Avatar
Odpovídá na David
Ondra Toman:7.1.2020 17:22

Díky, to je přesně to co jsem nevěděl. Jen s tím násobením jsi mě možná špatně pochopil. Když chci vynásobit dvě čísla nepotřebuju přetěžování operátorů, ale hlavně funkci (pravděpodobně napsanou v asembleru?), která vezme dvě čísla a udělá s nimi několik základních operací, které přímo procesor provádí, jelikož instrukce na násobení není (teda doufám). Takže kde bych mohl najít takovou funkci? V namespace System?

 
Nahoru Odpovědět
7.1.2020 17:22
Avatar
vosa53
Člen
Avatar
Odpovídá na Ondra Toman
vosa53:7.1.2020 19:10

Žádná taková funkce není, je na to přímo instrukce v CIL (mezikódu). Zdrojový kód se nejdříve přeloží kompilátorem do platformově nezávislého CIL.

var a = 1;
var b = 2;
var c = a * b;

Tento kód bude v CIL vypadat takto:

ldc.i4.1
stloc.0
ldc.i4.2
stloc.1
ldloc.0
ldloc.1
mul
stloc.2

Klíčová je zde instrukce mul, která provádí násobení dvou proměnných na CIL stacku.
Tento mezikód je potom překládán až za běhu JIT kompilátorem, který už je platformově specifický, můžeš se za běhu podívat jak se kód přeloží (ve VS Alt+G).

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
7.1.2020 19:10
Avatar
David
Člen
Avatar
Odpovídá na Ondra Toman
David:7.1.2020 19:11

Co se týká těch základních matematických operací - nevím. A taky mě to docela zajímá. Řekl bych že to asi bude záležitost runtimu který překládá msil na strojový kód. Zdrojáky k .NET Core runtime zde: https://github.com/dotnet/runtime

 
Nahoru Odpovědět
7.1.2020 19:11
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.