C# 비망록1

소개



업무에서 C#을 사용하고 있을 때 막힌 곳이나 잊기 쉬운 곳을 비망록으로 썼습니다.
  • 스레드 또는 작업에서 양식을 변경하는 경우

  • 스레드와 작업에서 양식을 조작하면 오류가 발생합니다.
    따라서 Invoke를 사용합니다.

    예: 텍스트 상자(textBox)의 이름을 변경하는 경우

    sample.cs
       //フォーム上のテキストをChangedに変更
       this.Invoke(new Action<string>(this.TextChange),"Changed");
    
       //フォーム上のテキストボックスを変更する関数
       private void TextChange(string text)
       {
           this.textBox.Text = text;
       }
    

    Invoke는 인수의 유무로 다음과 같이 구분한다.
       //引数なし
       this.Invoke(new Action(関数));
       //引数あり
       this.Invoke(new Action<引数の型名>(関数),引数);
    

    인수가 없으면 람다 식을 사용하여 다음과 같이 작성하면 유용합니다.
       //引数なし
       this.Invoke(new Action(() => {処理}));
    
  • 대기하는 방법

  • 예: 100ms를 기다립니다.
       System.Threading.Thread.Sleep(100)
    

    using을 사용하는 경우 using System.Threading;을 선언하고,
    다음과 같이 한다.
       //100ミリ秒待機
       Thread.Sleep(100)
    
  • Console 입력

  • 기본적으로 양식을 사용하기 때문에 곧 잊어 버린다.
       //文字
       string hoge1 = Console.Read();
       //1行分
       string hoge2 = Console.ReadLine();
    
  • Console 출력

  • 입력과 같아서 곧 잊어버린다
       string hoge = "test";
       //改行なし出力
       Console.Write(hoge);
       //改行あり出力
       Console.WriteLine(hoge);
    
  • ""나 () 등으로 묶는 경우 등

  • 리소스에 정의되어 있어도 사용할 수 있으므로 편리합니다.
       string hoge = "test";
       Console.WriteLine(string.Format("「{0}」",test);
    

    출력 결과: "test"
  • 공용체를 사용하는 방법

  • C의 union을 C#에서도 사용할 수 있는 것 같아서.
    같은 메모리 영역을 복수의 형태가 공유할 수 있으므로, 매우 편리.
       using System.Runtime.InteropServices;
    
       [StructLayout(LayoutKind.Explicit)]
       public struct UnionData
       {
           //0バイト目
           [FieldOffset(0)]
           public byte zero;
    
           //1バイト目
           [FieldOffset(1)]
           public byte one;
    
           //2バイト目
           [FieldOffset(2)]
           public byte two;
    
           //3バイト目
           [FieldOffset(3)]
           public byte three;
    
           //float型
           [FieldOffset(0)]
           public float floatData;
    
           //int型
           [FieldOffset(0)]
           public int intData;
       }   
    
    

    공용체를 사용한 샘플
           //共用体の宣言
           UnionData data = new UnionData();
    
           //int型にのみ値を代入
           data.intData = 1094861636;
           
           //それぞれの値を出力
           
           //0バイト目
           Console.WriteLine(Convert.ToChar(data.zero));
    
           //1バイト目
           Console.WriteLine(Convert.ToChar(data.one));
    
           //2バイト目
           Console.WriteLine(Convert.ToChar(data.two));
    
           //3バイト目
           Console.WriteLine(Convert.ToChar(data.three));
    
           //int型
           Console.WriteLine(string.Format("int = {0:d}",data.intData));
    
           //float型
           Console.WriteLine(string.Format("float = {0:0.000000}", data.floatData));
    

    출력 결과


    결론



    아직, 모르는 일이나 모르는 것이 많기 때문에, 공부하지 않으면 안됩니다…
    데이터베이스도 공부하고 싶다 ...

    좋은 웹페이지 즐겨찾기