-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Open
Labels
EnhancementAreas for improvementAreas for improvement
Description
Are there any plans to add support for for null-coalescing assignment(??=, C# 8).
Right now ILSpy produces correct code, but it's huge and not very readable
eg:
orig:
public void test2()
{
List<int> nums = null;
int? i = null;
// need C# 8.0+
nums ??= new List<int>();
nums.Add(i ??= 12);
nums.Add(i ??= 122);
Console.WriteLine(string.Join(" ", nums));
Console.WriteLine(i);
}
Decompiled as:
public void test2()
{
List<int> nums = null;
int? i = null;
if (nums == null)
{
nums = new List<int>();
}
List<int> list = nums;
int valueOrDefault = i.GetValueOrDefault();
int item;
if (!i.HasValue)
{
valueOrDefault = 12;
i = valueOrDefault;
item = valueOrDefault;
}
else
{
item = valueOrDefault;
}
list.Add(item);
List<int> list2 = nums;
valueOrDefault = i.GetValueOrDefault();
int item2;
if (!i.HasValue)
{
valueOrDefault = 122;
i = valueOrDefault;
item2 = valueOrDefault;
}
else
{
item2 = valueOrDefault;
}
list2.Add(item2);
Console.WriteLine(string.Join(" ", nums));
Console.WriteLine(i);
}
exyi
Metadata
Metadata
Assignees
Labels
EnhancementAreas for improvementAreas for improvement