1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
// Compiler options: -langversion:experimental
using System;
class PropertyPattern
{
static int Main ()
{
object o = new DateTime (2014, 8, 30);
if (!(o is DateTime { Day is 30 }))
return 1;
if (!(o is DateTime { Month is 8, Day is 30, Year is * }))
return 2;
if (o is X { Field is 30 })
return 3;
object o2 = new X () {
Field = new Y () {
Prop = 'f'
}
};
bool res2 = o2 is X { Field is Y { Prop is 'f' }, Field is Y (4) };
if (!res2)
return 4;
res2 = o2 is X { Field is Y { Prop is 'g' } };
if (res2)
return 5;
object o3 = new X () {
Value = 5
};
if (o3 is X { Value is 6 })
return 6;
if (!(o3 is X { Value is 5 }))
return 7;
object o4 = new X () {
NullableValue = 4
};
bool res3 = o4 is X { NullableValue is (byte) 4 };
if (!res3)
return 8;
Console.WriteLine("ok");
return 0;
}
}
class X
{
public object Field { get; set; }
public object Value { get; set; }
public long? NullableValue { get; set; }
}
class Y
{
public char Prop { get; set; }
public static bool operator is (Y y, out int x)
{
x = 4;
return true;
}
}
|