概要 同じプログラムコードを複数の場所で何度も利用したい場合があります。 例えば、今まで説明してきた中で、たびたび「入力を促すメッセージを出力して、整数を入力してもらう」という場面が出てきました。 そのために何度も同じようなソースコードを書いてきました。 「反復処理」のところでも説明しましたが、 同じコードを複数の箇所に書くのはプログラムを管理していく上で好ましくありません。 そこで、こういう頻繁に使われる機能をまとめて、何度も呼び出せるようにしたのが関数(function)です。 (追記したい) 何度も出てくる処理でなくても、 処理に名前が付く単位で関数化すべき。 明確な名前を付ける(名前が付く単位で区切る)のがよいコードを書くコツ。 ポイント 何度も出てくる処理は関数化する。 数学の「関数」から取った名前。プログラミング用語的には、他に、サブルーチン、プロシージャ(手続き)、メソッド等
「継承」で説明した通り、C#ではクラスの多重継承を認めていません。すなわち、どんな型も基底クラスは1つだけです。制限なしの多重継承は実装のコストが結構高く、メリットに対してコストが見合わないというのが一般的な見方です。ここでは、その多重継承にかかるコストについて説明していきます。 オブジェクトのメモリ レイアウト 単一継承時のメモリ レイアウト 多重継承を認めた場合のメモリ レイアウト ダイヤモンド問題 実際にほしかったものはインターフェイス オブジェクトのメモリ レイアウト 多重継承を認めた場合に問題となるのは、オブジェクトのメモリ レイアウトです。そこでまず、このメモリ レイアウトについて軽く説明しておきます。 実行時型情報で少し触れていますが、クラスや構造体などの複合型は、実行時にはメモリ上でどうレイアウトされるかが決まっています。 例えば、以下のようなクラスがあったとします。 cl
本項では、識別子のスコープ(有効な範囲、異なるものに同じ名前を付けれない範囲)とオブジェクトの寿命(作ったオブジェクトがいつまで生きているか、ガベージ コレクションの対象外になっているか)について説明していきます。 ※ 本項では、現時点までに説明していない概念がいくつか出てきます。現時点で説明済みのものは変数くらいなので、とりあえず変数が絡むところだけ読んで、残りは後々読み直してください。 概要 識別子のスコープ 入れ子のブロック 例外1: メンバーとローカル変数 例外2: 型と名前空間 引数 ループ変数 変数を使える範囲 オブジェクトの寿命 ラムダ式と変数の昇格 forステートメントのループ変数 foreachステートメントのループ変数 イテレーターと非同期メソッド C# 7での新しいスコープ ルール 式中での変数宣言 ラムダ式 余談: is 演算子で新しい変数を導入 ローカル関数を使え
EXEファイルには具体的に、どのような情報が格納されているのでしょうか。通常、Visual C++やVisual Basic、Delphiなどのコンパイラが自動的に生成してくれるので、考えることはありませんが、今回はこの疑問に真っ向から勝負を挑んでいきます。 EXEは魔法の箱? 筆者は「ActiveBasic」というネイティブコンパイラ搭載型の統合開発環境を開発しています。コンパイラ開発イコール、EXEファイルの仕様をかなり細かい部分まで理解しなければならないという状況に置かれることを意味します。 Javaや.NETが騒がれる昨今、あえてEXEファイルというディープな内容に迫っていこうということで本稿へ筆を入れ始めたわけですが、やはり、この手の話題はプログラマ魂がうずきます。このように感じる技術者の方は多いはず。しかしその反面、世の中にはアセンブラを書けないプログラマが数多く存在すると聞き
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く