Datové typy – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Datové typy – .NET – Fórum – Programujte.comDatové typy – .NET – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1600 příspěvků
12. 9. 2012   #1
-
0
-

Zdravim, učím se .net c# a mám jednoduchý dotaz.

jak je to se vestavěnými typy c#? Někde se píše, že jsou vestavěné do jazyka a někde, že to jsou struktury frameworku .net

V c++ je integer prostě vestavěný typ bez jakýchkoli metod a vlastností. Ale pokud ho použiji v c# visual basic tak má svoje metody. Nebo má programátor na výběr zda použije struktury z .net či prostě jednoduché typy vestavěné do c#?

A nebo se vestavěné typy c# myslí pouze typy(struktury) z .net? ěkuji

Nahlásit jako SPAM
IP: 188.120.221.–
Martin
~ Anonymní uživatel
1600 příspěvků
12. 9. 2012   #2
-
0
-

Tak už jsem si zjistil, že vestavěné typy jsou pouze aliasy .net struktur....

Nahlásit jako SPAM
IP: 188.120.221.–
Martin
~ Anonymní uživatel
1600 příspěvků
12. 9. 2012   #3
-
0
-

Ještě bych ovšem měl jeden dotaz. Po nastudování těch typů je jasné, že se jedná o struktury.

Zajímalo by mě však, jak je možné, že u nich funguje operátor přeřazení. V c++ se musejí u každé struktury definovat. V C# se však nedefinují a nelze je tedy stejně jako v c++ použít. Jak je tedy toto řešeno v .net?

int a=32 //funguje přiřazení obyčejného čísla struktuře

mojestruktura b=32 //nefunguje, nelze přetížit operátor přiřazení

nemůžu si tedy vytvořit vlastní strukturu, kde budu mít zajištěné toto elegantní přiřazení hodnoty struktuře?

Doufám, že to nepíše příliš složitě.

Ve skutečnosti to testuji ve vb ale čekám, že v c# to bude stejné

Nahlásit jako SPAM
IP: 88.83.169.–
ingiraxo+15
Grafoman
12. 9. 2012   #4
-
0
-
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1600 příspěvků
12. 9. 2012   #5
-
0
-

Takže jde přetížit operátor přiřazení? Jde mi pouze o přiřazovací operátor. Vím, že ostatní lze přetížit.

Nahlásit jako SPAM
IP: 88.83.169.–
Martin
~ Anonymní uživatel
1600 příspěvků
12. 9. 2012   #6
-
0
-

Kdybych to měl zjednodušit tak mě zajímá, jak je možné, že do struktur vestavěných typů(int,double...) lze přiřazovat hodnoty obyčejným operátorem přiřazení. :) Asi to vypadá, že pro tyto struktury existují nějaké speciální vyjímky, které to umožňují, ale možná se pletu?

Nahlásit jako SPAM
IP: 88.83.169.–
ingiraxo+15
Grafoman
12. 9. 2012   #7
-
0
-

jestli to chápu dobře, tak ty chce docíli aby se tvá struktůra chovala podobně? např. něco jako 

Bagr bagr = 10; // kde Bagr je vlastni struktura
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1600 příspěvků
12. 9. 2012   #8
-
0
-

Ano přesně tak

Bagr bagr = 10; ale třeba i 

Bagr bagr;

bagr=10;

Nahlásit jako SPAM
IP: 88.83.169.–
ingiraxo+15
Grafoman
12. 9. 2012   #9
-
0
-

k tomu se používá implicitní a explicitní typování, v tomhle případě implicitní.. udělal jsem jednoduchej příklad 

    public struct HANDLE
    {
        public uint hnd;

        // pro nastaveni hodnoty
        public HANDLE(uint hnd)
        {
            this.hnd = hnd;
        }

        // kopirak
        public HANDLE(HANDLE hnd)
        {
            this.hnd = hnd.hnd;
        }

        // nula
        public static HANDLE Zero { get { return 0; } }

        // pretizeny "=" pro vstup uint typu
        public static implicit operator HANDLE(uint hnd)
        {
            return new HANDLE(hnd);
        }

        // pretizeny "=" pro ziskani uint
        public static implicit operator uint(HANDLE hnd)
        {
            return hnd.hnd;
        }

        // ziskani ukazatele
        public unsafe void* Pointer()
        {
            return new UIntPtr(hnd).ToPointer();
        }

        // ziskani hodnoty jako string
        public override string ToString()
        {
            return hnd.ToString();
        }
    }

// nasledne pouziti treba v Main() ...
HANDLE none; // nastavi 0

HANDLE hnd = 1000; // nastavi 1000 (uint)

void* ptr = hnd.Pointer(); // ziska ukazatel

hnd = HANDLE.Zero; // vynuluje

uint num = hnd; // ziska hodnotu z objektu (0)
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
bob
~ Anonymní uživatel
46 příspěvků
12. 9. 2012   #10
-
0
-
Nahlásit jako SPAM
IP: 95.82.154.–
Martin
~ Anonymní uživatel
1600 příspěvků
13. 9. 2012   #11
-
0
-

Super, díky oběma. Mám poslední dotaz. Je někde v dokumentaci popsáno, jak konkrétně je to řešeno například u struktur typu double, integer apod?

Nahlásit jako SPAM
IP: 188.120.221.–
ingiraxo+15
Grafoman
13. 9. 2012   #12
-
0
-

stejně jak jsem to napsal v příkladě, akorát to obsahuje víc věcí (operátorů, funkce nějaký apod.).. a taky se používá pečetící třída aby typ nešel zdědit

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Martin
~ Anonymní uživatel
1600 příspěvků
13. 9. 2012   #13
-
0
-

Super, díky

Nahlásit jako SPAM
IP: 188.120.221.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Podobná vlákna

Datove typy — založil repu

Datové typy(datum) — založil spartan13

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý