如何在 C# 中短路'or'赋值?



在JavaScript中,我们可以像这样OR两个对象/属性:

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

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

我们可以OR C# 类对象吗?

SpecificClass1 sc1 = new SpecificClass1();
SpecificClass2 sc2 = new SpecificClass2();
sc2 = null;
var temp = sc1 || sc2;

编辑:-

使用??对我不起作用

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();
        }
    }
}

错误:-

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

空合并运算符 ( ?? ) 将为您执行此操作:

var temp = sc1 ?? sc2;

如果sc1 nulltemp将被sc2

如果您覆盖该类的运算符,则可以执行此操作它会完全按照你想要的去做。

s. 这里是怎么做:http://msdn.microsoft.com/en-us/library/aa288467(v=vs.71).aspx

相关内容

  • 没有找到相关文章

最新更新