C++¿¡¼ ±¸Á¶Ã¼¿Í Ŭ·¡½ºÀÇ Â÷ÀÌ´Â ±âº» Á¢±Ù ±ÇÇÑÀÚ Â÷À̹ۿ¡ ¾ø´Ù. Ŭ·¡½º´Â µðÆúÆ®·Î private, ±¸Á¶Ã¼´Â publicÀ» °¡Áø´Ù.
C#µµ C++°ú °°À»±î?
¾Æ´Ï´Ù. µÑÀº ¿ÏÀüÈ÷ ´Ù¸¥´Ù.
< C# ±¸Á¶Ã¼¿Í Ŭ·¡½º Â÷ÀÌÁ¡ >
Ŭ·¡½º´Â ÂüÁ¶ ŸÀÔÀ̸ç Èü¿¡¸¸ »ý¼ºµÊ ±¸Á¶Ã¼´Â °© ŸÀÔÀ¸·Î ½ºÅðú Èü¿¡ »ý¼ºµÈ´Ù. ±¸Á¶Ã¼¾È¿¡¼ Á÷Á¢ Ãʱâȸ¦ ¸øÇÑ´Ù. Ŭ·¡½º ¹è¿À» ¸¸µé¸é ÇÒ´çÀü¿¡´Â null·Î ÃʱâÈ µÈ´Ù. ±¸Á¶Ã¼ ¹è¿À» ¸¸µé¸é ¸ðµç °ªÀÌ ±âº»ÀûÀ¸·Î ÇÒ´çµÈ´Ù. < ±¸Á¶Ã¼´Â °ªÃ³·³ »ý¼º ÇÒ¼ö ÀÖ´Ù >
±¸Á¶Ã¼´Â new¸¦ ÀÌ¿ëÇØ »ý¼º ÇÒ ¼öµµ ÀÖÁö¸¸ ¾Æ·¡¿Í °°ÀÌ °ªÃ³·³ »ý¼ºÇؼ »ç¿ë ÇÒ ¼öµµ ÀÖ´Ù.
À̶§´Â ÈüÀÌ ¾Æ´Ï¶ó ½ºÅÿ¡ »ý¼º µÈ´Ù.
struct People
{
public string name;
public string age;
}
class Test
{
public Test()
{
People p;
p.name = "simpson";
p.age = "20";
Console.WriteLine("Value {0}, {1}", p.name, p.age);
}
}
|
< Ŭ·¡½º¿Í ±¸Á¶Ã¼ÀÇ ¸®ÅÏ°ª Â÷ÀÌÁ¡ >
±¸Á¶Ã¼¸¦ °ª ŸÀÔÀÌ¶ó ¸®ÅÏ °ªÀ» ¹Ù²Ü¼ö ¾ø´Ù. Ŭ·¡½º´Â ÂüÁ¶ ŸÀÔÀÌ¶ó ¸®ÅÏ°ªÀ» º¯°æ ÇÒ ¼ö ÀÖ´Ù.
class Class
{
public int a;
}
struct Struct
{
public int a;
}
namespace struct_vs_class
{
class Program
{
static Class mClass;
static Struct mStruct;
static Class CreateClass()
{
mClass = new Class();
return mClass;
}
static Struct CreateStruct()
{
mStruct = new Struct();
return mStruct;
}
static void Main(string[] args)
{
CreateClass().a = 100;
//CreateStruct().a = 100;
//¿À·ù CS1612: º¯¼ö°¡ ¾Æ´Ï¹Ç·Î 'struct_vs_class.Program.CreateStruct()'ÀÇ ¹Ýȯ °ªÀ» ¼öÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
Struct s = CreateStruct();
s.a = 100;
Console.WriteLine( "Class: " + mClass.a + " Struct: " + mStruct.a);
}
}
}
|
°á°ú :
< Ŭ·¡½º¿Í ±¸Á¶Ã¼ ¹è¿ Â÷ÀÌÁ¡ >
Ŭ·¡½º ¹è¿Àº null·Î ÃʱâÈ µÈ´Ù. ±¸Á¶Ã¼ ¹è¿Àº µðÆúÆ® °ªÀÌ ¸ðµÎ ÇÒ´ç µÈ´Ù.
class Class
{
public int a = 0;
}
struct Struct
{
//public int a = 0; ÃʱâÈ ¸øÇÔ
public int a;
}
namespace struct_vs_class
{
class Program
{
static Class [] mClass = new Class[2];
static Struct [] mStruct = new Struct[2];
static void Main(string[] args)
{
Console.WriteLine( "Class is null: " + (mClass[0]==null) + " Struct: " + mStruct[0]);
}
}
}
|
°á°ú :
Class is null: True Struct: Struct
|
< ¸Þ¸ð¸® Â÷ÀÌ >
ÂüÁ¶ : http://www.dotnetperls.com/struct
Class version
|
|
Size of List:
|
1 object 512 KB
|
Size of internal array:
|
100000 objects 3.8 MB
|
Struct version
|
|
Size of List:
|
1 object 24 bytes
|
Size of internal array:
|
100000 object 4.0 MB
|
¿ÀºêÁ§Æ® ÇÑ °³À϶§´Â ±¸Á¶Ã¼°¡ ¸Þ¸ð¸® ¿ë·®ÀÌ ÀÛÁö¸¸, ¹è¿ÀÏ´ë´Â Ŭ·¡½ºÀÇ ¸Þ¸ð¸® ¿ë·®ÀÌ ´õ ÀÛ´Ù. ±¸Á¶Ã¼°¡ °ª¿¡ ÀÇÇÑ È£ÃâÀ̶ó ¹è¿À϶§ ´õ ¸¹Àº ¿ë·®À» Â÷ÁöÇÑ´Ù.
< ÇÒ´ç ¼Óµµ Â÷ÀÌ >
ÂüÁ¶ : http://www.dotnetperls.com/struct
Class with 8 ints: 2418 ms Struct with 8 ints: 936 ms [faster]
Class with 4 string references: 2184 ms Struct with 4 string references: 795 ms [faster]
10¸¸ ¹Ýº¹À» 1000¸¸ ·çÇÁ·Î ¹Ýº¹ Çؼ ¿ÀºêÁ§Æ®¸¦ »ý¼º ÇßÀ» ¶§ Â÷ÀÌÀÌ´Ù. ±¸Á¶Ã¼°¡ ÈξÀ ºü¸¥´Ù. ÀÌ·¸°Ô ¸¹Àº µ¥ÀÌÅ͸¦ ÇѲ¨¹ø¿¡ »ý¼ºÇÏÁö ¾Ê´Â´Ù¸é ±¸Á¶Ã¼µç Ŭ·¡½ºµç ¹» »ç¿ë ÇÏ´øÁö »ó°üÀÌ ¾øÀ» °ÍÀÌ´Ù.
|