2013-02-01から1ヶ月間の記事一覧
プログラミングC# 第6版 5.2 引き続きデリゲートの話です。Actionというのはジェネリック型というものらしいです。今まででも既にListとか登場してましたね。でActionを使ってデリゲートとのことなんですが、まずジェネリックについて先に説明してくれないん…
プログラミングC# 第6版 5.1 前回の記事で関数をデリゲートで呼ぶ処理を勉強しましたが、関数だけでなくオブジェクトのメソッドすらもデリゲートとして登録することができます。 using System; delegate void CDelegateClass (int i); class Hoge { public s…
プログラミングC# 第6版 5.1 デリゲートというものが出てきました。本では長々と説明があったのですが、要するにC++でいうところの関数ポインタってところですね。否。その認識は間違いです。確かに関数ポインタに似てるんですが、実際はちょっと違います。…
プログラミングC# 第6版 4.10 interfaceの話がでてきました。これは一見するとabstractに非常によく似ています。 using System; // インターフェイス interface IClass { // 派生側でFooを実装することを強制する void Foo (); } class CClass : IClass { pu…
プログラミングC# 第6版 4.12 実行時に型を取得する方法です。これは例えば色々なクラスを一旦object型の配列に格納した後に、そこから元の型に戻して処理を実行させる時などに使えます。 using System; class CClassA { public void Foo () { Console.Write…
プログラミングC# 第6版 4.8 なんと全ての型は暗黙のうちにobject型から派生しているそうです。 class CClass { } class Program { static void Main () { // objectから派生しているので代入できる object cobj = new CClass(); } } しかもintのようなデー…
プログラミングC# 第6版 4.5 メソッドを派生クラスでオーバーライドした時に、基底クラスのオーバーライドされたメソッドをどうやって呼び出すかという話。 using System; class CBase { public virtual void Foo () { Console.WriteLine("CBase.Foo"); } } …
C++にもあるアクセス修飾子ですが、C#にはprivate,public,protectedの他にinternalというアクセス修飾子があります。同一プロジェクト内でだけアクセスのできる修飾子みたいです。どういうことかというと、同一プロジェクト内であればpublicとまったく同じと…
プログラミングC# 第6版 4.3.2 さてここもC++経験者は注意が必要です。virtualの動作がC++とC#で少し違います。まずは以下の例を確認してみます。 using System; class CBase { // 基底クラスのメソッドにvirtualをつける public virtual void Foo () { Cons…
プログラミングC# 第6版 4.3.1 継承の仕方はC++とほぼ変わらないですね。ひとつC++とは違い、注意する点がありました。以下のコードです。 using System; class CBase { public void Foo () { Console.WriteLine("CBase.Foo"); } } class CClass : CBase { p…
プログラミングC# 第6版 3.7 オブジェクト生成時に生成側でオブジェクトの初期化のための処理を行うことができるというものみたいです。 using System; class CSample { public int foo; public int bar; } class Program { static void Main () { // オブジ…
プログラミングC# 第6版 3.6.1 メソッドの引数はオプション引数にすることができます using System; class CSample { public void Foo (int i, int j=1, int k=2) { Console.WriteLine(i+j+k); } } class Program { static void Main () { CSample cobj = ne…
プログラミングC# 第6版 4.7 class宣言をするときにabstractをつけると、派生してからじゃないとオブジェクトが生成できないようになります。 using System; // abstractをつける abstract class CClass { } class Program { static void Main () { CClass c…
プログラミングC# 第6版 4.6 「派生を禁ずる!」まるでヒョウが言いそうな台詞ですね。とまぁそれはさておき、classを宣言するときにsealedとつけると、そのクラスから派生クラスを禁じることができます。 // sealedをつける sealed class CBase { } class C…