이데일리에서 퍼왔습니다.

`MS 6년만의결실`..테이블보컴퓨터공개


 
입력 : 2007.05.31 02:59


[뉴욕=이데일리김기성특파원] `컴퓨터는진화한다. 상자모양의컴퓨터시대는이제끝났다`

30일(현지시간) 월스트리저널(WSJ) 후원으로캘리포니아칼스배드에서열린 기술컨퍼런스에서마이크로소프트부터실리콘밸리 IT업체들까지새로운형태의컴퓨터를대거전시했다.

특히마이크로소프트가빌게이츠회장의주문으로지난 6년동안심혈을기울여탄생시킨테이블보모양의컴퓨터(사진)는최대관심대상으로꼽히고있다.

이컴퓨터는터치스크린방식을채택하고있으며사진을진열하고게임을즐길수있는등의기능을담고있다.

마이크로소프는올해말공식판매에들어갈예정이다. 초기에는호텔과카지노용이주류를이룰것으로전망된다.

라이브스크라이브(Livescribe)는음성녹음을문서화할수있는펜모양의컴퓨터를내놓았다.

팜(Palm)은이회사가새로운분야라고말하는휴대기기를공개할예정이다. 아직까지알려진것은거의없지만전문가들은팜의종전제품보다다소크고무선네트워킹기능을포함하고있을것으로예상하고있다.

이번컨퍼런스전시회에선보인제품들은컴퓨터모양을바꾸기위한업체들의크고작은시도에비하면일부분에불과하다. 예를들어휴렛패커드의터치스마트는키보드없이요리법이나전화번호를찾을수있는등의기능을가진부엌용으로고안됐다. 가격은 1800달러다.

WSJ은특히컴퓨터운영체제(OS)와마이크로프로세서시장에서각각거의독점적지위를갖고있는마이크로소프트와인텔이이같은컴퓨터의새로운용도및디자인개발에박차를가하고있다고전했다.

반응형
현재 C# 으로 프로젝트를 하니라고 맨땅에 열심히 헤딩하고 있다.
그러다가 
이런 문장을 봤다. ㅡㅡ'

    public woojja1(string str)
      :this()

woojja1(string str) 은 Constructor 다.
그런데...

:this()는 뭐냐? VB.NET 개발자들에게는 생소하리라 생각된다...
이게 어떤 버젼부터 튀어나왔는지도 모르겠다.(아시는 분 알려주셔요. 1.1 부터인가?)

보니. Default Constructor 를 호출하는 문장이다.

woojja1(string str)보다 woojja1() 을 먼저 실행하게끔 한다.
그렇기 때문에  woojja1() Default Constructor 를 주석처리하게되면 에러가 발생하게된다.
기본적으로 Default Constructor를 호출해야하는데 명시적으로 존재하지 않기 때문에 에러가 발생하는 것이다.

하지만...

reference type 이 아닌 value type 이라면 이야기가 달라진다.
아래 woojja2 가 그 예인데...
일단 아래의 woojja2 structure 의 주석을 풀고 Code를 컴파일 또는 실행하게 되면  structure 는 Parameter 가 없는 Constructor는 명시적으로 포함할 수 없다는 에러메시지가 발생하며 주석있는 대로 컴파일 혹은 실행을 시켜도 에러가 발생하지 않는 것을 알 수 있다.

이런 부분은 단순히 parameter 가 있는 Constructure 내부에서 Default Constructure를 호출할 수있지만
이런 식으로 Default Constructure 를 호출하게 되면 코드 실행순서에 대한 예기치 않은? 에러를 방지할 수 있으리라 생각된다.

VB.NET 에도 포함되어있다면 조금은 편리할 수 있으리라 생각된다. 
(있는데 내가 못찾는 건가? ^^'  그렇다면 알려주셔요... )


아래는 작성해 본 코드입니다.
디버깅을 걸어놓고 코드진행을 눈으로 살펴보시면 이해하기가 훨 나으리라 생각됩니다.
^^ 

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      woojja1 w1 = new woojja1("woojja");
      woojja2 w2 = new woojja2("woojja");
      Console.ReadLine();
    }
  }


  class woojja1
  {
    public woojja1()
    {
      Console.WriteLine("woojja 1 Default");
    }
    public woojja1(string str)
      :this()
    {
      Console.WriteLine("woojja 1");
    }
  }

  struct woojja2
  {
    //public woojja2()
    //{
    //  Console.WriteLine("woojja 2 Default");
    //}
    public woojja2(string str)
      : this()
    {
      Console.WriteLine("woojja 2");
    }
  }
}



