lecture Home > ASP.NET 2.0 > Taeyo.NET - ASP.NET 2.0

Taeyo.NET - ASP.NET 2.0

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2008³â 03¿ù 14ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2008³â 03¿ù 14ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : kobukii(±è °æ±Õ)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÒ C# 3.5ÀÇ »õ ±â´É : ŸÀÔ À¯Ãß(var Ű¿öµå)

°­Á Àü Å¿ÀÀÇ Àâ´ã>

À̹ø °­Á´ Å¿À »çÀÌÆ®ÀÇ ¸â¹öÀÌÀÚ, Microsoft MVPÀÎ ±è °æ±Õ´ÔÀÌ Á¦°øÇÏ´Â C# 3.0¿¡ °üÇÑ À̾߱âÀÔ´Ï´Ù. ASP.NET°ú C#Àº ¶¿·¡¾ß ¶¿ ¼ö ¾ø´Â °ü°èÀ̰í, ¶ÇÇÑ ASP.NET 3.5ÀÇ ´Ù¾çÇÑ ±â´ÉµéÀº C# 3.0¿¡ Ãß°¡µÈ ´Ù¾çÇÑ ±â´Éµé(À͸í ŸÀÔ, ŸÀÔ À¯Ãß, ¶÷´Ù Ç¥Çö½Ä µî)À» ±ä¹ÐÇÏ°Ô »ç¿ëÇϰí ÀÖÀ¸¹Ç·Î ÀÌ¿¡ ´ëÇØ ÀÌÇØ¸¦ Çϰí ÀÖÀ¸¸é ¸¹Àº µµ¿òÀÌ µË´Ï´Ù.

ÇØ¼­, ÀÌÀü °­Á¿¡ °£·«ÇÏ°Ô ¿Ã¶ó¿Ô´ø ÀÌ °¢°¢ÀÇ »õ·Î¿î ±â´ÉµéÀ» Á¶±Ý ´õ ±¸Ã¼ÀûÀ̰í ÀÌÇØÇϱ⠽±°Ô Ç®¾î´Þ¶ó°í °æ±Õ´Ô¿¡°Ô ¿äûÀ» µå·È°í, ÈçÄèÈ÷ Çã¶ôÇÏ¿© °­Á°¡ ¿¬ÀçµÉ ¿¹Á¤ÀÔ´Ï´Ù. LINQ¸¦ ÀÌÇØÇÔ¿¡ À־µµ, ASP.NET MVC¸¦ ÀÌÇØÇÔ¿¡ À־µµ »çÀü Áö½ÄÀ¸·Î ÇÊ¿äÇÑ ÀÌ ³»¿ëÀ» ²À ¼÷ÁöÇÏ½Ã±æ ±ÇÇØµå·Á º¾´Ï´Ù.~


C# 3.0ÀÇ »õ·Î¿î ±â´É(part1: varŰ¿öµå¸¦ »ç¿ëÇÑ Å¸ÀÔÀ¯Ãß)

C#3.0ÀÌ µîÀå Çϸ鼭 ¿©·¯ °¡Áö »õ·Î¿î ±â´ÉÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù. ŸÀÔÀ¯Ãß, À͸íŸÀÔ, ¶÷´Ù Ç¥Çö½Ä, °³Ã¼/Ä÷º¼Ç ÃʱâÈ­, Nullable ŸÀÔ, È®Àå ¸Þ¼­µå, Äõ¸® Ű¿öµå, ÀÚµ¿À¸·Î ±¸ÇöµÈ ¼Ó¼º(Automatic Property, ºÎºÐ ¸Å¼­µå(partial method) µîµî »ó´çÈ÷ ¸¹Àº »õ·Î¿î ±â´ÉµéÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù. ÀÌ ±â´É Áß ´ëºÎºÐÀÇ ±â´ÉÀº LINQÀÇ ±â¹ÝÀÌ µÇ¸ç LINQ¸¦ ¹è¿ì±â ÀÌÀü¿¡ ¸ÕÀú ÇнÀÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

À̹ø °­Á¸¦ ½ÃÀÛÀ¸·Î ¾Õ¿¡¼­ ¾ð±ÞÇÑ »õ·Î¿î ±â´É Áß LINQÀÇ ±â¹ÝÀÌ µÇ´Â »õ·Î¿î ±â´Éµé¿¡ ´ëÇØ °­Á¸¦ ¿¬Àç ÇÏ·Á°í ÇÕ´Ï´Ù. ¾ðÁ¦ °­Á°¡ ¸¶¹«¸® µÉÁö È®½ÇÇÏÁö´Â ¾ÊÁö¸¸ ÃÖ´ëÇÑ ÁÖ±âÀûÀ¸·Î °­Á¸¦ ¿¬ÀçÇϰí ÃÖ´ëÇÑ ºü¸¥ ½Ã°£ ¾È¿¡ ¸¶¹«¸® Çϵµ·Ï ³ë·ÂÇϰڽÀ´Ï´Ù.

