블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

Category

Recent Post

Recent Comment

Archive

'.Net Project/.Net C#'에 해당되는 글 69

  1. 2009.08.17 85장 추가연산자
  2. 2009.08.17 84장 박싱&언박싱(boxing Unboxing)
  3. 2009.08.17 83장 값타입과 참조타입(ValueType,Reference)
  4. 2009.08.17 82장 널값표현(Nullable)
2009. 8. 17. 13:50 .Net Project/.Net C#
반응형

 추가연산자란 ?
is연산자는 주워진 객체가 특정개체와 호환이 되는지 판단할때 사용
as연산자는 is연산자의 기능에 타입변환의 기능까지 포함한 연산자를 의미
null연산자는 nullable 형식의 값과 비교하여 사용


 nullable 형식 ?
 System.Nullable 구조체의 인스턴스입니다.
 nullable 형식은 내부 값 형식의 일반적인 값 범위에 추가로 null 값을 나타낼 수
 있습니다.
 예를 들어 Nullable<Int32>("Int32의 nullable"이라고 읽음)에는 -2147483648에서 
 2147483647까지의 모든 값을 할당하거나 null 값을 할당할 수 있습니다.  

 Nullable<bool>에는 true, false 또는 null을 할당할 수 있습니다. 숫자 및 부울 형식
 에 null 값을 할당할 수 있는 기능은 특히 값이 할당되지 않을 수 있는 요소를 포함하는 
 데이터베이스 및 기타 데이터 형식을 다룰 때 유용합니다.
 
 예를 들어 데이터베이스의 Boolean 필드는 true 또는 false 값을 저장할 수도 있고,
 정의되지 않을 수도 있습니다.

//is 연산자 : str is string : str 변수에 string 형식인지 검사 : bool  
// as 연산자 : (str is string)  ? str:null; --> is 연산자 + ?: 연산자
// ?? 연산자 : nullable 형식의 값 비교

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 추가연산자
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 10;
            string s = "안녕";
            object o = "hi";
            int? num = null;
            Console.WriteLine("{0}",s is string); //true 
            //hi  //(o is string) ? 0 :null; 삼항연산자에 의해서 값 출력 
            Console.WriteLine("{0}", o as string);       
            Console.WriteLine("{0}",i);
            Console.WriteLine("{0}",(num ?? 1234)); //(num is null) ? 1234 :num;

        }
    }
}

반응형

'.Net Project > .Net C#' 카테고리의 다른 글

87장 암시적으로 형식변환  (0) 2009.08.17
86장 분할클래스  (0) 2009.08.17
84장 박싱&언박싱(boxing Unboxing)  (0) 2009.08.17
83장 값타입과 참조타입(ValueType,Reference)  (0) 2009.08.17
82장 널값표현(Nullable)  (0) 2009.08.17
posted by Magic_kit
2009. 8. 17. 13:34 .Net Project/.Net C#
반응형

 boxing 및 unboxing을 사용하면 값 형식을 개체로 처리할 수 있습니다.
 값 형식을 boxing하면 Object 참조 형식의 인스턴스 안에 이 형식이 패키지됩니다.

 이렇게 하면 가비지 수집된 힙에 값 형식을 저장할 수 있습니다.
 unboxing하면 개체에서 값 형식이 추출됩니다.

단순 할당에서는 boxing과 unboxing을 수행하는 데 많은 계산 과정이 필요합니다.
값 형식을 boxing하는 경우 완전히 새로운 개체를 할당하고 구성해야 합니다.

정도는 약간 덜하지만 unboxing에 필요한 캐스트에도 상당한 계산 과정이 필요로
합니다.


boxing은 가비지 수집되는 힙에 값 형식을 저장하는 데 사용됩니다.
boxing은 값 형식(C# 참조)을 object 형식 또는 해당 값 형식에서 구현된 임의의 인터페이스 형식으로 변환하는 암시적 변환입니다.
값 형식을 boxing하면 힙에 개체 인스턴스가 할당되고 값이 새 개체에 복사됩니다.


unboxing은 object 형식에서 값 형식으로, 또는 인터페이스 형식에서 해당 인터페이스를 구현하는 값 형식으로의 명시적 변환입니다. unboxing 연산 과정은 다음과 같습니다.
개체 인스턴스가 지정한 값 형식을 boxing한 값인지 확인합니다.
인스턴스의 값을 값 형식 변수에 복사합니다.




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 값타입과참조타입
{
    class Program
    {
        static void Main(string[] args)
        {
            //값형식 : value Type : 닷넷이 관리하는 메모리의 스택에 보관 
            int i = 1234;
            //참조 형식 : Reference : 닷넷의힙 메모리에 보관
            string s = "안녕\0하세요"; //리터럴(Literal)
            Console.WriteLine("{0}",s);

            //박싱Boxing과 언박싱UnBoxing
            string su = "1234";
            int num = Convert.ToInt32(su); // 힙 -> 스택 : 언박싱 ~
            su = i.ToString(); //스택 -> 힙 :Boxing
            su = null; //가비지 컬렉터 엔진 활동
            //구조체는 값형식, 클래스 참조형식 

        }
    }
}

 값 형식을 기반으로 한 변수에는 값이 직접 포함됩니다.
 
값 형식 변수 하나를 다른 변수에 대입하면 변수에 포함된 값이 복사됩니다. 이는 참조
형식 변수를 대입하는 경우와 다릅니다.
참조 형식 변수의 경우 개체 자체가 아니라 개체에 대한 참조가 복사됩니다.

모든 값 형식은 암시적으로 System.ValueType에서 파생됩니다.

참조 형식과 달리 값 형식에서 새 형식을 파생시킬 수 없습니다. 그러나 구조체는 참조 형식과 마찬가지로 인터페이스를 구현할 수 있습니다.

참조 형식과 달리 값 형식에는 null 값이 포함될 수 없습니다. 그러나 nullable 형식 기능을 사용하면 값 형식을 null에 대입할 수 있습니다.


 참조 형식 변수는 데이터를 직접 포함하지 않고 데이터에 대한 참조를 포함합니다.
 
 값으로 참조-형식 매개 변수를 전달할 경우 클래스 멤버 값과 같은 참조에서 가리키는
 데이터를 변경할 수 있으나 참조 값 자체를 변경할 수는 없습니다. 즉, 같은 참조를 사용
 하여 새 클래스에 메모리를 할당하고 이를 블록 밖에서 지속하도록 할 수 없습니다.
 그렇게 하려면 ref 또는 out 키워드를 사용하여 매개 변수를 전달해야 합니다.
 편의상 다음 예제에서는 ref를 사용 하도록 합니다.

boxing, unboxing, Value, Reference, 관련 참고)
 http://msdn.microsoft.com/ko-kr/library/yz2be5wk.aspx





