játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5444
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] > 4 < [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [46]
Parallax - Tag | 579 hsz       Online status #199033   2013.11.12 13:04 GMT+1 óra  
Idézet
Viperion :
A property-t értem már.

De ezt nem értem még mindig.
Nem lehetne még egyszerűbben?

"A T típus megszorítására szolgál."
Ennek semmi értelme.Mi az,hogy megszorítnai egy típust?


A típusok puhányok, addig kell szorongatni őket, amíg el nem kékülnek, vagy zöldülnek attól függően, hogy értékesek, vagy csak referálnak.
Egyébként itt érdemes szétnézni van sok okosság: C# pdf és videók

   
Pretender - Törzstag | 2498 hsz       Online status #199024   2013.11.12 06:03 GMT+1 óra  
Az a lényeg, ha azt mondod ott a T-re, hogy "where T : IComparable", akkor a T típus helyére nem írhatsz be olyan típust, ami nem valósítja meg az IComparable interfészt. Ennél egyszerűbben nem lehet elmondani... Tisztában kell lenni néhány alapfogalommal, pl. mi az, hogy típus, öröklés, interface megvalósítása, stb.

   
Viperion - Tag | 540 hsz       Online status #199020   2013.11.11 21:27 GMT+1 óra  
A property-t értem már.

De ezt nem értem még mindig.
Nem lehetne még egyszerűbben?

"A T típus megszorítására szolgál."
Ennek semmi értelme.Mi az,hogy megszorítnai egy típust?

Ezt a hozzászólást Viperion módosította (2013.11.11 21:33 GMT+1 óra, ---)

   
Pretender - Törzstag | 2498 hsz       Online status #199012   2013.11.11 05:50 GMT+1 óra  
A where egy minimális angol tudással és hozzáértéssel pedig kitalálható... A T típus megszorítására szolgál. Annyit mond, hogy a Stack olyan típusú elemeket tárol, amik IComparable-k (pontosabban ezt az interfészt megvalósítják).

A property meg lehet getter, vagy getter és setter. Nagyjából csak annyi, mintha lenne egy függvényed, amivel le tudod kérni az értékét / tudod módosítani. Annyival több a getter-setter property, mintha public lenne a változó, hogy (mivel a függvényekhez hasonlít a viselkedése) egyéb utasításokat is végre tudsz hajtani előtte.

Keress példákat a neten, rengeteg van, abból jól meg lehet érteni ezeket.

   
Viperion - Tag | 540 hsz       Online status #199011   2013.11.11 04:48 GMT+1 óra  
Eltudná nekem valaki hozzáértő magyarázni azt,hogy a "where" kulcsszót mire használják c# ben?
És azt is,hogy a propetyk azok micsodák?

Ebből nem sikerült megértenem,hogy mire van a where:
Alapértelmezésben a generic server kódjában csak az Object típuson való metódusok és property-k engedélyezettek. Ha más metódusokat is szeretnénk használni, akkor a generic fejlécében jeleznünk kell, hogy a paraméter típusnak milyen osztály vagy leszármazottja, esetleg milyen interfészek felelnek meg, ezt a where kulcsszó segítségével tehetjük meg.

pl: public class Stack<T> where T : IComparable

----
Ebből pedig az nem sikerült,hogy mi az a property:
A 'Property' egy komponens névvel ellátott értéke. Például, egy gomb rendelkezhet a „text” property-vel, ami a megjelenítendő szövegre utal.


Egyszerűbben megtudnátok őket fogalmazni?

   
Matzi - Szerkesztő | 2519 hsz       Online status #198729   2013.11.01 10:31 GMT+1 óra  
Olvasnivaló, avagy a string miért immutable.
Nem olyan nehéz megérteni. Referencia típus, mivel osztály, de írásvédett, mert az hasznos.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Pretender - Törzstag | 2498 hsz       Online status #198726   2013.11.01 08:24 GMT+1 óra  
Miért olyan nagy pain in the ass ez? Ha paraméterként kell átadni, és nem akarod, hogy copyzza, akkor megjelölöd referenciaként: (úgy rémlik, hogy lehet ilyet )
Kód:
void foo(ref string str);

   
Viperion - Tag | 540 hsz       Online status #198724   2013.10.31 19:31 GMT+1 óra  
m4 ha úgy van ahogy írtad akkor a string nem is referencia típus.
És mégis annak nevezik.Kezdem felhúzni magamat ezen.

Pretender:
Az érték szerintieknél az hiszem mindig copy constructor vagy ahhoz hasonló van mert egy másolatot mindenképp létre kell hozni ahhoz,hogy bele lehessen rakni az valamibe.
Úgyhogy ha a stringnél és az Object típusnál másoló konstruktor van ami egy másolatot ad vissza méghozzá az értékről az nem mondható ref típusnak.

Úgy,hogy hiába a bedobozolás is mert nem tudom másképp kezelni őt mint egy érték típust.
Csak class oknál működött nekem eddig többit még nem próbáltam az Object és a Stringen kívül.

Ezt a hozzászólást Viperion módosította (2013.10.31 20:21 GMT+1 óra, ---)

   
Pretender - Törzstag | 2498 hsz       Online status #198723   2013.10.31 19:22 GMT+1 óra  
Gondolom c#ban is van valamiféle copy-constructor. Gondolom a String a kevés olyan osztályok közé tartozik, amikor ha azt mondod, hogy a = b, akkor nem csak rámutat, hanem lemásolja az eddig b-ben lévő string tartalmát. De amúgy fogalmam sincs.
Itt beszélgetnek róla.

   
Viperion - Tag | 540 hsz       Online status #198720   2013.10.31 18:41 GMT+1 óra  
Ezt nem értem.
Ha a stringek referencia típúsok,akkor ebben az esetben:
string s1 = "QJ", s2 = "PL";
s1 = s2; //Ha referencia típús,akkor itt s1 nek ugyanarra a memóriaterületre kellene,hogy mutasson mint az s2.De nem ez történik,akkor most miért van az,hogy a stringet referencia típúsnak nevezik?
Akkor most mi a külömbség a érték típúsok és a referencia típúsok között?

   
M4 - Tag | 187 hsz       Online status #198701   2013.10.31 09:58 GMT+1 óra  
"most s1 nek arra a memóriaterületre kell,hogy mutasson amire s2 is mutat"
Nem, hanem a "ppppp" string memóriaterületére. A stringek amúgy sem változnak (az értékek), mert immutable-ek (megváltoztathatatlanok) javaban legalábbis. Szóval nem is lehetne gond ebből.
A "ppppp" azt jelenti, hogy létrejön egy string objektum ezzel az értékkel. És értékadáskor ennek a címét kapja meg az s1.

   
Viperion - Tag | 540 hsz       Online status #198696   2013.10.31 03:59 GMT+1 óra  
Van egy c# jegyzet azért tanulom a benne írtakat mert c++ ról át akarok szokni c# re az unity miatt.

Azt írta a jegyzet,hogy a referencia típúsok és az érték típúsok közti külömbség az,hogy ha egy érték típúshoz ha hozzárendelek egy másik érték típúst,akkor azok nem fognak egy memóriaterületre mutatni de referencia típúsok esetében igen.

Például:
Kód:
int x = 5, y = 10;
x = y;

Mivel ezek érték típúsok ezért nem lesz az,hogy x ugyanarra a memóriaterületre fog mutatni mint az y; Csak az értékük lesz ugyanannyi.

Példa2:
Kód:
using System;

class MyClass {
    public int x;
}

class Program {
    static void main(string[] args) {
        MyClass s, p;
        s.x = 5;
        p.x = 10;
       
        p = s;
        Console.WriteLine(p.x);
    }
}

Ebben a példában azért fog 5 lenni a kimenet mert a class-ok referencia típúsokat hoznak létre ez miatt az történik,hogy p arra a memóriaterületre fog mutatni amire s.A p egy alias lesz s re.

Amit én nem értek az az,hogy a jegyzet szerint a string típús is referencia típús de mégis úgy viselkedik mint egy érték típús.

Példa:
Kód:
String s1 = "kkkk", s2 = "qqqq";
s1 = s2;
s1 = "ppppp";                     
Console.WriteLine(s2);

most s1 nek arra a memóriaterületre kell,hogy mutasson amire s2 is mutat,
mert a string referencia típús.Ha most megváltoztatom s1-et,akkor s2 nek is változnia kell.

Ha a stringek referencia típúsok lennének,akkor most s2 nek egy alias-a kellene,hogy legyen s1.
De nem az mert s2 értéke nem változott s1 hatására.

Akkor most,hogy van ez?

Vagy itt van ez:
Kód:
using System;

namespace PracticeConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 5;
            int y = 10;
            object objx = x;
            object objy = y;
            objy = objx; //Itt objy ahelyett,hogy megkapná az objx referenciáját csak az értékét kapja meg.
            objy = 100;
            Console.WriteLine(objx); //Itt látszik a kimenetből ugyanis objx nem lett 100.
            Console.WriteLine(objy);
            Console.ReadKey();
        }
    }
}


