2010-07-21 86 views
4

struct是C#中的一個值類型。當我們將struct分配給另一個結構變量時,它將複製這些值。如果struct包含另一個struct,那該怎麼辦?它會自動複製內部struct的值?拷貝含有另一個結構的struct

回答

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

是的。那是對的。