C
int Test(int* a)
{
if(a != null) *a = 5; // optionaalinen output-parametri
return 10;
}
C#
- EI VOI KÄYTTÄÄ REF EIKÄ OUT, koska parametrin on oltava optionaalinen, ja molemmat REF sekä OUT vaativat että parametri on aina non-null.
int Test(int* a)
{
if(a != null) *a = 5; // optionaalinen output-parametri
return 10;
}
C#
- EI VOI KÄYTTÄÄ REF EIKÄ OUT, koska parametrin on oltava optionaalinen, ja molemmat REF sekä OUT vaativat että parametri on aina non-null.
Vastaukset 5
Vanhimmat
Mihin tuollaista edes tarvitsee? Mikset vain palauta metodista arvoa?
Jos et ole koskaan käyttänyt C :aa niin ei kannata edes yrittää vastata. "Mihin tuollaista tarvitsee", voi v....
No nyt on kyse C# kielestä? Miksi koitat koodata C# kielellä C kun ne ovat eri kieliä?
C#
unsafe int test(int* a)
{
if (a != null) *a = 5;
return 10;
}
Ja ongelma oli?
"if(a != null)"
Ja tässä sulla ei tietenkään ole mitään varmuutta, että a on alustettu oikein eli joko null:ks tai osoittaa oikeeseen muistipaikkaan ennen metodin kutsua:
int* access_violation; // sisältää satunnaisen osoitteen...
test(access_violation); // voila!!
c#:ssä:
http://msdn.microsoft.com/en-us/library/dd264739.aspx