반응형

'.Net Project > .Net C#' 카테고리의 다른 글

86장 분할클래스  (0) 2009.08.17
85장 추가연산자  (0) 2009.08.17
83장 값타입과 참조타입(ValueType,Reference)  (0) 2009.08.17
82장 널값표현(Nullable)  (0) 2009.08.17
81장 명령인수갯수  (0) 2009.08.17
posted by Magic_kit
2009. 8. 17. 13:32 .Net Project/.Net C#
반응형

 

 값 형식을 기반으로 한 변수에는 값이 직접 포함됩니다.
 
값 형식 변수 하나를 다른 변수에 대입하면 변수에 포함된 값이 복사됩니다. 이는 참조
형식 변수를 대입하는 경우와 다릅니다.
참조 형식 변수의 경우 개체 자체가 아니라 개체에 대한 참조가 복사됩니다.

모든 값 형식은 암시적으로 System.ValueType에서 파생됩니다.

참조 형식과 달리 값 형식에서 새 형식을 파생시킬 수 없습니다. 그러나 구조체는 참조 형식과 마찬가지로 인터페이스를 구현할 수 있습니다.

참조 형식과 달리 값 형식에는 null 값이 포함될 수 없습니다. 그러나 nullable 형식 기능을 사용하면 값 형식을 null에 대입할 수 있습니다.


 참조 형식 변수는 데이터를 직접 포함하지 않고 데이터에 대한 참조를 포함합니다.
 
 값으로 참조-형식 매개 변수를 전달할 경우 클래스 멤버 값과 같은 참조에서 가리키는
 데이터를 변경할 수 있으나 참조 값 자체를 변경할 수는 없습니다. 즉, 같은 참조를 사용
 하여 새 클래스에 메모리를 할당하고 이를 블록 밖에서 지속하도록 할 수 없습니다.
 그렇게 하려면 ref 또는 out 키워드를 사용하여 매개 변수를 전달해야 합니다.
 편의상 다음 예제에서는 ref를 사용 하도록 합니다.




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 값타입과참조타입
{
    class Program
    {
        static void Main(string[] args)
        {
            //값형식 : value Type : 닷넷이 관리하는 메모리의 스택에 보관 
            int i = 1234;
            //참조 형식 : Reference : 닷넷의힙 메모리에 보관
            string s = "안녕\0하세요"; //리터럴(Literal)
            Console.WriteLine("{0}",s);

            //박싱Boxing과 언박싱UnBoxing
            string su = "1234";
            int num = Convert.ToInt32(su); // 힙 -> 스택 : 언박싱 ~
            su = i.ToString(); //스택 -> 힙 :Boxing
            su = null; //가비지 컬렉터 엔진 활동
            //구조체는 값형식, 클래스 참조형식 
        }
    }
}

반응형

'.Net Project > .Net C#' 카테고리의 다른 글

85장 추가연산자  (0) 2009.08.17
84장 박싱&언박싱(boxing Unboxing)  (0) 2009.08.17
82장 널값표현(Nullable)  (0) 2009.08.17
81장 명령인수갯수  (0) 2009.08.17
34. Sort 선택정렬 Ex)  (0) 2009.08.10
posted by Magic_kit
2009. 8. 17. 13:29 .Net Project/.Net C#
반응형

 Nullable<(Of <(T>)>) 제네릭 형식의 내부 값 형식입니다
 정수형등의 변수는 반드시 초기화 하여 사용하며 선언시 ? 붙이면 null가능 형식 초기화


//널(NULL) 가능 형식
//정수형등의 변수는 반드시 초기화해서 사용
//변수 선언시 ? 를 붙이면 Null 가능 형식을 초기화

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nullable
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 100;
            int? ni = null;  //변수뒤에 ? 붇이면 null가능 형식으로 초기화 의미
            double? nd = null;

            if (ni.HasValue) //널값이면 false, 값이 있으면 true
            {
                Console.WriteLine("{0}",ni.Value);
               
            }
            else
            {
                Console.WriteLine("널값입니다 ");
            }
        }
    }
}

nullable참고)

 http://social.msdn.microsoft.com/Search/ko-KR/?query=nullable&ac=3


반응형
posted by Magic_kit