C# 3.0ºÎÅÍ Áö¿ª º¯¼öÀÇ Å¸ÀÔÀ» ¹Ýµå½Ã ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇØÁÙ ÇÊ¿ä ¾øÀÌ varŰ¿öµå¸¦ »ç¿ëÇÏ¿© ÄÄÆÄÀÏ·¯°¡ ŸÀÔÀ» À¯ÃßÇÒ ¼ö ÀÖµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â µÚ¿¡¼­ ¹è¿ì°Ô µÉ ¸í½ÃÀûÀ¸·Î ŸÀÔÀ» ÁöÁ¤ÇÏÁö ¾Ê´Â À͸í ŸÀÔÀ̳ª °¡µ¶¼ºÀÌ ¶³¾îÁö´Â ÁßøµÈ Á¦³×¸¯(¿¹: IEnumerable<IEnumerable<Product>>) °ú °°ÀÌ Æ¯¼öÇÑ °æ¿ì¿¡ varŰ¿öµå¸¦ »ç¿ëÇÏ¿© Á»´õ °£´ÜÇÏ°Ô Å¸ÀÔÀ» Ç¥ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.
´Ù¸¥ °³¹ßÀÚ°¡ Äڵ带 º¸¾ÒÀ» ¶§ ÀÌÇØ ÇÒ ¼ö ÀÖ´Â ¼öÁØÀ¸·Î ÀÛ¼ºÀÌ µÇ¸é varŰ¿öµå¸¦ ÅëÇÑ Å¸ÀÔ À¯Ãß´Â Á»´õ °£°áÇÑ Äڵ带 ¸¸µé¾î ³¾ ¼ö ÀÖ´Â ÈǸ¢ÇÑ ±â´ÉÀ̶ó ÇÒ ¼ö ÀÖ°Ú½À´Ï´Ù.

1. ŸÀÔÀ¯Ãß´Â ¾î¶»°Ô ÀÌ·ç¾î Áö´Â°¡?

varŰ¿öµå´Â º¯¼ö¸¦ ¼±¾ðÇÏ°í ±× °ªÀ» ÇÒ´çÇÏ´Â ÃʱâÈ­ ±¸¹®¿¡¼­ '='À» ±âÁØÀ¸·Î ¿À¸¥ÂÊ ºÎºÐÀÇ ÇüÅ¿¡ µû¶ó ÄÄÆÄÀÏ·¯¿¡°Ô ŸÀÔÀ¯Ã߸¦ Áö½Ã ÇÏ°Ô µË´Ï´Ù.

var i = 5

À§ÀÇ Äڵ带 º¸¸é 5¶ó´Â °ªÀÌ º¯¼ö i¿¡ ÇÒ´çµÇ¹Ç·Î ÄÄÆÄÀÏ·¯´Â 5¶ó´Â °ªÀÌ ¼ýÀÚ Áï intŸÀÔÀ̶ó´Â °ÍÀ» ¹Ì¸® ¾Ë°í Àֱ⠶§¹®¿¡ º¯¼ö i¸¦ intŸÀÔÀ¸·Î À¯ÃßÇÏ°Ô µÇ´Â °Í ÀÔ´Ï´Ù.

//stringŸÀÔÀ¸·Î À¯Ãß
var s = "Taeyo.NET";
//doubleŸÀÔÀ¸·Î À¯Ãß
var d = 12.5;
//charŸÀÔÀ¸·Î À¯Ãß
var c = 'k';

C#ÀÇ ±âº» ŸÀÔ »Ó¸¸ ¾Æ´Ï¶ó »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔ(Class) ¹× À͸í ŸÀÔ(Anonymouse Type) ¶ÇÇÑ À¯Ãß µÉ ¼ö ÀÖ½À´Ï´Ù.

±×·³ °£´ÜÇÏ°Ô »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔ(Class)À» À¯ÃßÇÏ´Â Äڵ带 »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

Class Person
{
    public string FirstName;
    public string LastName;
    public int Age;
}

Person person = new Person();
person.FirstName = "°æ±Õ";
person.LastName = "±è";
person.Age = 19;

//»ç¿ëÀÚ ÁöÁ¤ ŸÀÔÀ¸·Î À¯Ãß
var p = person;