행복한 고수되세요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

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

[C#] How do you check if a file is in use?  (0) 2017.07.27
[C#] 단일 Process 실행  (2) 2010.11.08
[C#] C# 은 VB.NET 따라쟁이...  (3) 2009.05.07
[C#] C# 컴파일러 오류  (0) 2009.03.06
[C#] Yield  (0) 2009.03.06

MSDN 내용을 발췌합니다.

확장할수있는개체와여러가지다른표현간에변환하는형식변환기를제공합니다.
네임스페이스: System.ComponentModel
어셈블리: System(system.dll)
구문
Visual Basic(선언)
PublicClassExpandableObjectConverter
     Inherits TypeConverter
 
Visual Basic(사용법)
DiminstanceAs ExpandableObjectConverter
 
C#
publicclassExpandableObjectConverter : TypeConverter
 
C++
publicref classExpandableObjectConverter : public TypeConverter
 
J#
publicclassExpandableObjectConverterextends TypeConverter
 
JScript
publicclassExpandableObjectConverterextends TypeConverter
설명
이클래스에서는개체에대한속성지원이 TypeConverter에서제공되는메서드및속성에추가됩니다. PropertyGrid에서속성형식을확장가능하게지정하려면이 TypeConverterGetPropertiesSupportedGetProperties의표준구현에사용하도록지정합니다.
참고
형식변환기에직접액세스하지말고대신 TypeDescriptor를사용하여해당변환기를호출하십시오. 자세한내용은 TypeConverter 기본클래스의예제를참조하십시오.
형식변환기에대한자세한내용은 TypeConverter 기본클래스및방법: 형식변환기구현을참조하십시오.
참고
이클래스에적용되는 HostProtectionAttribute 특성의 Resources 속성값은 SharedState입니다. HostProtectionAttribute는대개아이콘을두번클릭하거나, 명령을입력하거나, 브라우저에서 URL을입력하여시작되는데스크톱응용프로그램에영향을미치지않습니다. 자세한내용은 HostProtectionAttribute 클래스나 SQL Server 프로그래밍및호스트보호특성을참조하십시오.
예제
다음코드예제에서는 Margins 형식의변수를문자열변수로변환합니다.
Visual Basic 
Dim strM As String
strM = "1,2,3,4"
            Dim m As New System.Drawing.Printing.Margins(1, 2, 3, 4)
Console.WriteLine(TypeDescriptor.GetConverter(strM).CanConvertTo(GetType(System.Drawing.Printing.Margins)))
Console.WriteLine(TypeDescriptor.GetConverter(m).ConvertToString(m))
 
C# 
string strM="1,2,3,4";
System.Drawing.Printing.Margins m= new System.Drawing.Printing.Margins(1,2,3,4);
Console.WriteLine(TypeDescriptor.GetConverter(strM).CanConvertTo(typeof(System.Drawing.Printing.Margins)));
Console.WriteLine(TypeDescriptor.GetConverter(m).ConvertToString(m));
 
C++ 
String^ strM = "1,2,3,4";
System::Drawing::Printing::Margins^ m = gcnew System::Drawing::Printing::Margins( 1,2,3,4 );
Console::WriteLine( TypeDescriptor::GetConverter( strM )->CanConvertTo( System::Drawing::Printing::Margins::typeid ) );
Console::WriteLine( TypeDescriptor::GetConverter( m )->ConvertToString( m ) );
 
J# 
String strM = "1,2,3,4";
System.Drawing.Printing.Margins m = new System.Drawing.Printing.
    Margins(1, 2, 3, 4);
Console.WriteLine(TypeDescriptor.GetConverter(strM).CanConvertTo(
    System.Drawing.Printing.Margins.class.ToType()));
Console.WriteLine(TypeDescriptor.GetConverter(m).ConvertToString(m));
상속계층구조
System.Object
   System.ComponentModel.TypeConverter
    System.ComponentModel.ExpandableObjectConverter
       System.Drawing.IconConverter
       System.Drawing.Printing.MarginsConverter
       System.Windows.Forms.ColumnHeaderConverter
       System.Windows.Forms.ListViewItemConverter
스레드로부터의안전성
이형식의모든 public static(Visual Basic의경우 Shared) 멤버는스레드로부터안전합니다. 인터페이스멤버는스레드로부터안전하지않습니다.
플랫폼
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서모든플래폼의모든버전을지원하지는않습니다. 지원되는버전의목록은시스템요구사항을참조하십시오.
버전정보
.NET Framework
2.0, 1.1, 1.0에서지원
반응형

+ Recent posts