C#中是否可以绑定两个不同类但具有相似属性的对象?
例如:
class Program
{
static void Main(string[] args)
{
test t = new test();
test2 t2 = new test2();
}
}
public class test
{
public int Number { get; set; }
}
public class test2
{
public int Number { get; set; }
}
那么可以说t = t2
某些人吗?
答案 0 :(得分:2)
如果你不关心使用什么接口的实现,你可以让两个类都实现一个接口。
例如:
class Program
{
static void Main(string[] args)
{
INumber t = new test();
INumber t2 = new test2();
}
}
public class test : INumber
{
public int Number { get; set; }
}
public class test2 : INumber
{
public int Number { get; set; }
}
public interface INumber
{
int Number { get; set; }
}
接口是一种契约,它提供了实现类必须定义的属性和方法的定义。您可以在interfaces here上阅读更多内容。
当您的类实现共享接口时,您可以隐式地将一种类型转换为另一种类型,例如上面的示例。
答案 1 :(得分:0)
如果没有额外的代码,不能,你不能这样做。
即使它们“相似”,它们也被编译器视为完全不同的类型,并且不能相互分配。
现在,您可以在一个(或两个)上包含一个implicit
运算符,以便在两者之间进行隐式转换。
public class test
{
public static implicit operator test(test2 t)
{
return new test(tt.Number);
}
public static implicit operator test2(test t)
{
return new test2(t.Number);
}
public int Number { get; set; }
}
但这与您支持该语法的距离非常接近。