PersonÀ̶ó´Â »õ·Î¿î Class¸¦ ¸¸µé°í °³Ã¼¸¦ »ý¼ºÇÑ ÈÄ var Ű¿öµå·Î ¼±¾ðµÈ p¶ó´Â º¯¼ö¿¡ person°³Ã¼¸¦ ÇÒ´çÇÏ°Ô µÇ¸é ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ º¯¼ö p´Â PersonŸÀÔÀ¸·Î À¯Ãß µË´Ï´Ù.

À͸í ŸÀÔ ¶ÇÇÑ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ À¯Ãß°¡ °¡´É ÇÕ´Ï´Ù.
¾Æ·¡ Äڵ带 º¸¸é ½ÄÀÇ ¿À¸¥ÂÊ ºÎºÐÀÌ À͸í ŸÀÔÀÌ°í ±× Å¸ÀÔÀ» º¯¼ö p°¡ ¹Þ°Ô µÇ¸é ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ º¯¼ö p´Â À͸í ŸÀÔÀ¸·Î À¯Ãß°¡ µË´Ï´Ù.

//À͸íŸÀÔÀ¸·Î À¯Ãß
var p = new { FirstName = "°æ±Õ", LastName = "±è", Age = 19 };

À§ÀÇ ¿¹Á¦ Äڵ忡¼­´Â À͸íŸÀÔÀÇ ÇüŸ¸ ¾Ë¾Æ µÎ°í ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ °­Á¿¡¼­ ÀÚ¼¼È÷ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

´ÙÀ½Àº Äõ¸®Ç¥Çö½ÄÀÇ Å¸ÀÔÀ» À¯ÃßÇÏ´Â ÄÚµå ÀÔ´Ï´Ù.

// IEnumerableŸÀÔÀ¸·Î À¯Ãß
var products =
      from p in Products
      where p.ProductName == "chai"
      select p;

À§ÀÇ Äõ¸® Ç¥Çö½ÄÀº LINQ¸¦ Ȱ¿ëÇÔ¿¡ À־ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ±¸Á¶ÀÔ´Ï´Ù. Äڵ忡 ´ëÇØ °£´ÜÈ÷ ¾Ë¾Æº¸¸é ProductsÅ×ÀÌºí¿¡¼­ ProductNameÀÌ ¡®Chai¡¯¿Í °°Àº »óǰÀ» Ãâ·ÂÇÏ´Â ±¸¹®À¸·Î ±× °á°ú´Â IEnumerable<T>ŸÀÔÀÔ´Ï´Ù. ±×·¸±â ¶§¹®¿¡ productsº¯¼ö´Â IEnumerable<T>ŸÀÔÀ¸·Î À¯Ãß µË´Ï´Ù. Äõ¸® Ç¥Çö½ÄÀº ¸¶Áö¸· °­Á¿¡¼­ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇÒ °ÍÀÔ´Ï´Ù.

2. Á¤¸»·Î À¯Ã߸¦ Çϴ°¡?

°£´ÜÇÑ ¿¹Á¦ Äڵ带 ÄÄÆÄÀÏ ÇÏ°í ½ÇÁ¦ ¾î¶»°Ô ŸÀÔÀ¯Ãß°¡ ÀϾ´ÂÁö¸¦ È®ÀÎ Çϱâ À§ÇØ IL DisAssembler(ildasm.exe)¸¦ »ç¿ëÇÏ¿© ÄÄÆÄÀÏµÈ ILÄڵ带 È®ÀÎ ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

¾Æ·¡´Â IntŸÀÔ°ú Á÷Á¢ ÀÛ¼ºÇÑ PersonŸÀÔÀ» ÀÌ¿ëÇÏ´Â ¿¹Á¦ ÄÚµå ÀÔ´Ï´Ù.

Class Person
{
    public string FirstName;
    public string LastName;
    public int Age;
}

class TypeInference
{
    public int GetInt()
    {
        var i = 10;
        int b = 11;
        var p = new Person();
        return i;
    }
}

ŸÀÔÀ¯Ã߸¦ Å×½ºÆ® Çϱâ À§ÇØ º¯¼ö i´Â varŰ¿öµå¸¦ ÅëÇØ ÃʱâÈ­ Çß°í º¯¼ö b´Â ÀϹÝÀûÀÎ ¹æ½ÄÀ¸·Î intŸÀÔÀ¸·Î ¼±¾ð ÇÏ¿´½À´Ï´Ù. ±×¸®°í »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔÀÎ PersonŸÀÔÀ» º¯¼ö p¿¡ ÇÒ´ç Çß½À´Ï´Ù.
À§ÀÇ Äڵ带 ÄÄÆÄÀÏ ÇÑ ÈÄ IL DisAssembler¸¦ »ç¿ëÇØ ILÄڵ带 È®ÀÎ ÇØ º¸¸é ¾Æ·¡¿Í °°Àº Äڵ带 º¼ ¼ö ÀÖ½À´Ï´Ù.