A bedobozolás arra van,hogy megengedjük egy érték típúsnak,hogy referencia típúsként viselkedjen.
Ez hülyeség!Meg a stringeknél is.Ez csak class oknál működik.

Ezt a hozzászólást Viperion módosította (2013.10.31 04:45 GMT+1 óra, ---)

   
Pretender - Törzstag | 2498 hsz       Online status #198476   2013.10.21 18:42 GMT+1 óra  
Mégsem jó úgy, ahogy akartam... Adott egy c# control, annak van egy Handle property-je.
Ezt át akarom adni a c++ kódnak, és ott HWND-t csinálni belőle. Első körben úgy ellenőrzöm, hogy lekérem a méretét (GetClientRect), és kiírom egy file-ba.

Így próbálom az egészet:
Kód:
// c++
DllExport bool WrapperCall start(void* handle, void* graphicsHandle)
{
    HWND h1 = static_cast<HWND>(handle);
    HWND h2 = static_cast<HWND>(graphicsHandle);

    // get size
}

// c#
[DllImport("Editor.dll")]
private unsafe static extern bool start(void* handle, void* graphicsHandle);

// valahol a kódban
bool rc = start(this.Handle.ToPointer(), previewPanel.Handle.ToPointer());


szerk.:
Hmm, mégis csak működik.

