假设我有一个类A,类B作为属性,我如何在分配A的实例时返回A.B。例如:
public class A
{
public B b {get; set;}
}
object x = A //Here I want to return A.b without casting it.
本质上是重载'='操作符或为类本身使用get语句。我在这里能做什么?
似乎是隐式操作符重载的工作,但我很少使用它,因为它很容易导致混淆:
public static class Program
{
static void Main(string[] args)
{
var a = new A();
B b = a;
Console.WriteLine($"Name of b in a: {a.SomeB.Name}");
Console.WriteLine($"Name of b: {b.Name}");
}
}
public class A
{
public A()
{
SomeB = new B { Name = Guid.NewGuid().ToString() };
}
public B SomeB { get; set; }
public static implicit operator B(A a) => a.SomeB;
}
public class B
{
public string Name { get; set; }
}
注意你的例子:
object x = A; // Here I want to return A.b without casting it.
永远不会工作,因为所需的类型必须在某处声明,而object
并不是真正的最佳候选。