2013-01-01から1ヶ月間の記事一覧

decimal型、10進浮動小数点数

C#

プログラミングC# 第6版 2.5.1.3 floatやdoubleは内部表現では2進数が使われているらしいのですが、このdecimalは10進数が使われているとのこと。そうすることによって精度の良い小数点を表現できるらしいです。C++にはこういった型はありませんでしたね。

Int32

C#

プログラミングC# 第6版 2.5.1 たとえばintにはInt32といった別名の型があらかじめ定義されているらしい class Program { static void Main() { int i = 10; System.Int32 j = 20; } } 好みで使い分ければいいんだろうか

usingとnamespace

C#

プログラミングC# 第6版 2.2 usingとnamespaceの話がありました。ここらへんはC++とほぼおなじですね。 using System; namespace HelloWorld { class Program { static void Main() { // usingしてるのでSystem.を省略できる Console.WriteLine("Hello, Worl…

お決まりのHelloWorld

C#

プログラミングC# 第6版 1章 新しい言語の勉強を始めるにあたって、必ずやる処理。それがHello Worldの表示ですね。 class Program { static void Main() { System.Console.WriteLine("Hello, World!"); } } コンパイルはVisual Studioが入ってるのでcscとい…

プログラミングC#第6版

C#

ちょっとひょんなことからC#を学ぶことになりました。プログラミングC# 第6版作者: Ian Griffiths,Matthew Adams,Jesse Liberty,鈴木幸敏,首藤一幸,株式会社情報技研出版社/メーカー: オライリージャパン発売日: 2011/11/29メディア: 大型本購入: 2人 クリッ…

値型でのコンストラクタ内でのプロパティの初期化

C#

プログラミングC# 第6版 3.4 class CSample { public CSample (int i) { foo = i; } public int foo { get; set; } } 上記クラス定義は極々普通の定義ですが、これを参照型(class)から値型(struct)に変えるとコンパイルエラーが出ます。 $ csc main.cs Micro…

コンストラクタから別のコンストラクタを呼ぶ方法

C#

プログラミングC# 第6版 3.4 using System; class CSample { public CSample (int i,int j) { foo = i; bar = j; } public CSample (int i) { foo = i; bar = 2; } public int foo; public int bar; } たとえば上記のようなコンストラクタが二つあったとしま…

値型と参照型

C#

プログラミングC# 第6版 3.4 ここはC++を勉強した人は注意が必要ですね。newはメモリの確保でポインタだ!みたいな固定概念を持ってるとC#では躓くと思います。まず参照型というのがどういうものが確認してみましょう。 using System; class CSample { publi…

列挙型でちょっとビックリ

C#

プログラミングC# 第6版 3.3 列挙型の話。これはC++とまったく同じですね。ってことでサクっと実行してみたところ・・・ using System; enum Hoge { Foo, Bar, Baz, } class Program { static void Main () { Console.WriteLine(Hoge.Foo); Console.WriteLin…

読み取り専用なフィールドを生成する(const VS readonly)

C#

プログラミングC# 第6版 3.2.6 constを使うと書き換え不可な読み取り専用フィールドを生成することができます。これはC++でも同じですね。 class CSample { public const int foo = 1; } 一方readonlyを使っても読み取り専用フィールドを生成することができ…

フィールドという名のメンバ変数

C#

プログラミングC# 第6版 3.2.4 フィールドと言う単語が出てきました。これはいったいなんのことでしょうか? using System; class CSample { // これがフィールド int foo; } 初めてのクラス実装のときにもう既に書いてましたね、これがフィールドだそうです…

get,setアクセサに独自の処理を実装する

C#

プログラミングC# 第6版 3.2.3 アクセサには独自の処理を実装することが可能なようです。 using System; class CSample { public CSample (double val) { foo = val; } public double foo; public double bar { get { return foo * 2; } set { foo = value /…

コンストラクタ

C#

プログラミングC# 第6版 3.2.3 クラス名と同じ名称でメソッドを作るとコンストラクタになります。 using System; class CSample { public CSample (string strval) { str = strval; } public string str { get; private set; } } class Program { static voi…

初めてのクラス実装

C#

プログラミングC# 第6版 3.2 ようやくクラスの話に来ました。まずはシンプルなクラスを定義してみます。 using System; class CSample { public string str { get; set; } } class Program { static void Main () { CSample obj = new CSample(); obj.str = …

foreachステートメント

C#

プログラミングC# 第6版 2.8.1 C#にはループ制御としてforやwhileの他にforeachというものがあります。これは配列をループさせるのに使用します。 using System; class Program { static void Main() { int[] array = {2,4,6,8}; foreach(int i in array){ C…

switchにおけるフォールスルーの禁止

C#

プログラミングC# 第6版 2.7.2 C#ではswitchにおけるフォールスルーがコンパイルエラーとなります。 using System; class Program { static void Main() { int i = 0; switch(i) { case 0: Console.WriteLine("Hello, World0!"); // breakの書き忘れ case 1:…

if文での評価はbool型のみしか受け付けない

C#

プログラミングC# 第6版 2.7.1 C#ではifで値を評価する際に、bool型以外は使用できないようです。 using System; class Program { static void Main() { int i = 0; if ( i ) { // iはintなのでコンパイルエラー Console.WriteLine("Hello, World!"); } } } …