Oppure

Loading
10/01/10 18:46
lorenzo
ho un problema che non riesco a risolvere. Stavo provando il wrapper delle SDL con MonoDevelop su Ubuntu.

Quando faccio

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:

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?
aaa
11/01/10 15:12
Il Totem
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:
int i = null;

Non ha senso.
aaa
11/01/10 18:58
lorenzo
quello che pensavo io, però vedevo su questa pagina:

msdn.microsoft.com/it-it/library/…

che assegna alla var mc il valore null
aaa
12/01/10 13:33
Il Totem
Infatti mc è un tipo reference, poiché di tipo MyClass, che è una classe.

Ti sarebbe potuto sembrare strano qualcosa del genere:
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:
Dim I As Nullable(Of Int32)
I = Nothing

o
Nullable<Int32> I;
I = null;

Nota che non ho usato New.
aaa