181b81b4a4
Former-commit-id: cf92446697332992ec36726e78eb8703e1f259d7
76 lines
1.1 KiB
C#
76 lines
1.1 KiB
C#
// 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;
|
|
}
|
|
}
|