63 lines
1.0 KiB
C#
63 lines
1.0 KiB
C#
|
|
||
|
//
|
||
|
// Lambda expression test, basics.
|
||
|
//
|
||
|
using System;
|
||
|
|
||
|
delegate int IntFunc (int x);
|
||
|
delegate void VoidFunc (int x);
|
||
|
|
||
|
class X {
|
||
|
|
||
|
static IntFunc func, increment;
|
||
|
static VoidFunc nothing;
|
||
|
|
||
|
public static int Main ()
|
||
|
{
|
||
|
int y = 0;
|
||
|
int r;
|
||
|
|
||
|
//
|
||
|
// The following tests body-style lambda
|
||
|
//
|
||
|
increment = (int x) => { return x + 1; };
|
||
|
r = increment (4);
|
||
|
Console.WriteLine ("Should be 5={0}", r);
|
||
|
if (r != 5)
|
||
|
return 1;
|
||
|
|
||
|
//
|
||
|
// This tests the body of a lambda being an expression
|
||
|
//
|
||
|
func = (int x) => x + 1;
|
||
|
r = func (10);
|
||
|
Console.WriteLine ("Should be 11={0}", r);
|
||
|
if (r != 11)
|
||
|
return 2;
|
||
|
|
||
|
//
|
||
|
// The following tests that the body is a statement
|
||
|
//
|
||
|
nothing = (int x) => { y = x; };
|
||
|
nothing (10);
|
||
|
Console.WriteLine ("Should be 10={0}", y);
|
||
|
if (y != 10)
|
||
|
return 3;
|
||
|
|
||
|
nothing = (int x) => { new X (x); };
|
||
|
nothing (314);
|
||
|
if (instantiated_value != 314)
|
||
|
return 4;
|
||
|
|
||
|
Console.WriteLine ("All tests pass");
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static int instantiated_value;
|
||
|
|
||
|
X (int v)
|
||
|
{
|
||
|
instantiated_value = v;
|
||
|
}
|
||
|
}
|