Ezt a hozzászólást Pretender módosította (2013.10.21 20:25 GMT+1 óra, ---)

   
lackoatya - Tag | 3 hsz       Online status #195964   2013.07.09 05:54 GMT+1 óra  
Idézet
versio :
Pretender: kiprobalhatjuk ki a bena, irjal c++-ban egy olyan programot ami 10 millio floating szamot sorbarendez, en c#-vel leverlek 10-szeresen abban biztos vagyok



Programozási időben igen, viszont a programod futási ideje és általa lefoglalt memória méretét tekintve szerintem nem a ráfordított kódolási idő a lényeg! Persze megvannak mindkettőnek az előnyei és hátrányai is.

   
versio - Tag | 659 hsz       Online status #195869   2013.07.06 22:29 GMT+1 óra  
ha public a valtozo pl :

public alma = 10;

akkor unityban az inspector ablakban is megjelenik a script reszlegben, es jatek kozben is allitgathatod
   
Viperion - Tag | 540 hsz       Online status #195867   2013.07.06 20:52 GMT+1 óra  
A c++11 ben lehet.

   
Geri - Törzstag | 2188 hsz       Online status #195866   2013.07.06 20:39 GMT+1 óra  
mintha c++ban is lehetne

   
versio - Tag | 659 hsz       Online status #195865   2013.07.06 20:34 GMT+1 óra  
de c#-nel ilyen felesleges baromsagokra nincs szukseg, mert a valtozok deklaralasakor mar erteket lehet neki adni

class gyumulcs
{
int alma = 10;

public gyumulcs()
{
}
}
   
Pixi - Tag | 206 hsz       Online status #195863   2013.07.06 20:19 GMT+1 óra  
Ja akk sorry én nem C++ -zok.

   
Pretender - Törzstag | 2498 hsz       Online status #195860   2013.07.06 19:59 GMT+1 óra  
Itt azt mondják, hogy nem lehet.
Idézet
The first one is not legal in C#

   
Viperion - Tag | 540 hsz       Online status #195859   2013.07.06 19:54 GMT+1 óra  
Nem ez érdekelt.
Elmagyarázom.
A c++ ban ahogy c# ben is a típusoknak van konstruktoruk.
C++ ban a konstruktornak nincs visszatérési értéke csak neve és bemenő paraméterei,inicializáló listája és törzse.

Itt egy példa:
class myType {
public:
myType(int, bool);
private:
int itsX;
bool itsV;
};

