2013-02-01から1日間の記事一覧

オーバーライドされた基底クラスのメソッドの呼び出し方

C#

プログラミングC# 第6版 4.5 メソッドを派生クラスでオーバーライドした時に、基底クラスのオーバーライドされたメソッドをどうやって呼び出すかという話。 using System; class CBase { public virtual void Foo () { Console.WriteLine("CBase.Foo"); } } …

internalアクセス修飾子

C#

C++にもあるアクセス修飾子ですが、C#にはprivate,public,protectedの他にinternalというアクセス修飾子があります。同一プロジェクト内でだけアクセスのできる修飾子みたいです。どういうことかというと、同一プロジェクト内であればpublicとまったく同じと…

virtualとoverrideによるメソッドの上書き

C#

プログラミングC# 第6版 4.3.2 さてここもC++経験者は注意が必要です。virtualの動作がC++とC#で少し違います。まずは以下の例を確認してみます。 using System; class CBase { // 基底クラスのメソッドにvirtualをつける public virtual void Foo () { Cons…

継承とnewキーワード

C#

プログラミングC# 第6版 4.3.1 継承の仕方はC++とほぼ変わらないですね。ひとつC++とは違い、注意する点がありました。以下のコードです。 using System; class CBase { public void Foo () { Console.WriteLine("CBase.Foo"); } } class CClass : CBase { p…

オブジェクト初期化子

C#

プログラミングC# 第6版 3.7 オブジェクト生成時に生成側でオブジェクトの初期化のための処理を行うことができるというものみたいです。 using System; class CSample { public int foo; public int bar; } class Program { static void Main () { // オブジ…

オプション引数と名前付き引数

C#

プログラミング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…

抽象基底クラス、abstract

C#

プログラミングC# 第6版 4.7 class宣言をするときにabstractをつけると、派生してからじゃないとオブジェクトが生成できないようになります。 using System; // abstractをつける abstract class CClass { } class Program { static void Main () { CClass c…

派生を断固許さない。それがsealed

C#

プログラミングC# 第6版 4.6 「派生を禁ずる!」まるでヒョウが言いそうな台詞ですね。とまぁそれはさておき、classを宣言するときにsealedとつけると、そのクラスから派生クラスを禁じることができます。 // sealedをつける sealed class CBase { } class C…