2014-02-24 67 views
0

在JavaScript中我们可以OR两个对象/属性是这样的: -如何在C#中短路或分配?

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

     } 
    } 
} 

错误: -

​​

+0

编译器不能推断出你想要'temp'变量的类型(因为'sc1'和'sc2'是不同类型的)。你必须声明你的'temp'变量为'BaseClass temp = sc1 ?? SC2;'。 – khellang

回答

-2

如果覆盖该类的操作符,那么您可以执行它 ,它将按照您的要求进行操作。

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

+0

这是为什么被拒绝? – mindfxxxedCoder

+0

啊,好的,它是不同的类型......那么我的建议只有在它们有一个公共基类并且运算符重载在那里时才会起作用......如果这只是简单的NULL检查,那么问题就不会很好地形成。 – mindfxxxedCoder

+0

问题形成得不好吗?他问C#中有没有什么行为(或多或少)与JavaScript的OR运算符相同,而不是简单的'null'检查,或者是否可以实现某些功能以使其工作。 – khellang