草庐IT

Operators

全部标签

c# - 结构中需要重写什么以确保相等性正常运行?

正如标题所说:我需要覆盖==运算符吗?.Equals()方法怎么样?有什么我想念的吗? 最佳答案 来自msdn的例子publicstructComplex{doublere,im;publicoverrideboolEquals(Objectobj){returnobjisComplexc&&this==c;}publicoverrideintGetHashCode(){returnre.GetHashCode()^im.GetHashCode();}publicstaticbooloperator==(Complexx,Compl

c# - 结构中需要重写什么以确保相等性正常运行?

正如标题所说:我需要覆盖==运算符吗?.Equals()方法怎么样?有什么我想念的吗? 最佳答案 来自msdn的例子publicstructComplex{doublere,im;publicoverrideboolEquals(Objectobj){returnobjisComplexc&&this==c;}publicoverrideintGetHashCode(){returnre.GetHashCode()^im.GetHashCode();}publicstaticbooloperator==(Complexx,Compl

c# - 空合并运算符是否有 "opposite"? (……用任何语言?)

null合并大致转换为返回x,除非它为null,在这种情况下返回y我经常需要如果x为null则返回null,否则返回x.y我可以使用returnx==null吗?空:x.y;不错,但是中间的null总是困扰着我——它似乎是多余的。我更喜欢像returnx::x.y;这样的东西,其中::之后的内容只有在它之前的内容不是null时才会被评估.我认为这几乎与空合并相反,有点混合了简洁的内联空检查,但我[几乎]确定C#中没有这样的运算符。是否有其他语言有这样的运算符?如果有,它叫什么?(我知道我可以用C#为它写一个方法;我使用returnNullOrValue.of(x,()=>x.y);,但

c# - 空合并运算符是否有 "opposite"? (……用任何语言?)

null合并大致转换为返回x,除非它为null,在这种情况下返回y我经常需要如果x为null则返回null,否则返回x.y我可以使用returnx==null吗?空:x.y;不错,但是中间的null总是困扰着我——它似乎是多余的。我更喜欢像returnx::x.y;这样的东西,其中::之后的内容只有在它之前的内容不是null时才会被评估.我认为这几乎与空合并相反,有点混合了简洁的内联空检查,但我[几乎]确定C#中没有这样的运算符。是否有其他语言有这样的运算符?如果有,它叫什么?(我知道我可以用C#为它写一个方法;我使用returnNullOrValue.of(x,()=>x.y);,但

c# - 为什么递增 Nullable<int> 不会抛出异常?

你能解释一下,为什么Console.WriteLine写空行(Console.WriteLine(null)给我编译错误)以及为什么没有NullReferenceException(甚至a+=1不应该提高它)?int?a=null;a++;//WhythereisnotNullReferenceException?Console.WriteLine(a);//Emptyline 最佳答案 您正在观察提升运算符的效果。来自C#5规范的第7.3.7节:Liftedoperatorspermitpredefinedanduser-defi

c# - 为什么递增 Nullable<int> 不会抛出异常?

你能解释一下,为什么Console.WriteLine写空行(Console.WriteLine(null)给我编译错误)以及为什么没有NullReferenceException(甚至a+=1不应该提高它)?int?a=null;a++;//WhythereisnotNullReferenceException?Console.WriteLine(a);//Emptyline 最佳答案 您正在观察提升运算符的效果。来自C#5规范的第7.3.7节:Liftedoperatorspermitpredefinedanduser-defi

c# - 两个左尖括号 "<<"在 C# 中是什么意思?

基本上就是题目中的问题。我正在查看MVC2源代码:[Flags]publicenumHttpVerbs{Get=1我很好奇双左角括号是什么 最佳答案 当你写作时1您将位组合000000001左移n次,从而将n放入2的指数中:2^n所以1真的是1024对于包含5个项目的列表,您的for将循环32次。 关于c#-两个左尖括号" https://stackoverflow.com/questions/21428549/

c# - 两个左尖括号 "<<"在 C# 中是什么意思?

基本上就是题目中的问题。我正在查看MVC2源代码:[Flags]publicenumHttpVerbs{Get=1我很好奇双左角括号是什么 最佳答案 当你写作时1您将位组合000000001左移n次,从而将n放入2的指数中:2^n所以1真的是1024对于包含5个项目的列表,您的for将循环32次。 关于c#-两个左尖括号" https://stackoverflow.com/questions/21428549/

c# - 静态隐式运算符

我最近发现这段代码:publicstaticimplicitoperatorXElement(XmlBasexmlBase){returnxmlBase.Xml;}staticimplicitoperator是什么意思? 最佳答案 这是一个conversionoperator.这意味着您可以编写以下代码:XmlBasemyBase=newXmlBase();XElementmyElement=myBase;而且编译器不会提示!在运行时,将执行转换运算符-将myBase作为参数传入,并返回有效的XElement作为结果。这是您作为开发

c# - 静态隐式运算符

我最近发现这段代码:publicstaticimplicitoperatorXElement(XmlBasexmlBase){returnxmlBase.Xml;}staticimplicitoperator是什么意思? 最佳答案 这是一个conversionoperator.这意味着您可以编写以下代码:XmlBasemyBase=newXmlBase();XElementmyElement=myBase;而且编译器不会提示!在运行时,将执行转换运算符-将myBase作为参数传入,并返回有效的XElement作为结果。这是您作为开发