You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
55
mcs/tests/test-null-operator-04.cs
Normal file
55
mcs/tests/test-null-operator-04.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user