How is the new Scene object meant to be used?

Since “Scene” is not nullable, I cannot do this:

    public static Scene GetSceneWithTaggedObject(string tag)
        for (int i = 0; i < SceneManager.sceneCount; i++)
            Scene scene = SceneManager.GetSceneAt(i);
            foreach(GameObject go in scene.GetRootGameObjects()){
               if(go.tag == tag){
                   return scene;

        Debug.LogError("Could not find the global scene.");
        return null; // Cannot do this with Unity.

My question is simply: what am I supposed to return when I have a non-nullable type, such as the Scene, but still want to return something that pretty much represents “null” or “didn’t find”?


Unity - Scripting API: SceneManager

In C# you can make non-nullable types nullable by declaring them with a ? after the type, for example Scene? theScene

By changing the method definition to

public static Scene? GetSceneWithTaggedObject(string tag){...}

you will be able to return null. Just make sure the variable you’re catching the returned value with is also declared as Scene?