C#学习教程:如何在枚举中添加.Equals()扩展名?分享


如何在枚举中添加.Equals()扩展名?

我目前有以下代码:

public enum FieldType { Int, Year, String, DateTime } public enum DataType { Int, String, DateTime } 

我想为每个方法都有一个扩展方法,这样我就可以这样做:

 FieldType fType = FieldType.Year; DataType dType = DataType.Int; fType.Equals(dType); //If fType is an Int/Year, and dType is an Int it should return true dType.Equals(fType); //If dType is an Int, and fType is an Int/Year it should be true 

有没有办法创建.Equals扩展,这样就可以了?

正如乔恩所说,重用框架的方法名称并不是一个好主意。

但你可以轻松做到这样的事情:

 public static class Extensions { public static bool IsEquivalentTo(this FieldType field, DataType data) { return data.ToString() == field.ToString(); } public static bool IsEquivalentTo(this DataType data, FieldType field) { return data.ToString() == field.ToString(); } } 

甚至更好:

 public static class Extensions { public static bool IsEquivalentTo(this Enum e1, Enum e2) { return e1.ToString() == e2.ToString(); } } 

那你可以写:

 public static class Extensions { public static bool Equals(this FieldType field, DataType data) { return data.Equals(field); } public static bool Equals(this DataType data, FieldType field) { // Insert logic here } } 

我不确定我会不会 …因为你以不一致的方式重载object.Equals 。 所以如果有人写道:

 object field = FieldType.Int; Console.WriteLine(field.Equals(DataType.Int)); 

将打印False,因为它将使用object.Equals而不是扩展方法。

上述就是C#学习教程:如何在枚举中添加.Equals()扩展名?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031814.html

发表评论

邮箱地址不会被公开。 必填项已用*标注