C#を用いて、任意の文字列をコンソールに標準出力する方法をソースコード付きで解説します。
## 【c#】基本構造(文字列の標準出力)
C#では、Console.WriteLineメソッドで、任意の文字列をコンソール上に表示できます。
動画解説
サンプルプログラムのソースコードは下記の通りです。
// 名前空間Sampleを定義 namespace Sample { // クラス(Test)を定義 class Test { // Mainメソッド static void Main () { // エクスカリバーと表示します(コメント) System.Console.WriteLine ("エクスカリバー!"); // 命令の終端にセミコロン(;)をつける } } } /* 複数行のコメントは このように記述します。 */
用語 | 概要 |
---|---|
名前空間、クラス、メソッド | ここでは詳しく解説しないが、プログラムが大規模になっても複雑にならないよう階層的に整理する仕組みというイメージ。(名前空間 -> クラス -> メソッドという階層構造) |
セミコロン; | 一つの命令の終端を表す |
コメント | プログラムの各場所にメモを残せる機能です。後でプログラムを見返したときに何をやっているか思い出しやすいよう文章を残します。「// ~」と記述すると、~の部分がプログラムとして実行されないため好きな文章を入れることができます。「//」だと1行だけコメントを残せますが、複数行残したい場合は、「/* ~ */」を使います。 |
ホワイトスペース | ホワイトスペース(改行、タブ、空白など)は識別子の区切りとして用いられます。「class Test」なら間の空白が識別子の区切りとなり、classキーワードとTestというクラス名に区切られます)もし、classTestと記述すると、classTestキーワードと識別され、そのようなキーワードは存在しないためエラーとなります。 |
ブロック | 中確固{}で囲まれた部分を「ブロック」といいます。ブロックは複数の要素を1つにまとめる機能があります。上記のプログラムだとクラスProgramは名前空間Testのインライン(内側に含まれる要素)となり、メソッドMainはクラスTestのインラインとなります。 |
以下のような要素とブロックがあった場合、「要素 Bは要素 Aのインライン」となり、「要素 C は 要素 B のインライン」となります。
要素 A { 要素 B { 要素 C { 処理 A } } }
## 【字下げ】見やすいプログラム
C#では、ブロックが1段階深くなるごとに、字下げ(左に空白)を開けます。
これを字下げといいます。
これは、プログラムの階層構造を見やすくするための行うためで、字下げを行わなくてもエラーになりませんが、読みづらいプログラムとなり他のプログラマにとって不親切な行為となります。
字下げを一切しない悪い例
// 名前空間Sampleを定義 namespace Sample { // クラス(Test)を定義 class Test { // Mainメソッド static void Main () { // エクスカリバーと表示します(コメント) System.Console.WriteLine ("エクスカリバー!"); // 命令の終端にセミコロン(;)をつける } } }
以下のように、ブロックの階層が深くなるごとに、要素の左に4個ずつ半角スペースを入れるのが基本です。
こうすることで、どのブロックの要素かわかりやすくなります。
// 名前空間Sampleを定義(名前空間内のブロック要素は半角スペースを8個左にあける) namespace Sample { // クラス(Test)を定義(クラス内のブロック要素は半角スペースを8個左にあける) class Test { // Mainメソッド(クラス内のブロック要素は半角スペースを12個左にあける) static void Main () { // エクスカリバーと表示します(コメント) System.Console.WriteLine ("エクスカリバー!"); // 命令の終端にセミコロン(;)をつける } } }
## 【名前空間とは】usingディレクティブ
冒頭の「using System;」の「System」などをnamespace(名前空間)といいます。
名前空間は、変数などが名前衝突してしまうのを回避し、管理するために導入されたスコープ定義機能です。
「using System;」は「Systemという名前空間を利用する」ことを意味し、プログラム中で名前空間の指定を省略して記述できるようになります。
つまり「using System;」と記述すれば「System内に存在するクラスの指定は、Systemを省略して記述できる」ようになります。この機能をusingディレクティブといいます。
using System; namespace Test { class Program { static void Main() { Console.WriteLine("エクスカリバー!"); } } }
上記の例では、元々は「System.Console.WriteLine()」だったものが、「using System;」と記述してやることで、「Console.WriteLine()」で呼び出し可能となっています。
これまで、コンソール画面に文字列を出力するのに、「Console.WriteLine()」を使用してきました。
もし「using System;」と記述しなかった場合は「System.Console.WriteLine()」と記述する必要があります。
この指定の仕方は「Systemフォルダ -> Consoleフォルダ -> WriteLineファイル」を実行するというようなイメージです(階層は「.」(ドット)記号で区切って表す)。
実際には、「System名前空間 -> Consoleクラス -> WriteLineメソッド」を呼び出しています。
namespace Test { class Program { static void Main() { System.Console.WriteLine("エクスカリバー!"); } } }
コメント