Tag: 类型等价

我应该重载==运营商吗?

==运算符如何在C#中真正起作用? 如果它用于比较A类的对象,它会尝试匹配所有A的属性,还是会寻找指向同一内存位置的指针(或者其他东西)? 让我们创建一个假设的例子。 我正在编写一个使用Twitter API的应用程序,它有一个Tweet类,它具有单个推文的所有属性:文本,发送者,日期和时间,源等。如果我想比较类Tweet的对象是否等价,我可以使用: Tweet a, b; if (a == b) { //do something… } 那会检查 a和b之间Tweet类的所有属性的等价吗? 如果没有, 那么正确的方法是重载==运算符以明确检查所有字段的等价性吗? 更新:从前两个答案,我是正确的假设: 如果没有为类重载==运算符或Equals方法,则使用对象类的==运算符。 对象类的==运算符检查内存位置是否相等。 我必须重载==运算符或Equals方法来完成此任务。 在重载中,我必须手动检查属性的等价性,所以没有办法半自动地,例如,在循环中 ,对吧? 更新#2: Yuriy发表评论说,可以使用reflection检查==运算符中属性的等价性。 如何才能做到这一点? 你能给我一些示例代码吗? 谢谢!

C#:与OracleDbType的Oracle数据类型等价

情况: 我在C#中创建一个应用程序,它使用Oracle.DataAccess.Client(11g)在存储过程的Oracle数据库上执行某些操作。 我知道有一个枚举(OracleDbType)包含Oracle数据类型,但我不确定哪一个用于某些类型。 问题: OracleDbType枚举中每个枚举类型的等效Oracle PL / SQL数据类型是什么? 整数有三种类型 OracleDbType中的(Int16,Int32,Int64)…如何知道使用哪一个或者是全部 假设工作?