C# 基本構文
C# はオブジェクト指向プログラミング言語です。オブジェクト指向のプログラム設計方法では、プログラムは相互に作用するさまざまなオブジェクトで構成されます。同種のオブジェクトは通常、同じ型を持ちます。つまり、同じ class 内にあります。
例えば、Rectangle(長方形)オブジェクトを例に挙げます。これは length と width プロパティを持ちます。設計によっては、これらのプロパティ値を受け取り、面積を計算し、詳細を表示する必要があります。
Rectangle(長方形)クラスの実装を見て、C# の基本構文について説明しましょう:
例
namespace RectangleApplication
{
class Rectangle
{
// メンバー変数
double length;
double width;
public void Acceptdetails()
{
length = 4.5;
width = 3.5;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
試してみる »
上記のコードがコンパイルおよび実行されると、次の結果が生成されます:
Length: 4.5 Width: 3.5 Area: 15.75
usingキーワード
すべての C# プログラムの最初のステートメントは次のとおりです:
using System;
usingusing キーワードは、プログラムに名前空間を含めるために使用されます。プログラムには複数の using ステートメントを含めることができます。
classキーワード
classclass キーワードはクラスを宣言するために使用されます。
C# のコメント
コメントはコードを説明するために使用されます。コンパイラはコメントの項目を無視します。C# プログラムでは、複数行コメントは/*で始まり、文字*/で終了します。次に示すとおりです:
/* 这个程序演示 C# 的注释 使用 */
単行コメントは//記号で表されます。例:
// この行はコメントです
メンバー変数
変数はクラスのプロパティまたはデータメンバーであり、データを格納するために使用されます。上記のプログラムでは、Rectangleクラスには、次の2つのメンバー変数があります:lengthとwidth。
メンバー関数
関数は、指定されたタスクを実行する一連のステートメントです。クラスのメンバー関数はクラス内で宣言されます。例として挙げた Rectangle クラスには、次の3つのメンバー関数が含まれています: AcceptDetails、GetAreaとDisplay。
クラスのインスタンス化
上記のプログラムでは、クラスExecuteRectangleは、次を含むMain() メソッドとインスタンス化Rectangleを行うクラスです。
識別子
識別子は、クラス、変数、関数、またはその他のユーザー定義項目を識別するために使用されます。C# では、クラスの命名は次の基本ルールに従う必要があります:
- 識別子は文字、アンダースコア、または@で始まり、その後に一連の文字、数字(0 - 9)、アンダースコア(_)、@ を続けることができます。
- 識別子の最初の文字は数字にできません。
- 識別子には、スペースや記号(? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \ など)を含めることはできません。
- 識別子を C# キーワードにすることはできません。ただし、@ プレフィックスが付いている場合は例外です。例えば、@if は有効な識別子ですが、if はキーワードであるため無効です。
- 識別子は大文字と小文字を区別します。大文字と小文字は異なる文字として扱われます。
- C# のクラスライブラリ名と同じにすることはできません。
C# キーワード
キーワードは、C# コンパイラによって事前定義された予約語です。これらのキーワードは識別子として使用できません。ただし、これらのキーワードを識別子として使用したい場合は、キーワードの前に @ 文字をプレフィックスとして付けることができます。
C# では、get や set のように、コードのコンテキストにおいて特別な意味を持つキーワードがいくつかあり、これらはコンテキストキーワード(contextual keywords)と呼ばれます。
次の表に、C# の予約キーワード(Reserved Keywords)とコンテキストキーワード(Contextual Keywords)を示します:
| 予約キーワード | ||||||
| abstract | as | base | bool | break | byte | case |
| catch | char | checked | class | const | continue | decimal |
| default | delegate | do | double | else | enum | event |
| explicit | extern | false | finally | fixed | float | for |
| foreach | goto | if | implicit | in | in (generic modifier) | int |
| interface | internal | is | lock | long | namespace | new |
| null | object | operator | out | out (generic modifier) | override | params |
| private | protected | public | readonly | ref | return | sbyte |
| sealed | short | sizeof | stackalloc | static | string | struct |
| switch | this | throw | true | try | typeof | uint |
| ulong | unchecked | unsafe | ushort | using | virtual | void |
| volatile | while | |||||
| コンテキストキーワード | ||||||
| add | alias | ascending | descending | dynamic | from | get |
| global | group | into | join | let | orderby | partial (type) |
| partial (method) | remove | select | set | |||
トップレベルステートメント(Top-Level Statements)
C# 9.0 で、トップレベルステートメント(Top-Level Statements)の概念が導入されました。これは、開発者がファイルの最上位レベルで直接ステートメントを記述でき、メソッドやクラスにカプセル化する必要がない新しいプログラミングパラダイムです。
特徴:
-
クラスやメソッドが不要:トップレベルステートメントを使用すると、クラスやメソッドを定義せずに、ファイルの最上位レベルで直接コードを記述できます。
-
ファイルがエントリポイント:トップレベルステートメントを含むファイルは、以前の C# の
Mainメソッドと同様に、プログラムのエントリポイントと見なされます。 -
自動
Mainメソッド:コンパイラは自動的にMainメソッドを生成し、トップレベルステートメントをMainメソッドの本体とします。 -
ローカル関数のサポート:クラスを定義する必要はありませんが、トップレベルステートメントのファイル内でローカル関数を定義できます。
-
優れた可読性:単純なスクリプトやツールの場合、トップレベルステートメントは可読性と簡潔性を向上させます。
-
小規模プロジェクトに適している:トップレベルステートメントは小規模プロジェクトやスクリプトに非常に適しており、コードをすばやく作成および実行できます。
-
既存コードとの互換性:トップレベルステートメントは既存の C# コードベースと一緒に使用でき、既存のコードに影響を与えません。
従来の C# コード- トップレベルステートメントを使用する前は、次のように C# プログラムを作成する必要がありました:
例
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
トップレベルステートメントを使用した C# コード- トップレベルステートメントを使用すると、次のように簡略化できます:
例
Console.WriteLine("Hello, World!");
トップレベルステートメントは、変数の宣言、メソッドの定義、例外処理など、すべての一般的な C# 構文をサポートします。
例
using System.Linq;
// トップレベルステートメントでの変数宣言
int number = 42;
string message = "The answer to life, the universe, and everything is";
// 変数の出力
Console.WriteLine($"{message} {number}.");
// メソッドの定義と呼び出し
int Add(int a, int b) => a + b;
Console.WriteLine($"Sum of 1 and 2 is {Add(1, 2)}.");
// LINQ の使用
var numbers = new[] { 1, 2, 3, 4, 5 };
var evens = numbers.Where(n => n % 2 == 0).ToArray();
Console.WriteLine("Even numbers: " + string.Join(", ", evens));
// 例外処理
try
{
int zero = 0;
int result = number / zero;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
注意事項
- ファイルの制限:トップレベルステートメントは1つのソースファイルでのみ使用できます。プロジェクト内にトップレベルステートメントを使用するファイルが複数あると、コンパイルエラーが発生します。
- プログラムのエントリポイント:トップレベルステートメントを使用すると、そのファイルに Main メソッドが暗黙的に含まれ、そのファイルがプログラムのエントリポイントになります。
- スコープの制限:トップレベルステートメント内のコードはグローバルスコープを共有します。つまり、トップレベルステートメントで定義された変数とメソッドはファイル全体からアクセスできます。
トップレベルステートメントは、コード構造の簡素化、学習難易度の低下、開発速度の向上において顕著な利点があり、簡単なプログラムやスクリプトの作成に特に適しています。
その他の拡張