110,529
社区成员
发帖
与我相关
我的任务
分享
enum MyEnum
{
}
class MyClass<T>
{
T value;
public bool EqualTo(T obj)
{
return (T)value == (T)obj; //error
return value == obj; //error
//强制转换成int也不行,用object.Equals的结果又不是我想要的。。。
}
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var m = new MyClass<MyEnum>(MyEnum.b);
var s = m.EqualTo(MyEnum.b);
}
}
enum MyEnum
{
a,
b
}
class MyClass<T> where T : struct
{
T value;
public MyClass(T value) { this.value = value; }
public bool EqualTo(T obj)
{
//return (T)value == (T)obj; //编译错误
//return value == obj; //编译错误
//return (int)value == (int)obj; //编译错误
return obj.Equals(value); //结果对,但有装箱
}
}
}
[/quote]
你限定ICompareable就是了。
int double string等等都实现了它。
class MyClass<T> where T : struct
{
public T Value { get; private set; }
public MyClass(T value)
{
Value = value;
}
public bool EqualTo(T obj)
{
return obj.GetType().IsEnum ? Value.Equals(obj) : false;
}
}
static void Main(string[] args)
{
MyClass<StringComparison> myObj = new MyClass<StringComparison>(StringComparison.CurrentCulture);
Console.WriteLine(myObj.EqualTo(StringComparison.CurrentCultureIgnoreCase));
Console.ReadKey();
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var m = new MyClass<MyEnum>(MyEnum.b);
var s = m.EqualTo(MyEnum.b);
}
}
enum MyEnum
{
a,
b
}
class MyClass<T> where T : struct
{
T value;
public MyClass(T value) { this.value = value; }
public bool EqualTo(T obj)
{
//return (T)value == (T)obj; //编译错误
//return value == obj; //编译错误
//return (int)value == (int)obj; //编译错误
return obj.Equals(value); //结果对,但有装箱
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public enum Myenum
{
one,
two,
three,
}
static void Main(string[] args)
{
Person<Enum> p = new Person<Enum>();
p.value = Myenum.one;
Console.WriteLine(p.EqluasTo(Myenum.one));
Console.ReadKey();
}
}
public class Person<T>where T:class
{
public T value;
public T Value { get { return this.value; } }
public bool EqluasTo(T outher)
{
if (Value.ToString() == outher.ToString())
return true;
return false;
}
}
}