linux-packaging-mono/mcs/tests/test-null-operator-04.cs
Xamarin Public Jenkins (auto-signing) e79aa3c0ed Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
2016-08-03 10:59:49 +00:00

55 lines
633 B
C#

using System;
interface IFoo<T>
{
T Call ();
}
class C1
{
public void Foo<T> (IFoo<T> t) where T : class
{
t?.Call ();
var x = t?.Call ();
}
public void Foo2<T> (IFoo<T> t)
{
t?.Call ();
}
}
class C2<T> where T : class
{
C2<T> i;
T field;
public void Foo ()
{
var x = i?.field;
}
}
class Program
{
static void Test<T>(Func<T> func) where T : struct
{
var r = func?.Invoke ();
}
static void Test2<T>(Func<T> func)
{
func?.Invoke ();
}
static void Main()
{
new C1 ().Foo<Program> (null);
new C1 ().Foo2<Program> (null);
new C2<string> ().Foo ();
Test (() => 1);
Test (() => 2);
}
}