gpt4 book ai didi

c# - C# 中的成员传递?

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:59 25 4
gpt4 key购买 nike

Go 有一个 nice feature其中嵌套结构的成员可通过其父结构自动访问:

// Server exposes all the methods that Logger has
type Server struct {
Host string
Port int
*log.Logger
}

// initialize the embedded type the usual way
server := &Server{"localhost", 80, log.New(...)}

// methods implemented on the embedded struct are passed through
server.Log(...) // calls server.Logger.Log(...)

// the field name of the embedded type is its type name (in this case Logger)
var logger *log.Logger = server.Logger

在 C# 中是否也可以这样做,例如使用 implicit 强制转换?

struct B
{
public int x;
}

struct A
{
public B b;
}

var a = new A();

a.b.x = 1; // How it usually works
a.x = 1; // How Go works, assuming x is unambiguous

最佳答案

C#中没有这样的概念。你可以自己添加这样的属性,但是对于其他看到你的代码的开发者来说会很困惑。

struct B
{
public int x;
}

struct A
{
public B b;
public int x {
get { return b.x; }
set { b.x = value; }
}
}

}

var a = new A();

a.b.x = 1;
a.x = 1;

但是,如果您切换到类而不是结构 - 您可以使用 inheritance 获得类似的行为:

class B
{
public int x;
}

class A : B
{
}

var a = new A();
a.x = 1;

关于c# - C# 中的成员传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42022421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com