/*Figyeld meg,kettőspontot tettem a bemenő paraméterei után.A kettőspont azt jelzi,hogy amit utána írok azt a konstruktor inicializáló listájába fogom írni.Oda csak értékadó műveletek mehetnek egyéb kifejezések nem.Legalább is c++ ban*/
myType::myType(int x, bool v):
this->itsX(x),
this->itsV(v)
{
//Ez pedig a konstruktor törzse ide jöhetnek mondjuk a számítások
}

int main() {
myType type(4444, true);
return 0;
}

Értitek már ugyanezt akarom c# ben.
Nem a konstruktor törzsében akarok a tagváltozóknak értéket adni hanem a konstruktor inicializáló listájában.

Pretender nem láttam a te hozzászólásodat csak miután ki írtam az enyémet bocsi de azért jöhetne részletesebb magyarázat erre.

Ez azt jelenti,hogy c# ben ez nem lehetséges?

   
Pretender - Törzstag | 2498 hsz       Online status #195858   2013.07.06 19:41 GMT+1 óra  
Ha jól tudom c#ban nincs initlist. Legalábbis nem valid.

@Pixi: nem listáról volt szó, hanem inicializáló listáról, ami c++ban egyszerűen használható:
Kód:
class Foo
{
public:
    Foo() : i(10) { }

private:
    int i;
};

   
Pixi - Tag | 206 hsz       Online status #195856   2013.07.06 19:39 GMT+1 óra  
Ezt nézted már?

msdn.microsoft.com/en-us/library/vstudio/bb397680(v=vs.100).aspx

// The default constructor has no parameters. - ebből azt veszem ki, hogy az alapnak nincs meghatározott paramétere, azt a példa legalul szintén úgy hozza létre egy Lista segítségével:

Kód:
The following example shows how to initialize a collection of StudentName types by using a collection initializer. Note that a collection initializer is a series of comma-separated object initializers.

List<StudentName> students = new List<StudentName>()
{
  new StudentName {FirstName="Craig", LastName="Playstead", ID=116},
  new StudentName {FirstName="Shu", LastName="Ito", ID=112},
  new StudentName {FirstName="Gretchen", LastName="Rivas", ID=113},
  new StudentName {FirstName="Rajesh", LastName="Rotti", ID=114}
};


Azért remélem ír valami hozzáértőbb személy is, mostmár én is kiváncsi lettem mit szeretnél pontosan.

   
Viperion - Tag | 540 hsz       Online status #195854   2013.07.06 19:21 GMT+1 óra  
Én csak azt akarom megtudni,hogy egy c# osztály konstruktorának az inicializáló listájában(Nem a törzsében),hogyan inicializálunk változókat. Erre választ nem találok sehol .

   
Pixi - Tag | 206 hsz       Online status #195852   2013.07.06 18:57 GMT+1 óra  
Lehet, hogy nem teljesen értem amit akarsz. Szóval te példányostani szeretnéd magát az osztályt, méghozzá úgy, hogy egy listában is számon tartod az elemeket? Én most XNA-s projektból másolok egy egyszerű példát, ugye ez is C#:

