lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
ho un problema che non riesco a risolvere. Stavo provando il wrapper delle SDL con MonoDevelop su Ubuntu.
Quando faccio
Codice sorgente - presumibilmente C# / VB.NET |
Sdl.SDL_Rect rect = new Sdl.SDL_Rect();
rect.x = 20;
rect.y = 20;
IntPtr image;
image = Sdl.SDL_LoadBMP(p_img);
Sdl.SDL_UnlockSurface(surfacePtr);
Sdl.SDL_BlitSurface(image, null, surfacePtr, ref rect);
Sdl.SDL_LockSurface(surfacePtr);
Sdl.SDL_UpdateRect(surfacePtr, 0, 0, 0, 0);
|
quando metto null nella BlitSurface il compilatore mi segnala errore dato che quel parametro deve essere un ref.
Allora ho provato a fare:
Codice sorgente - presumibilmente Plain Text |
Sdl.SDL_Rect nulla = null;
|
ma mi segnala errore dicendo che null è un tipo value e non SDL_Rect.
Anche istanziando con new la Rect e assegnadole null dopo mi dice la stessa cosa.
Quindi come faccio a passare un null alla funzione? |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
null è un tipo value? Semmai è un tipo reference, e sarà invece nulla (la variabile) ad essere un tipo value.
Semplicemente, i tipi value non possono essere null. E' come se scrivessi:
Codice sorgente - presumibilmente C# / VB.NET |
Non ha senso.
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Infatti mc è un tipo reference, poiché di tipo MyClass, che è una classe.
Ti sarebbe potuto sembrare strano qualcosa del genere:
Codice sorgente - presumibilmente C# / VB.NET |
Dim I As Int32?
I = Nothing
|
Non so se in C# esiste il simbolo ? usato in questo senso. Nel codice sopra, I è un tipo annullabile di interi: i tipi nullable sono tipi value strutturati ma possono supportare l'assegnamento di Nothing (null).
Sarebbe come scrivere:
Codice sorgente - presumibilmente C# / VB.NET |
Dim I As Nullable(Of Int32)
I = Nothing
|
o
Codice sorgente - presumibilmente Plain Text |
Nullable<Int32> I;
I = null;
|
Nota che non ho usato New. |
|