º¯¼ö i¿Í º¯¼ö b ¸ðµÎ int32ÇüÅ·ΠÃʱâÈ­ µÈ °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖÀ¸¸ç º¯¼ö p´Â Á¤È®È÷ PersonŸÀÔÀ¸·Î À¯ÃßµÈ °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

3. varŰ¿öµåÀÇ »ç¿ë ¹üÀ§

varŰ¿öµå´Â ¾Æ¹«µ¥¼­³ª »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ¸Å¼­µå ³»ºÎÀÇ Áö¿ªº¯¼ö³ª for¹®, foreach¹®, using¹®ÀÇ ÃʱâÈ­ ±¸¹®¿¡¼­ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.

¸Å¼­µå ³»ÀÇ Áö¿ªº¯¼ö·Î¼­ »ç¿ë

public int GetTotalCount()
{
    var cnt = db.TotalCount();
    return cnt;
}

for¹®ÀÇ ÃʱâÈ­ ±¸¹®¿¡¼­ »ç¿ë

for(var i = 0 ; i <10 ; i++){¡¦}

foreach¹®ÀÇ ÃʱâÈ­ ±¸¹®¿¡¼­ »ç¿ë

foreach(var dr in dt.Rows){¡¦}

using¹®ÀÇ ÃʱâÈ­ ±¸¹®¿¡¼­ »ç¿ë

using(var file = new StreamReader("c:\test.txt")){¡¦.}

4. varŰ¿öµå¸¦ »ç¿ëÇϸ鼭 À̰͸¸Àº ÁÖÀÇÇÏÀÚ.

var Ű¿öµå´Â ÀÚ¹Ù½ºÅ©¸³Æ®³ª VBÀÇ "Variant"·Î ¿ÀÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ C#ÀÇ varŰ¿öµå´Â ·±Å¸ÀÓ¿¡ ¹ÙÀεù µÇÁö ¾Ê°í ÄÄÆÄÀÏ Å¸ÀÓ¿¡ ÄÄÆÄÀÏ·¯°¡ ÀûÇÕÇÑ Å¸ÀÔÀ» °áÁ¤Çϰí ÇÒ´çÇÏ°Ô µË´Ï´Ù.
±×·¸±â ¶§¹®¿¡ ÄÄÆÄÀÏ·¯°¡ ÀûÇÕÇÑ Å¸ÀÔÀ» °áÁ¤ÇÏ·Á¸é ¼±¾ð°ú µ¿½Ã¿¡ ÃʱâÈ­°¡ ÀÌ·ç¾î Á®¾ß Çϸç NullÀº »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.(NullÀº ŸÀÔÀÌ ¾ø±â ¶§¹®ÀÌÁÒ) ¶ÇÇÑ Å¬·¡½º ¹üÀ§¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø°í ¹Ýµå½Ã ¸Å¼­µå ³»ÀÇ Áö¿ªº¯¼ö·Î »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

varŰ¿öµåÀÇ »ó´çÈ÷ Æí¸®ÇÏÁö¸¸ ¸í½ÃÀûÀ¸·Î ŸÀÔÀÌ ¼±¾ðµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ´Ù¸¥ °³¹ßÀÚ°¡ Äڵ带 º¸°Ô µÇ¸é Äڵ带 ÀÌÇØÇϱ⠳­ÇØ ÇÒ ¼ö ÀÖ½À´Ï´Ù. varŰ¿öµå¸¦ ¹Ýµå½Ã ÇÊ¿äÇÑ °æ¿ì(À͸íŸÀÔ, Äõ¸®Ç¥Çö½ÄÀÇ °á°úŸÀÔ, ÁßøµÈ Á¦³×¸¯ ŸÀÔ µî)¿¡ »ç¿ëÇÏ¸é º¸´Ù ³ªÀº °³¹ß ÆíÀǼº ¹× »ý»ê¼º Çâ»ó¿¡ µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù. ŸÀÔÀ¯Ãß´Â LINQ¸¦ »ç¿ëÇϱâ À§ÇØ ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÒ Áß¿äÇÑ ³»¿ëÀ̱⠶§¹®¿¡ ù¹øÂ° °­Á¿¡¼­ ÀÌ·¸°Ô ´Ù·ç¾ú½À´Ï´Ù. ´ÙÀ½ °­Á´ À͸íŸÀÔ °ú °³Ã¼/Ä÷º¼Ç ÃʱâÈ­¿¡ ´ëÇØ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
°¨»çÇÕ´Ï´Ù.

°­Á ¸ñ·ÏÀ¸·Î..