struct
是C#中的值类型。当我们将struct
分配给另一个结构变量时,它将复制值。如果struct
包含另一个struct
怎么样?它会自动复制内部struct
?
答案 0 :(得分:9)
是的,它会。这是一个展示它的实例:
struct Foo
{
public int X;
public Bar B;
}
struct Bar
{
public int Y;
}
public class Program
{
static void Main(string[] args)
{
Foo foo;
foo.X = 1;
foo.B.Y = 2;
// Show that both values are copied.
Foo foo2 = foo;
Console.WriteLine(foo2.X); // Prints 1
Console.WriteLine(foo2.B.Y); // Prints 2
// Show that modifying the copy doesn't change the original.
foo2.B.Y = 3;
Console.WriteLine(foo.B.Y); // Prints 2
Console.WriteLine(foo2.B.Y); // Prints 3
}
}
如果该结构包含另一个结构怎么样?
是。一般来说,虽然制作这样复杂的结构可能是一个坏主意 - 它们通常应该只包含一些简单的值。如果你在结构体内部的结构中有结构,你可能需要考虑引用类型是否更合适。
答案 1 :(得分:1)
是。这是对的。