I have a doubt in scope of varibles inside anonymous functions in C#.
Consider the program below:
delegate void OtherDel(int x);
public static void Main()
{
OtherDel del2;
{
int y = 4;
del2 = delegate
{
Console.WriteLine("{0}", y);//Is y out of scope
};
}
del2();
}
My VS2008 IDE gives the following errors:
[Practice is a class inside namespace Practice]
1.error CS1643: Not all code paths return a value in anonymous method of type ‘Practice.Practice.OtherDel’
2.error CS1593: Delegate ‘OtherDel’ does not take ‘0’ arguments.
It is told in a book: Illustrated C# 2008(Page 373) that the int variable y is inside the scope of del2 definition.
Then why these errors.
Two problem;
del2()invoke, but it (OtherDel) takes an integer that you don’t use – you still need to supply it, though (anonymous methods silently let you not declare the params if you don’t use them – they still exist, though – your method is essentially the same asdel2 = delegate(int notUsed) {...})OtherDel) must return anint– your method doesn’tThe scoping is fine.