Kód:
    public class Weapon
    {
        public Vector2 poz;
        public Rectangle alap_negyzet,
                                    kirajzolo_negyzet;
        public int kepkocka_szamlalo;
        public SpriteEffects irany;

        public static List<Weapon> lovedekek = new List<Weapon>();

        public Weapon(Vector2 poz,
                                 Rectangle alap_negyzet,
                                 Rectangle kirajzolo_negyzet,
                                 int kepkocka_szamlalo,
                                 SpriteEffects irany)
        {
            this.poz = poz;
            this.alap_negyzet = alap_negyzet;
            this.kirajzolo_negyzet = kirajzolo_negyzet;
            this.kepkocka_szamlalo = kepkocka_szamlalo;
            this.irany = irany;
        }

        ///...ciklusban (pl. for, mert az indexel is ellátja)
       
        public static void Update()
        {
            //létrehozni egy példányt belőle egyéni paraméterekkel:
           
            //pl. if(...//lenyomok egy gombot pl.//...)
            lovedekek.Add(new Weapon(new Vector2(Player.poz.X + 40, Player.poz.Y + 40), new Rectangle(), new Rectangle(0, 0, 56, 34), 0, SpriteEffects.None));

            for (int i = 0; i < lovedekek.Count; i++)
            {
                //törölni egyet
                if (lovedekek[i].alap_negyzet.Intersects(...///valamivel ütközik...///))
                {
                    lovedekek.RemoveAt(i);
                    i--;
                }

            // törölni az egész elemet

            lovedekek.Clear();
            }
        }
}


ui: ja most látom nem a listába helyezés volt a kérdés Én publikáláskor a zárójelben is ugyanazt a nevet használom, mint az adattagoknál, de ettől még ugyanúgy működik ez ne zavarjon össze.

Ezt a hozzászólást Pixi módosította (2013.07.06 19:05 GMT+1 óra, ---)

   
Viperion - Tag | 540 hsz       Online status #195850   2013.07.06 16:54 GMT+1 óra  
C# nek,hogyan kell használni a konstruktor inicializáló listáját?
C++ így jó volna de itt c# ben nem akar működni.Meg oldható ez valahogy az inicializáló listában ha igen,hogyan?
public EszrevetelClass(Transform _otherTrans, Transform _originalTrans, float _speed = 4.0f):
this.other ( _otherTrans),
this.original ( _originalTrans),
this.speed = (_speed)
{}

   
Parallax - Tag | 579 hsz       Online status #195847   2013.07.06 15:28 GMT+1 óra  
Idézet
versio :
meg jo hogy nem kell destructor, kit erdekel mikor torlodik a memoriabol az legyen a rendszer dolga, pont ezert jo a c# , nem tudsz torolni valamit ami meg kellhet, vagy nem hagysz benne valamit ami mar nem kell, c++-ban az idod felet ezeknek a faszsagoknak a debuggolasaval toltod , a produktivitas meg zero


Ez hülyeség. Megísz magadnak egy memória management-et és az központilag megoldja a memória kezelést, figyelmeztet, ha nem volt törlés stb. Többszörösen öröklést meg nem muszáj használni csak azért mert a nyelvben ott van és feltétlenül el kell gáncsolnia magát a fejlesztőnek, tervezni kell úgy, hogy ne legyen rá szükség.

   
versio - Tag | 659 hsz       Online status #195846   2013.07.06 14:23 GMT+1 óra  
Pretender: kiprobalhatjuk ki a bena, irjal c++-ban egy olyan programot ami 10 millio floating szamot sorbarendez, en c#-vel leverlek 10-szeresen abban biztos vagyok
   
Pretender - Törzstag | 2498 hsz       Online status #195841   2013.07.06 07:39 GMT+1 óra  
Idézet
versio :
c++-ban az idod felet ezeknek a faszsagoknak a debuggolasaval toltod , a produktivitas meg zero


Hát, ha valaki béna...

@Viperion:
Csak egy konkrét implementációt tartalmazó osztályból tudsz öröklődni, a többi legfeljebb interface lehet. Hogy miért? Mert hülyék, és azt mondták, hogy nincs rá szükség. Túl sokszor valóban nincs, de néha nem ártana, ha lenne...

Amit versio linkelt, az meg nem igazi öröklődés, hanem generices trükközgetés. De hát ilyen egy hatékony nyelv...

   
Viperion - Tag | 540 hsz       Online status #195839   2013.07.06 00:54 GMT+1 óra  
versio én nem értem,hogy hogyan gondolja a megvalósítást azon a linken. De amúgy kösz.

   
versio - Tag | 659 hsz       Online status #195838   2013.07.06 00:16 GMT+1 óra  
Viperion - Tag | 540 hsz       Online status #195837   2013.07.05 23:54 GMT+1 óra  
Miért nincs a c# ben többszörös öröklődés?

   
versio - Tag | 659 hsz       Online status #195836   2013.07.05 23:10 GMT+1 óra  
meg jo hogy nem kell destructor, kit erdekel mikor torlodik a memoriabol az legyen a rendszer dolga, pont ezert jo a c# , nem tudsz torolni valamit ami meg kellhet, vagy nem hagysz benne valamit ami mar nem kell, c++-ban az idod felet ezeknek a faszsagoknak a debuggolasaval toltod , a produktivitas meg zero
   
lackoatya - Tag | 3 hsz       Online status #195835   2013.07.05 21:06 GMT+1 óra  
Tévedés, hogy ne lenne destruktor, szintaxisa:

Kód:
class MyClass
{
        ~MyClass()
        {
                //Például a Dispose meghívása, ha IDisposable
        }
}


Az egyetlen gond vele, hogy nem igazán jó semmire, nem determinisztikus, hogy mikor hívódik meg a függvény, mivel a GC (GarbageCollection) saját maga kezeli a memóriát, nem igazán érdemes beleszólni, hogy kit mikor dobjon ki, annyit kell tudni erről, hogy különböző generációkba osztja az egyes objektumokat, és ennek megfelelő sorrendben szabadul meg tőlük, amikor helyre van szükség, pontosan ezért nem lehet megmondani mikor fut le a destruktor, így nem igazán szokás használni, egyszerűen felesleges.

   
Viperion - Tag | 540 hsz       Online status #195833   2013.07.05 19:18 GMT+1 óra  
Már nem lényeges a kérdés megoldottam a problémát ha akarjátok törölhetitek.
Amúgy köszi mindent.

Egyébként az volt a baj,hogy amelyik osztály örökli a MonoBehaviourt abban nem használható a konstruktor.

   
Viperion - Tag | 540 hsz       Online status #195832   2013.07.05 18:12 GMT+1 óra  
Itt miért kapom ezt a hibakódot: CS1729

Kód:
//EszrevetelClass.cs tartalma
using UnityEngine;
using System.Collections;

public class EszrevetelClass: MonoBehaviour
{

private Transform other;
    private Quaternion toRotate;
private Vector3 distance;
private float degres, speed;


public EszrevetelClass(Transform _transform, float _speed = 4.0f) {
this.other = _transform;
this.speed = _speed;
}


public void setDegres() {
float cos, rad;
distance = this.other.transform.position - transform.position;
distance.Normalize();
cos = Vector3.Dot(Vector3.forward, distance);
cos = Mathf.Clamp(cos, -1.0f, 1.0f);
rad = Mathf.Acos(cos);
this.degres = Mathf.Rad2Deg * rad;
if(other.transform.position.x < transform.position.x)
this.degres = -this.degres;
}

public float getDegres() {
return this.degres;
}

public void setToRotate() {
this.toRotate = Quaternion.Euler(0f, this.degres, 0f);
}

public Quaternion getToRotate() {
return this.toRotate;
}

public void setSpeed(float _speed = 4.0f) {
this.speed = _speed;
}

public float getSpeed() {
return this.speed;
}

}


Kód:
//EszrevetelScript.cs tartalma
using UnityEngine;
using System.Collections;

public class EszrevetelScript: EszrevetelClass
{

private EszrevetelClass rotateOtherObj;
private float time;

// Use this for initialization
void Awake()
{
rotateOtherObj = new EszrevetelClass(GameObject.Find("CylinderTwo").transform);
}


void Update()
{
if(Input.GetKeyDown(KeyCode.A))
{
rotateOtherObj.setDegres();
rotateOtherObj.setToRotate();
time = Time.time + 5f;
}

if(Time.time < time)
    transform.rotation = Quaternion.Lerp(transform.rotation ,rotateOtherObj.getToRotate(), rotateOtherObj.getSpeed() * Time.deltaTime);
}

}


Tudom mit jelent ez a hibaüzi de nem értem miért kapom hisz át adok neki én egy transform objektet és mégis.

   
Parallax - Tag | 579 hsz       Online status #195831   2013.07.05 18:10 GMT+1 óra  
.NET-ben nincs destruktor, illetve managed objektomoknál nincs is értelme, mert a GC felszabadítja, ha nem hivatkozik rá senki. 1-1 managed objektumra, ha nem hivatkozik semmi, akkor halottnak nyílvánítja a rendszer és onnan vagy feltámad, vagy a GC kinyírja egyszer, ha úgy tartja kedve.

Nem managed objektumoknál van értelme a "destruktornak", itt az ún dispose pattern-t lehet használni. Ennek lényege, ha a coder elfelejti meghívni a Dispose-t, akkor kinyírás előtt a rendszer megteszi.

A fentieknek semmi köze a C++ féle destruktor fogalmához, teljesen más a kettő memória kezelési mechanizmusa.

   
Pretender - Törzstag | 2498 hsz       Online status #195828   2013.07.05 15:38 GMT+1 óra  
Semmi köze nincs ahhoz, hogy inline, vagy sem.

szerk.:
Na jó, kicsit konstruktívabb is legyek... c++ban az az alapvető szabály, hogy a header nem tartalmaz implementációt, egyfajta interfaceként szolgál csak. Egyéb nyelvekben (pl. c# és java) ez nem így működik, ott egyetlen fájl tartalmazza a deklarálást és a definiálást (tudjuk a különbséget!)

Attól, hogy a deklarálás és a definiálás egyetlen helyen van, még nem lesz inline, szimplán más elvet követ a két nyelv. És nagyon fontos, hogy ne akarjuk az egyiket úgy használni, mint a másikat.

C#-ban pedig nincs destruktor, csak valami dicső függvény (finalize talán? vagy az java?)

   
Viperion - Tag | 540 hsz       Online status #195827   2013.07.05 15:27 GMT+1 óra  
A c# nek van szemétgyűjtője,akkor én mire használjam benne a destruktort?
És miért kell az osztályon belül létrehozni a metódusok törzsét.Nekem c++ után ez úgy tűnik,hogy c# ben csak is inline módon létezhetnek az osztályokban a metódusok.
Példa:
public class Xy
{
private Xy(); //Így nem jó
public float getXyValue(); /*Nem jó nem lehet később megírni benne a metódus megvalósítását mint a c++ ban. Ugy akarnám mint a c++ ban:
visszatérési_értéke osztálynév::metódusa() {törzs} Így nem inline c++ ban.
}

Csak így jó, de ez C++ ban inline, C# ben is?Mert ha ige akkor nagy kóddal rendelkező metódus esetén ez fos módszer az tuti.
public class Xy
{
private Xy() {}
public float getXyValue() { /*Ngayon sok kód*/ }
}

   
Asylum - Törzstag | 5444 hsz       Online status #193891   2013.05.07 20:10 GMT+1 óra  
Megoldodott, a projekt fájlban a IncludeAssemblyInVSIXContainer-t át kellett állíteni true-ra.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5444 hsz       Online status #193869   2013.05.06 19:30 GMT+1 óra  
Valaki írt már visual studiohoz plugint? (konkréten MEF komponenst).
Az a bajom, hogy k*rvára nem töltödik be, a log viszont azt mondja, hogy igen...debugolni sem tudom mert "no symbols loaded".

Amugy csak azért kéne hogy az UML editorban úgy tudjam kiexportálni a xaros képet hogy átlátszó legyen a háttér...
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Bukta - Tag | 308 hsz       Online status #191505   2013.02.23 16:45 GMT+1 óra  
A Skynet jo példa, de most már nem mondok semmit. Majd megcsinálom és akkor rájöttök (meg én is) mi motoszkál bennem. (lehet hogy csak valami betegség, de legalább megpróbálom)

Ezt a hozzászólást Bukta módosította (2013.02.23 16:53 GMT+1 óra, ---)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
DMG - Szerkesztő | 3172 hsz       Online status #191484   2013.02.22 21:36 GMT+1 óra  
Idézet
(A jelszós példányosítás meg egy nagyon programozó szinten lévő biztonsági mech szerintem így első ránézésre. Jelszóval védjük fájljainkat, adatainkat a neten, mért ne lehetne egy objektumot is védeni. Lehet, hogy nagyságrenddel biztonságosabb programokat lehetne csinálni...)




Ez fájt, de nagyon. Ezek szerint azért van az a sok sechole egyes programokban, mert valami galád eljárásban galád módon példányosítanak egy osztályt? Ki, vagy mi ellen védenénk jelszóval az objektumokat? A Skynet ellen?
-----------------------------------------
Dont Listen to the Naysayers
   
Matzi - Szerkesztő | 2519 hsz       Online status #191465   2013.02.22 13:46 GMT+1 óra  
Bukta:
Azért negatív mindenki, mert olyan felütéssel kezdted, hogy minden nyelv szar, mert vannak benne korlátok. Erre nehéz sok jót mondani.
Amúgy meg ha már olyan régóta használják olyan sokan, és még jön is ki belőle új változat, akkor nem lehet, hogy amire tényleg szükség van az belekerült? Pl magadnak definiálható hozzáférés módosító nem kell, de lambda kifejezés meg igen.

Persze ha valami világrengetőt kitalálsz, az oké, ha hiányolod. De néhány nagyon gyenge hasraütésszerű példával bizonyítani, hogy szar minden.
"Azért szart a gazdaság, mert nincs ingyen sör meg ingyen internet"
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Asylum - Törzstag | 5444 hsz       Online status #191462   2013.02.22 12:51 GMT+1 óra  
Idézet

Honnét tudod minek mi értelme van?



Mondjuk onnan h 8 eve aktivan programozok?
A legjobb pelda a C++0x bol kivett conceptek. Baromi jo otlet, baromi hasznos lett volna, de a kutya nem hasznalta/nem ertette.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Parallax - Tag | 579 hsz       Online status #191461   2013.02.22 12:46 GMT+1 óra  
Bukta: Te szerintem kevered az adatbázis kezelést a programozással, vagy csak nagyon unatkozol. Egyébként vicces lenne jelszóval levédeni osztályokat, biztosan örülnének neki az adott libet használók.

   
mandyedi - Tag | 32 hsz       Online status #191460   2013.02.22 12:44 GMT+1 óra  
Hasra ütés helyett szerintem többet ér ha nekiállsz kódolni, megpróbálod megvalósítani amiket szerinted nem lehet. És ha tényleg nem lehet, akkor posztolod a problémát, esetleg a kódot ami már majdnem tudja amit kellene, de mégse.
Szerintem sokkal értelmesebb és szakmaibb viták lennének belőle, minthogy leállsz szidni egy olyan nyelvet amit milliók használnak és még mindig nem váltotta fel más az adott területen és amit nem csak úgy hasra ütés szerűen építettek fel.

   
Bukta - Tag | 308 hsz       Online status #191455   2013.02.22 11:57 GMT+1 óra  
Jó most csak hasra ütöttem és írtam pár dolgot, ki tudja. Van egy millió programozo lehet hogy vkinek felötlenek ilyenek és ugy gondolják hogy ha azt ugy meg lehetne csinálni akkor jobb lenne. Nem a konkrét példáimmal akarok meggyőzni senkit, csak próbálok tágabban gondolkozni.
(A jelszós példányosítás meg egy nagyon programozó szinten lévő biztonsági mech szerintem így első ránézésre. Jelszóval védjük fájljainkat, adatainkat a neten, mért ne lehetne egy objektumot is védeni. Lehet, hogy nagyságrenddel biztonságosabb programokat lehetne csinálni...)
A "Kurvasok ertelme van..." mondat szerintem akkor is elhangzott mikor Galilei asszondta h forog a Föld. Honnét tudod minek mi értelme van? A php-re meg akkor a lambdára is biztos sokan mondták h semmi értelme mégis mi lett belőle. A dolgok attól érdekesek, hogy parányi dologból lesz valami amit nem gondoltunk volna. Nem mondom, hogy meg lehet váltani a világot, meg hogy 100% hogy a C++nál van jobb is meg hogy előre tudom, hogy most milyen lesz/lenne, meg hogy "dual_password onlyonce donottouch unbondable standalone class MySuperClass {...}" ilyen sorok lennének benne. De olyan negatívak vagytok mind állat. Mondom, hogy mi lenne ha talán ez meg ez lenne és akkor mi van: Annak mi érelme, minek az neked? Semminek, de lehet, hogy kialakul belőle valami.
De azért nagyjából kiderült, hogy a C++ is jó ilyenekre. Büszke vagyok a csapatra
[igaz én ettől még megcsinálom ahogy Matzi mondta ]
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
mandyedi - Tag | 32 hsz       Online status #191454   2013.02.22 11:44 GMT+1 óra  
Idézet
Matzi :
Ne panaszkodj róla ,hogy miért nem csinálnak ilyet meg olyat, pláne ilyen buta példákkal. Csináld meg, és bizonyítsd be vele, hogy mennyire beszédes és jó amit kitaláltál, és akkor lehet, hogy valamikor elterjed.



Ott a pont!

   
Asylum - Törzstag | 5444 hsz       Online status #191453   2013.02.22 10:41 GMT+1 óra  
Jelszoval peldanyositani ...

Tessek:

Kód:
class Alma
{
public:
    Alma(const char* code) {
        if (0 != strcmp(code, "1#brOti2p")
            throw std::bad_alloc();
    }
};


Kurvasok ertelme van...
Amiket meg leirtal mindegyik megcsinalhato C++ ban.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Frissebbek | Korábbi postok
[1] [2] [3] > 4 < [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [46]