Tag: 运算符重载

将我的类转换为Int64,Double等

相关问题: 不使用点运算符访问Class属性 我创建了一个名为MyDouble的类,如下所示 class MyDouble { double value; //overloaded operators and methods } 我可以在MyDouble上进行各种操作。 例子: MyDouble a = 5.0; a += 3.0; …etc 但是,这仍然会引发错误 MyDouble a = 5.0; long b = (Int64)a; //error long b = (int64)a.value; //works 如何定义它以使像(Int64)a这样的操作自动转换为(Int64)a.value ? 我不希望用户永远不必担心value属性的存在。

运算符重载和inheritancec#

假设我有一个父类和子类,如下所示 家长class: class Parent { public string _First; public string _Last; public override bool Equals(object obj) { if (ReferenceEquals(obj, null)) return false; else if (ReferenceEquals(obj, this)) return true; else if (obj is Parent == false) return false; else return this.Equals(obj as Parent) & base.Equals(obj); } public override int GetHashCode() { unchecked { return this._First.GetHashCode() ^ […]

使用来自C#的重载VB.NET Not运算符

我有一个VB类重载Not运算符; 这似乎不适用于C#应用程序。 Public Shared Operator Not(item As MyClass) As Boolean Return False End Operator 我可以在VB.NET中使用它: If Not MyClassInstance Then ‘ Do something End If 我试图在C#应用程序中使用它,但它不会构建。 if (!MyClassInstance) { // do something } 我收到了错误 接线员’!’ 不能应用于’MyClass’类型的操作数 谁能告诉我我失踪了什么?

重载真假运算符有什么作用?

我只是C#的初学者,但我正在努力学习一切。 但是,我坚持重载真假; 这是什么意思? 请(尽量)尽可能地给出答复(这样即使是’13’岁的人也能理解逻辑)。 (请确保尽可能让它变得可以理解,谢谢)。 如果可以的话,请解释如果coord改变为其他内容会产生什么结果(例如:(3,5))。 我在这里预先制作了代码:(你能解释改变坐标的不同输出吗)信息: – 程序是一个控制台应用程序 – C#我创建了一个名为Coord的类(代表坐标)。 内部课程: class Coord { private int _x, _y; public Coord(int x, int y) { _x = x; _y = y; } public int x { get { return _x; } set { _x = value; } } public int y { get { return […]

在不使用点运算符的情况下访问Class属性

使用Double类型调用时,我需要重载一些运算符。 为了实现这一点,我正在创建一个inheritance自Double的类MyDouble。 MyDouble看起来有点像这样 class MyDouble : Double { Double value; // operator overloads go here } 我想从用户中抽象出value属性,以便它可以像Double一样使用。 基本上我希望用户能够这样做: MyDouble a = 5; //a.value gets assigned 5 Console.WriteLine(a); //prints a.value 我不希望用户必须专门定位value属性。 这可能吗? 我该怎么办呢?

运算符重载和优先级

在C#中,您可以重载运算符,例如+和* 。 在他们的数学解释中,这些算子具有明确的优先顺序。 重载时是否保留此顺序,是否以某种确定性方式更改,或者您是否也可以重载优先顺序?

C#字符串运算符重载

G’Day Mates – 重载字符串运算符, =的正确方法(不包括是否可取的参数)是什么? 我已经尝试了五种方式来到星期天,我得到了各种各样的错误 – 我最好的镜头是声明一个部分类并从那里超载,但它不会因某些原因而起作用。 namespace System { public partial class String { public static Boolean operator <(String a, String b) { return a.CompareTo(b) (String a, String b) { return a.CompareTo(b) > 0; } } }

C#postfix和前缀增量/减量重载差异

大多数消息来源说,在c#中重载++和 – 运算符导致一次性重载postfix和prefix。 但看起来他们的行为仍然不同。 class Counter { public Counter(int v = 0) { this.v = v; } public Counter(Counter c) { v = cv; } public int GetValue() { return v; } public static Counter operator ++(Counter c) { c.v++; return new Counter(c); } private int v; } class Program { public static void Main() […]

操作员如何重载真假工作?

您可以重载运算符true和false我查看了示例并找到了这个http://msdn.microsoft.com/en-us/library/aa691312%28v=vs.71%29.aspx 我完全不明白他们是如何工作的。 我知道如果我写if(obj)并且true返回true则执行if。 什么是错误的回报并不重要。 但假工作怎么样? 在该文档中,建议&&运算符使用它。 我写了下面的代码。 我不知道如何让&&编译。 || 也给了我一个编译错误。 我怎么会被称为虚假? 以及如何获得&&和|| 上class? var ts= new MyTimeSpan();// ts += ts; if (ts){ Console.WriteLine(“Is true”); } else { Console.WriteLine(“not true”); } //Console.WriteLine(ts && ts ? “Y” : “N”); class MyTimeSpan { public static MyTimeSpan operator +(MyTimeSpan t, MyTimeSpan t2) { return new MyTimeSpan(); } public static […]

为什么我不能定义隐式和显式运算符?

为什么我不能像这样定义隐式和显式运算符? public class C { public static implicit operator string(C c) { return “implicit”; } public static explicit operator string(C c) { return “explicit”; } } 你可以这样做虽然:) class Program { public class A { } public class B { public static implicit operator A(B b) { Console.WriteLine(“implicit”); return new A(); } } public class C […]