Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21491

C# 備忘録1

$
0
0

はじめに

業務でC#を使っていた際に詰まったところや忘れがちな所を備忘録として書きました。

  • スレッドやタスクからフォームを変更する場合

スレッドやタスクからフォームを操作するとエラーが発生する。
そのため、Invokeを使用する。

例:テキストボックス(textBox)の名称を変更する場合

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

Invokeは引数の有無で以下のように使い分ける。

//引数なしthis.Invoke(newAction(関数));//引数ありthis.Invoke(newAction<引数の型名>(関数),引数);

引数がない場合ならラムダ式を使用して、以下のように書くと便利

//引数なしthis.Invoke(newAction(()=>{処理}));
  • 待機をする方法

例:100ミリ秒を待機する。

System.Threading.Thread.Sleep(100)

usingを使用する場合はusing System.Threading;を宣言し、
以下のようにする。

//100ミリ秒待機Thread.Sleep(100)
  • Consoleの入力

基本的にフォームを使うので、すぐに忘れてしまう。

//文字stringhoge1=Console.Read();//1行分stringhoge2=Console.ReadLine();
  • Consoleの出力

入力と同じですぐに忘れてしまう

stringhoge="test";//改行なし出力Console.Write(hoge);//改行あり出力Console.WriteLine(hoge);
  • 「」や()などで括る場合など

リソースに定義していても使えるので、便利

stringhoge="test";Console.WriteLine(string.Format("「{0}」",test);

出力結果:「test」

  • 共用体を使う方法

CのunionをC#でも使えるみたいなので。
同じメモリ領域を複数の型が共有出来るので、とても便利。

usingSystem.Runtime.InteropServices;[StructLayout(LayoutKind.Explicit)]publicstructUnionData{//0バイト目[FieldOffset(0)]publicbytezero;//1バイト目[FieldOffset(1)]publicbyteone;//2バイト目[FieldOffset(2)]publicbytetwo;//3バイト目[FieldOffset(3)]publicbytethree;//float型[FieldOffset(0)]publicfloatfloatData;//int型[FieldOffset(0)]publicintintData;}

共用体を使用したサンプル

       //共用体の宣言
       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));

出力結果
出力サンプル.png

おわりに

まだまだ、わからないことや知らないことが多いので、勉強しないといけないです…。
データベースとかも勉強したい…


Viewing all articles
Browse latest Browse all 21491

Latest Images

Trending Articles