wtorek, 18 marca 2008

Tworzenie tablic obiektów w C#

Moze to naleciałości z C++, ale dziwna rzeczą okazało sie dla mnie inicjalizowanie tablicy obiektóww C# null'ami. Tworząc sobie tablice:
 
class MyType{
}
MyType[] array = new MyType[10];


Okazuje sie ze wszystkie elementy array sa ustawnione na null, dzieje sie tak ponieważ podczas tworzenia tablicy w C#, podobnie jak w C++ wywoływany jest konstruktor domyslny obiektów przechowywanych, jako że array przechowuje tylko referencje do obiektow to wywolywany jest konstruktor domyslny referencji a ten ustawia ja na null. Aby tego uniknać mozna recznie napisać pętle wszedzie gdzie tworzymy tablice:

for(uint i=0; i < array,Length; i++)
         array[i] = new MyType();

Jednak lepiej jest napisac raz i spokój, ja napisałem , może komuś sie przyda.

namespace Utillity{
  class Arraytil{
    public static T[] CreateArray(uint size)
      where T : new()
   {
      T[] array = new T[size];
      for (uint i = 0; i < size; i++)
        array[i] = new T()
      return array;
   }
 }
}

Używamy intuicyjnie:
using Utility;
MyType[] array= ArrayUtil.CreateArray<MyType>(10);

czwartek, 6 grudnia 2007

.pamiętajcie o konwersjach

.moze przez to ze zapisze to tu ten nie bede o tym zapominal. Jedna z dziwnych rzeczy w C++. Typy signed i unsigned i rzadzace nimi prawa.

1. Nie jest określone przez standard czy typ char jest signed czy unsigned czyli na róznych platformach mozemy miec rożne znaczenie wzorca bitowego tej samej liczby.

za TCPL:

char c = 0xFF;
int i = c;

i moze miec wartość 255 lub -1 zaleznie od implementacji

2.Porownania typow unsigned/sidneg. Choć już większość kompilatorów rzuca warningami gdy dochodzi do takiego porownania, ale wielu z nas nie zwraca na to uwagi.

signed int x = -2147483646
unsigned int y = 2147483648

(x < y) daje nam (2147483650 < 2147483648) czyli false!  

kompilator zasosował niejawną konwersje do typu unsigned.

Tu sa akrat wydumane przykłady, ale bardzio często wartości oscylują wokół 0 wiec typ unsigned może być często przekręcany na duże wartości.

wtorek, 4 grudnia 2007

.master c++ certificate at brainbench.com


.a co, chwale sie. Zdałem sobie teścik na certyfikat C++ Master z dość dobrym wynikiem. Co prawda test on-line, ale raczej nie da rady wyczytać odpowiedzi w książkach ani znależć na google. Teraz czekam tylko na papierowe potwierdzenie.

.wiecej tu:
View Transcript

.start

.no i mnie też dosiegło szaleństwo blogowania. Pomimo, że nie mam za dużo do powiedzenia-napisania, postanowiłem podążyć za tłumem i założyc bloga, a co mi tam, może nawet ktoś to przeczyta. Będzie o programowaniu głownie C++\Python\Flex no i pewnie jeszcze inne badziewie które na codzień doprowadzaja mnie do ...

.zapraszam!