Search code examples
c#javascriptor-operator

How do I short circuit 'or' assignment in C#?


In JavaScript we can OR two objects/properties like this:-

var myURL = window.URL || window.webkitURL;

also

function doKey(e) {
    var evt = e || window.event; // compliant with ie6      
    //Code
}

Can we OR C# class objects?

SpecificClass1 sc1 = new SpecificClass1();
SpecificClass2 sc2 = new SpecificClass2();
sc2 = null;

var temp = sc1 || sc2;

Edit:-

Not working for me using ??

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MultipleCast
{
    class Program
    {

        public class BaseClass { 
        }
        public class SpecificClass1 : BaseClass
        {
            public string SpecificMethod1()
            {
                return "SpecificMethod1";
            }

        }
        public class SpecificClass2 : BaseClass
        {
            public string SpecificMethod2()
            {
                return "SpecificMethod2";
            }
        }
        public class SpecificClass3 : BaseClass
        {
            public string SpecificMethod3()
            {
                return "SpecificMethod3";
            }
        }

        static void Main(string[] args)
        {

            SpecificClass1 sc1 = new SpecificClass1();
            SpecificClass2 sc2 = new SpecificClass2();
            sc1 = null;

            var temp = sc1 ?? sc2;

            Console.WriteLine(temp);

            Console.Read();

        }
    }
}

Error:-

Operator '??' cannot be applied to operands of type 'MultipleCast.Program.SpecificClass1' and 'MultipleCast.Program.SpecificClass2'


Solution

  • The null-coalescing operator (??) will do this for you:

    var temp = sc1 ?? sc2;
    

    If sc1 is null, temp will be sc2.