Search Issue Tracker
By Design
Votes
6
Found in
2017.1.0f3
Issue ID
930031
Regression
No
[docfix] .NET4.6 - C#6 - Null propagation operator does not work if variable is null
Reproduction steps:
1. Open the attached project
2. Open the scene
3. Press play
Expected: string "GO name: NAME IS NULL" is printed to debug console
Actual: UnassignedReferenceException is thrown
It works if the variable before Null propagation operator is not null though.
Reproduced on: 2017.1.0a6, 2017.1.0b2, 2017.1.0f3, 2017.2.0b2
Comments (2)
-
Rennan24
Oct 12, 2017 16:16
Yeah I kinda wish they would remove the fake null for UnityEngine.Objects, but then again it would break a lot of projects that do if( gameObject ) instead of if( gameObject != null )... but I don't use if( gameObject ) so my projects wouldn't break! :D
-
BlackPete
Jul 18, 2017 22:45
I have a feeling that Unity will say that this is "as designed" due to the use of a fake null for UnityEngine.Object types.
However, this violates the principle of least surprise, and this breaks the null propagation operator, which should be a valid C# 6 operator.
At the very least, the exception should be removed.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- “Remove Unused Overrides” available on not loaded Scene and throws “ArgumentException: The scene is not loaded” warning
- Adaptive Probe Volume occlusion edge is calculated incorrectly when viewing probes near geometry edges
- Sampling a texture using an HLSL file throws shader errors and the code does not compile
- "Graphics.CopyTexture called with null source texture" error when Base Camera of an Overlay Camera is removed with DX11 Graphics API and Compatibility Mode enabled
- WebGL sends wrong value with large numbers when SendMessage function is used
Resolution Note (2018.3.X):
Updated the Docs about our take on null propergation and null conditional operators, for UnityEngine.Object and friends