無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

C#をつつく1ーシステムデータタイプ。必要不可欠なものピヨ。

おっはピヨー。今日も元気にプログラミングしよう。このサイトのメイン記事はディープなものだけど、 もっと多くの人に楽しんでもらうために基礎部分を書くことにしたピヨ。
僕も完璧じゃないから基礎の復習の意味合いもかねているからこっちもどんどん書くよ。
これから連載する一連のC#の記事をマスターしたらCPUのシミュレートとか色々楽しめること間違いなし! C#初心者の人も僕と一緒に楽しもう。
じゃあ早速、C#の基礎を復習/学習しよう。
プログラミング言語を学ぶ際に最初にするべきなのは、hello worldプログラムを書くことと、 言語が持つ基礎的な型を学ぶことなんだ。 では、早速次のプログラムを実行してみて。
using System;
using System.IO;
using System.Reflection;

namespace Sample
{
    class Program
    {
	//C#の主なシステムタイプの情報を出力する
        static void Main( string[ ] args ) {
            FileStream file = new FileStream( 
               "型の最小値と最大値.txt", FileMode.OpenOrCreate );
            StreamWriter writer = new StreamWriter( file );
            Type[ ] types = new Type[ ] { typeof(sbyte), typeof(byte), 
                typeof(short), typeof(ushort),
                typeof(int), typeof(uint), 
                typeof(long), typeof(ulong), 
                typeof(float), typeof(double),
                typeof(decimal)
            };
            foreach(Type t in types) ShowType( t, writer );
            writer.Close( );
        }
	
	//型の最大値と最小値をコンソールとファイルに出力
        private static void ShowType( Type type, StreamWriter writer ) {
            FieldInfo max = type.GetField( "MaxValue" );
            FieldInfo min = type.GetField( "MinValue" );
            String str = String.Format(
                "型【{0}】の最大値は【{1}】:最小値は【{2}】です。", 
                type.FullName, max.GetValue(null), min.GetValue(null));
            Console.WriteLine( str );
            writer.WriteLine( str );
        }
    }
}
今回は何が書いてあるかは気にしないで、実行結果だけ見てね。 そうすれば、C#の型名が違う事最小値と最大値が違う事がわかると思う。 多分なんで型名が二つもあるの?と気になる人がいると思う。それは、C#の実行環境であるCLR複数のプログラム言語に対応しているからなんだ。 複数の言語に対応するためには、基礎的な型はあわせなくてはならない、だけど既存の言語を使っている人は困るからC#独自の型名とCRLが考えている型名が違うピヨね。
次に何で最大値と最小値がそれぞれ違うのかということだけど、それは効率性の問題なんだ。いつも64ビットの値を使っていれば、少しの数値範囲しか使わない時もったいないよね?それに、後からより大きな数値を扱いたい場合困るよね。 だから全てのプログラム言語は性質に合わせて複数の基礎的な型を用意しているんだ。 おっと、忘れるところだった。
サンプルプロプログラムの型以外にも後数個あって、
trueとfalseの2つしか値がないbool(System.Boolean)型、
Unicode文字1つを表すchar(System.Char)型、
char型が複数ある文字列を表すstring(System.String)型、
全ての型の始祖であるobject(System.Object)型があるよ。
まだ良くわからないところがあると思うけど、これからの記事で実際に扱っている所を見たら判るようになるよ。だから焦らない焦らない。硬くならないで気楽に読んでね。
じゃあ、近いうちにまた合おう。バイバイ。また来てね。
別窓 | C# | コメント:0 | トラックバック:0 | ∧top | under∨
<<C#をつつく2ー変数。人間中身が大事。 | 無差別に技術をついばむ鳥 | 中の人の徒然草1>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |