What's the difference between #1 and #2:
Code 1 (compiled ok):
byte[] GetSomeBytes()
{
return (byte[])this.Invoke((MethodInvoker)delegate
{
GetBytes();
});
}
byte[] GetBytes()
{
GetBytesForm gbf = new GetBytesForm();
if(gbf.ShowDialog() == DialogResult.OK)
{
return gbf.Bytes;
}
else
return null;
}
Code 2 (didn't complied ok)
int GetCount()
{
return (int)this.Invoke((MethodInvoker)delegate
{
return 3;
});
}
Code #2 gives me Since 'System.Windows.Forms.MethodInvoker' returns void, a return keyword must not be followed by an object expression.
How can I fix it ? And why (do) complier think code #1 is right ?