1.C#言語の特徴
この記事では、当社の新人エンジニア研修の参考にC#を解説します。
第1章となる今回はC#言語を初めて学ぶ皆さんが知っておきたいことをまとめました。
C#言語の特徴(この新人エンジニア研修でC#を選択している理由とも言えます)は、以下の4点です。
①WindowsやLinux、macOSなど、.NETランタイム(.NET Runtime)を利用することで幅広く実行可能。自宅学習やマルチプラットフォームに対応できる。
②現在主流のプログラミングパラダイムであるオブジェクト指向型言語の基本を学ぶことができる。
③デスクトップアプリケーション、ゲーム(Unity)、ウェブアプリケーション(ASP.NET)、クラウドとの連携など、幅広い分野で活用されている。
④多くの言語(C/C++/Javaなど)と類似点が多いため、次に他の言語を学ぶ際に容易に習得できる。
多くの高級言語の祖であり、汎用プログラミング言語として名高いC言語を学習しても、上記すべてのメリットを同時には得られません。C言語はマルチプラットフォームに対応はしていませんし、ハードウェアよりの緻密で細かい処理は得意ですが、大規模なアプリの開発には向いていないからです。また、AI分野で注目度が高いPython、国内発祥のRuby、Apple製品で人気が高まっているSwiftなどの言語も魅力的ではありますが、③の部分(多様なタイプのアプリ開発やWindowsアプリなどでの優位性)を考えれば、C#の有用性は大変高いと言えるでしょう。
当社の新人エンジニア研修で最も多いのはJavaを使った講習ですが、今後C#をプログラミング言語として使うことも多くなるのでは、と考えています。
この研修では、まずプログラムの基本知識である変数、演算子、メソッドについて学びます。次にオブジェクトとは何か?その概要を学習します。その上で、更に深いプログラミングの構文やオブジェクト指向の考え方について学んでいきます。
2.C#の開発ツール、Visual Studio
C#でプログラムを開発するツールは、MicrosoftのVisual Studioが一般的です。ここまでに紹介した他の言語では、様々なエディタやツールが会社や経緯によって採用されるのですが、ことC#やVBなど、Microsoftが開発した言語には、Visual Studioを用いるのが定番です。この講義は、Visual Studioの無償版である、Visual Studio Community 2022(C# バージョン10.0)が皆さんのPCにインストール済みであることを前提に進めることにいたします。
まずは、学習用のソリューションを作成しましょう
ソリューションは、ある一つの目的を持って作られたいくつかのアプリケーションの集合と考えてくだされば良いと思います。例えば、商社向けのソリューションには、在庫管理、顧客管理や、給与計算その他諸々のアプリケーションが含まれる、というようなイメージです。各アプリケーションは、ソリューションの中に別々のプロジェクトとして格納されます。つまり、一つのソリューションは複数のプロジェクト(=アプリケーション)が集まって構成されるわけですね。C#の学習を行う第一歩として、Visual Studioに新しいソリューションを作りましょう。
最初に、アプリケーションを入れるフォルダを作成します。Cドライブの直下に、workspaceというフォルダを作っておいてください。準備が出来たら、Visual Studioを起動しましょう。最初の画面は以下のようになります。
上図の、「新しいプロジェクトの作成」をクリックします。すると、次のような画面になります。
ここでは、図の①「コンソールアプリ」をクリックしてください。コンソールアプリとは、プログラムが出力する文字を、コマンドプロンプトのような真っ黒な画面に表示するだけの単純なアプリケーションで、C#の基礎を学ぶのに適しています。図の②「次へ」ボタンを押します。
①プロジェクト名はsampleとして、②場所を先ほど作ったworkspaceに指定しましょう。ソリューション名は自動でプロジェクト名と同じになります。一つだけプロジェクトを持ったソリューションを作るやり方です。準備が出来たら③の「次へ」ボタンを押しましょう。
最後の画面は何も変更せずに、「作成」ボタンを押しましょう。すると、次のような画面になります。
Visual Studioは非常に多機能なので、一度に使い方を覚えることはありません。まずは基本的な部分から覚えましょう。
①このソリューションに含まれるプロジェクトと、それに属する部品などが表示されます。
②ここでファイルを編集します。Program.csは、Visual Studioが自動生成したC#のプログラムファイルです。
③エラーメッセージや実行時のログなどが表示されます。
④ここは、Visual Studioの動作モードを切り替えます。Debugは、開発中にバグを見つけやすくするためのモードです。
⑤デバッグモードでプログラムを実行するボタンです。
⑥デバッグ無しでプログラムを実行するボタンです。
3.C#プログラムの実行
では早速このプロジェクトを実行してみましょう。⑤のボタンを押してみてください。こんな画面になりますね。
出力にデバッグというタブができて、なにやらたくさんのレポートが表示されています。コマンドプロンプトには、最初にHello World!という文章が、その後に実行時のレポートがありますね。
実行されたのが、Program.csというファイルに書かれたコードであることがわかると思います。.csは、C#のコードが書かれたファイルであることを示す拡張子です。Program.csには、コンソールにHello World!と表示する処理が書いてあったわけです。
では、同じように⑥のボタンを押してみて、⑤のボタンの時とどう違うか見比べてみてください。違いがわかったら発表してみましょう。このように、Visual Studioでは開発はデバッグモードで行い、お客様に出荷するときにはReleaseモードでコンパイルしたアプリケーションを提出する、というやり方をします。
それではここで、C#でプログラムコードが実行されるまでの過程を少し詳しく解説しましょう。以下のような2つのステップを経ます。
- プログラムコードがコンパイルされて、中間言語(IL: Intermediate Language)コードが生成される。
- CLR(Common Language Runtime C#では.NETランタイム)によってILコードが実行される。
これが例えばC言語の場合ですと、
- プログラムコードがアーキテクチャ(OS等)に応じた形でコンパイルされてマシン語が作られる。
- マシン語が実行される。
という流れになっています。
つまり、下図のようにCLRが各種OSとの仲立ちをしてくれるため、C#プログラマーはアーキテクチャを意識せずにコードを記述しやすくなっているのです。

新人エンジニアが最初に知っておきたいCLRの知識
CLRがOSの違いを吸収してくれます。
C#は、
“Write once, run anywhere”
「一度コードを書けば、どこでも実行できる」
(.NETやMonoなどのクロスプラットフォーム対応によって)
という優れた特徴を有していると言えます。(※実際には対応環境を揃える必要があるので、完全に意識不要とはいきませんが、、、)
では、Program.csのWorldの部分をご自分の名前に書き換えて、再度実行してみてください。名前は半角英字のローマ字で書きましょう。
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, ここを自分の名前に変える!");
コマンドプロンプトにご自分の名前が表示されましたか?何故名前を半角英字のローマ字にしたかというと、皆さんにプログラミングにおける半角文字と全角文字の扱いの違いに注目して頂きたかったからです。キーボードから入力できる文字には全角文字と半角文字があります。数値や英字・記号を入力する際には全角文字が入らないように気をつけてください。というのも、大抵のプログラミング言語は、半角文字でしかコードを書けません。特に全角の見えない文字(全角のスペースなど)は、予期しないエラーを引き起こす筆頭の原因になります。全角の英数字や記号が入らないように日本語入力システム(IME)の設定を変えることもできます。IMEによって設定方法が異なるので、興味があれば調べてみてください。
では、もう一度プログラムが実行される過程を振り返ってみましょう。
- プログラムコードがコンパイルされてILコードが作られる
- ILコードがCLRによってメモリにロードされ、実行される
- 実行結果が表示される
①のところでは拡張子.cs
というファイルを作成し、コードを記述します。②では、Windowsの場合.exe
ファイルが生成され、それを実行することになります。
※なお、Program.cs
というソースファイルと、sample.exe、
というファイルがソリューションのどこかに作られています。どこに作られたか、講師の指示の下で探してみてください。sample.dll
ここで大事なのは、このProgram.cs
(ソースファイル)自体が直接「動作」しているわけではない、ということです。現在のノイマン型コンピュータでは、ソースコードをコンパイルした結果(ILコードやマシン語)がメモリにコピー(ロード)されて、はじめて動作が可能になります。この点は後で重要になってきますので、しっかり覚えておきましょう。
Program.csというソースファイルがVisual Studioによって自動的に.dllや.exeという実行可能なファイルにコンパイルされた後、それがメモリに読み込まれて実行されている、という流れです。
C#のソースファイルを手動でコンパイルすることもできますが、実際の開発ではVisual Studioなどの統合開発環境(IDE)が自動でコンパイルを行ってくれます。ショートカットキーひとつでコンパイルと実行を同時にしてくれるので便利です。
(「compile」は「一気に翻訳する」という意味です。それとは別に「interpret」「1文ずつ通訳する」方式のスクリプト言語もあります。気になる方は調べてみましょう。)
ここまでに出てきた用語をまとめます。
覚える必要はないですが、下図で概要を理解してください。

まず、みなさんがソースコードを入力するのがIDEです。IDEは.NET SDKを利用しています。.NET SDKの中にはC#コンパイラ(Roslynなど)や実行環境(.NET Runtime)などが含まれます。
これからIDEを使って開発をしていると、これら“縁の下の力持ち”の存在を忘れがちですが、時々思い出すようにしましょう。ここでは、さらに詳しくC#言語のプログラムコードを見ていきます。
4.C#プログラムの構成
先ほどのProgram.cs
をもう一度見てみましょう、こう表示されていると思います。
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, あなたの名前");
//は、コメントと言って、実行されない注釈などを書くための書き方です。なので、実行部分は一行だけの簡単なコードになっていますが、実はこれ、省略形なんです。ちゃんと書くと、以下のようになります。
namespace sample;
using System;
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, あなたの名前");
}
}
Program.csを上記コードで置き換えて、もう一度実行ボタンを押してみてください。同じ結果が得られると思います。
1行目の
namespace sample;
は、このProgramというクラスは、sampleという場所にありますよ、という宣言です。この場所のことを名前空間と言います。
2行目の
using System;
は、C#の標準ライブラリ(便利なデータや処理の集合体)であるSystem
名前空間にあるクラスを使いますよ、という宣言です。
続いて、
public class Program
{
Console.WriteLine("Hello, あなたの名前");
}
この部分でProgramという名前のクラスを定義して、実行時の処理も記述しています。Console.WriteLine()は、さきほどのSystemという場所にあるConsoleというクラスが持っているWriteLineという処理を呼び出すコードです(詳細は後述)。
それではオブジェクト指向プログラミングの導入として、クラスがどういうものなのか、まずは概要を把握しましょう。
5.クラスとオブジェクト
クラスは、オブジェクト指向型プログラミングにしか出てこない用語で、C言語等の手続き型言語には無い概念です。(厳密にはC言語にもクラスの原型となるような構造体や共用体というものは存在します)。オブジェクト指向型言語のC#を学ぶ上で、クラスとオブジェクトの概念と動作の仕組みの理解はとても重要です。
まずは大前提として、アプリが動作するためには、データと処理という2つの要素が必要だということを踏まえましょう。例えばECサイトのアプリが動作するためには、商品の情報(商品名、特徴、価格などのデータ)や会員情報(氏名、住所、TEL等のデータ)と、ある商品をカートに入れる、カートにある商品の決済をする、などの処理が必要になる、ということです。
ソースファイルに書かれたコードがコンパイルされて実行可能な形になり、それがメモリに読み込まれて実際の動作を行う、という点では、手続き型言語であるCもオブジェクト指向型言語のC#も変わりません。では何が違うのでしょうか。メモリの使い方が違うのです。下図をご覧ください。
左側がC言語、右側がC#のメモリの状態を表しています。Cの方は、データの領域と処理(プログラム)の領域が完全に分かれており、それぞれが使うメモリの量も一定です。プログラムが都度データ領域に必要な情報を取りに行き、処理後にデータを更新しながら処理を進めていくという方式です。Cではデータを記述するファイルと、処理を記述するファイルは、基本的に分ける習慣があります。動作するものはここ、情報はこっち、というように完全に分けることで、各ファイルの記述を単純化し、少しでも読みやすくしているのですね。この方式は、シンプルで高速、使用メモリ量の把握も容易なのが特長です。
それに対し、C#では会員の情報と会員向けの処理が一つの風船に入っていますね。この風船がオブジェクトのモデルです。ロールプレイングゲームのように、アプリ全体の処理をいくつかに分けて役割分担し、その役を演じるのに必要なデータと処理を合体させて一つの物(オブジェクト)に持たせる、というのがオブジェクト指向型言語の大きな特徴です。会員のオブジェクトは、会員向けの処理とそれに必要なデータ、両方を自分の中に持っているわけです。
そして、このオブジェクトを必要に応じてメモリ上に複数構築し、不要になった物から捨てていく、という仕組みを言語自体が持っています。例えば会員が10人、商品が100個あれば、メモリ上に最大110個のオブジェクトが同時に存在する可能性があるのです。なので、C#ではアプリを動作させるのに必要なメモリの量は、ある程度の予測は可能なものの、具体的には動作させてみないとわかりません。何人が動作させるのか、どう動作させるのか、といった不確定要素によって、メモリの使用量が全く変わってくるからです。
このオブジェクトを生成する設計図となるのが、クラスです。C#は、クラスのソースファイルに書かれた記述に忠実に、メモリ上にオブジェクトを生成します。オブジェクト指向型言語には、データと処理を一体化してアプリの部品構成をわかりやすくし、且つ各部品の独立性を保ち、大規模で複雑なアプリケーションを設計、開発、保守しやすくする、という特長が有ります。
つまり、オブジェクト指向とは、アプリケーションを「クラス」の集合体とみなしましょう、という考え方のことなのです。
CとC#の違い、クラスとオブジェクトの概要は把握できたでしょうか。今はあまり難しく考えずに「C#の方が役割分担を決めやすそうだな」とか、「Cの方がシンプルだな」とか、そういう印象を持って頂ければ、と思います。
クラスとその使い方には重要な学ぶべきことがまだまだありますが、それは今後の講義でおいおい触れていきましょう。今はオブジェクト指向言語の仕組みと、クラスとオブジェクトの概要をしっかり把握できれば十分です。
6.本記事の方針
クラスには、自分たちで作るもののほか、.NET標準ライブラリとして、Microsoftやコミュニティがあらかじめ作ってくれているものがあります。また、サードパーティーのライブラリや自社で開発したライブラリなど、世の中には膨大なクラスが存在します。
プログラムでやりたいことがある場合、まず「既存のクラスやライブラリを活用できないか」を考えてください。なぜなら、自作クラスにはバグが入り込む可能性があるからです。多くの人が利用している実績あるクラスのほうが信頼度が高いケースも多いのです。
※なんでも自作にこだわることを「車輪の再発明」と言って戒めることがあります。
ここで、本記事の方針を説明します。
この記事では、
- 当社が受講者に課す最終課題をやり抜く上で必要となるクラスを中心に紹介します。
- プログラミング言語は国際語であるという点を踏まえて英語の意味から解説します。
ただし、C#のすべてを網羅しているわけではありませんのでご了承ください。
7.クラスのメンバ(フィールドとメソッド)
※以下は少し高度な論点です。詳しくはこの連載全体を通じてお伝えしますが、ここでも簡単に触れておきます。
すべてのソースコードはクラスに属する必要があります。クラスの識別のためにはクラス名が必要で、クラス名は自由につけられますが、慣習として先頭を大文字にします(PascalCase)。例:Example01
下図のとおり、クラスは主としてフィールド(field)とメソッド(method)を持つことができます。

- フィールド: 「場」を表し、データやオブジェクトの置き場所のこと。
- メソッド: 「方法」を表し、処理や操作のこと。
たとえば、新入社員オブジェクトであれば誰でも「プログラミング経験年数」や「所有パソコン」といったフィールドを持ち、また「挨拶をする」「プログラムを書く」などのメソッドを持っていると考えられます。
C#のメソッドの基本書式は以下の通りです。
[修飾子] 戻り値の型 メソッド名(引数1の型 引数1, 引数2の型 引数2, …)
{
// メソッドの処理
}
{}
ブロックの中に命令文を書きます。{
と}
の対応漏れは初学者に多いミスです。気をつけましょう。
Main()
メソッドは、C#で特別な意味を持つメソッドです。CLRがプログラム実行時に最初に探す「エントリーポイント」(開始位置)となります。必ずどこかのクラスに1つはMain
メソッドが必要です。
Main(string[] args)
という形で引数を持ちます。ここでargs
は仮引数です。実際の引数はコマンドラインから渡せますが、ほとんど使わない場合でもこの形が基本です。
public static void Main(string[] args)
{
...
}
public
、static
、void
は修飾子や戻り値の型にあたります。public
はアクセス修飾子(公開範囲)で、外部からでも呼び出せることを示します。static
はインスタンスを生成しなくても呼び出せるメソッドであることを示します(静的メソッド)。void
は戻り値がないことを意味します。
Console.WriteLine(...)
のようなメソッド呼び出しには、オブジェクト指向のエッセンスが詰まっています。私たちはメソッド名と引数リスト、そして戻り値の型さえ知っていれば、そのメソッドを呼び出せるのです。中身の仕組みを知らなくても利用できる、この抽象化(ブラックボックス化)こそがオブジェクト指向の特徴です。
8.エラーを恐れない
では、少し実験してみましょう。以下のコードを実行するとどうなるでしょうか?
public class Example02
{
public static void Main(string[] args)
{
Main(new string[] { "Hello" });
}
}
メインメソッドの中で自分自身のメインメソッドを呼び出しています。これを再帰処理といいます。呼ばれたメインメソッドの中でもさらに同じメインメソッドを呼び出すので、無限に呼び出しが続きます。今回は終了条件を設けていないため、結果的にエラーを起こして終了します。
実行すると以下のようなエラーが発生するでしょう。
Unhandled exception. System.StackOverflowException: Exception of type 'System.StackOverflowException' was thrown.
at Example02.Main(String[] args)
...
StackOverflowException
ですね。メソッドの呼び出し履歴を保持するスタック領域があふれた(オーバーフロー)ということです。
しかし、PC本体が物理的に壊れるわけではありません。C#のプログラムが原因でパソコン自体が故障することは基本的にありません。安心してどんどんエラーを出してください。
エラーはできるだけ早く起こるほうがいいと思いませんか? 後になって深刻化するより、早期に異常を検知してくれるほうが被害が少なくて済みます。C#は早め早めにエラーを通知してくれる設計になっています。エラーは大歓迎すべき存在とも言えます。
9.プログラムはメモリ上にロードされて実行される
先ほどのスタックオーバーフローの例で分かってほしいのは、メソッドはメモリのスタック領域に呼び出し順に積み上げられるということです。
Main → Main → Main → Main → …(無限に呼び出し)
のようにスタックが埋まってしまい、あふれてエラーになります。

繰り返しになりますが、ソースコードそのものが動いているのではありません。
ソースコードをコンパイルして得られた実行コードがメモリにロードされ、CPUによって実行されています。
public
はアクセス修飾子。static
は静的メソッドの意味。void
は戻り値がないという意味。
10.システムに必要なIPO

「システム」とは仕組みのことです。システムには必ず、Input → Process → Output という流れ(IPO)が存在します。
人間も1つのシステムと見れば、目や耳などで入力し(Input)、脳で思考・判断し(Process)、口や手足でアウトプット(Output)していますよね。C#プログラムも同じです。システムをさらに分割するとサブシステムになり、さらに小さく分解するとメソッド単位になります。
中学校時代に学んだ文字式、たとえば
y = 2x + 1
のように、xの値が変わればyの値も変わる。これが「引数」と「戻り値」に相当すると考えるとイメージしやすいでしょう。
11.コメントの入れ方
コメントは「人間に向けたメッセージ」です。他人、そして将来の自分に向けてのメモとして非常に重要です。
/**
* 画面表示
* 作成者 yamazaki
* 作成日 20XX/11/09
*/
public class Example03
{
public static void Main(string[] args)
{
// Hello Worldと画面に表示する
Console.WriteLine("Hello World");
}
}
C#のコメントには主に2つの方法があります。
/*
と*/
で囲んで複数行をコメントにする。//
を先頭につけて、その行をコメントにする。
さらに、///
で始まるコメントはXMLドキュメントコメントという形式になり、ツールを使って自動的にドキュメントを生成できます。
public class Example04
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World");
// Console.WriteLine("Goodbye World");
}
}
上記のようにコメントアウトすると、その部分は実行されなくなります。IDEにはコメント用のショートカットがあるので活用しましょう。
なお、納品するプログラムにはコメントアウトしたコードを残さないようにするのが一般的です。本書では冗長を避けるためコメントは最小限にしていますが、ソースコード学習用に重要箇所へコメントを入れるのは大いにおすすめです。
12.エラーへの対処
コンパイルするときにエラーが表示されることがあります。
たとえば、文末のセミコロン;
を忘れると
Example04.cs(4,40): error CS1002: ; が必要です
のようなエラーが表示されます。(実際のメッセージはIDEやコンパイラのバージョンによります)
このエラーメッセージをよく読まない人がいますが、エラーメッセージには非常に重要な情報が含まれています。
- Example04.cs(4,40) … Example04.csの4行目・列40付近に問題があることを示す。
エラーが出たらまずはメッセージをじっくり読み、それでも原因が分からなければ検索してみましょう。
C#のエラーには主に以下の3種類があります。
- 文法エラー (Syntax error) … コンパイル時に発見される
- 実行時エラー (Runtime error) … コンパイルは通るが、実行中にエラーが発生してプログラムが異常終了する
- 論理エラー (Logic error) … 実行はできるが、結果が意図と違う
当社の新人エンジニア研修ではIDEを使用するため、1の文法エラーはIDE上で即座に指摘してくれます。ただし、全角スペースなどメッセージが分かりづらいエラーもあるので注意しましょう。
2の実行時エラーは「例外処理」で対応します。
3の論理エラーは「テスト」や「デバッガ」で原因を追及します。
タイミングを見計らってデバッガの使い方も講師から説明があります。
13.標準出力
「Hello World」の文字列が表示された画面を「コンソール」といいます。C#の開発環境(IDE)には「Outputウィンドウ」「Debugコンソール」などの名称で用意されていることもありますが、いずれも「標準出力」と呼ばれるしくみを利用しています。
- 標準出力 … プログラムが標準的に利用する出力先。コンソールやIDEの出力ウィンドウなど。
C#で標準出力に出力したあと改行するには、
Console.WriteLine(出力内容);
と書きます。
改行を入れずに出力したい場合は、
Console.Write(出力内容);
です。
実行結果を目で確認できると、バグの修正(デバッグ)や動作確認がしやすくなります。目に見えない内部処理だけだと原因追及が難しいためです。
標準出力以外にも、ウェブページ(ASP.NETなど)に表示したりファイル出力したりする方法もあります。研修後半で扱う予定ですのでお楽しみに。
以上、C#の最初の一歩となる説明でした。
- 大文字と小文字は区別される
{
と}
は必ず1対1で対応させる{ }
で囲まれた範囲を「ブロック」と呼ぶ
といった基本ルールを守ることが重要です。また、コードの可読性を上げるため、インデント(字下げ)を適切に行いましょう。IDEのフォーマット機能を活用するのもおすすめです。
新入社員の方が呼び方に迷いそうな各種記号や、注意点などを章末にまとめていますので参考にしてください。
今後もオブジェクト指向の概念やクラス設計、デバッグやテストなど、さらに深い内容を研修で扱っていきます。C#をじっくり習得していきましょう。
以上、今回は「C#の特徴」について見てきました。後々にならないと意味の分からないところも多いと思います。研修をある程度進めてから改めて読むと良いと思います。
参考までにC#でよく使われる記号とその読み方および意味をまとめた表を掲載します。
記号 | 読み方 | 意味・用途 |
---|---|---|
. | ドット | メンバーアクセス演算子(クラスやオブジェクトのプロパティやメソッドにアクセス) |
; | セミコロン | 文の終わりを示す |
, | カンマ | 引数や変数の区切り |
: | コロン | 継承やインターフェースの実装で使用 |
:: | ダブルコロン | エイリアス指定(global::System など) |
() | かっこ、丸かっこ | メソッドの引数、キャスト、優先順位の指定 |
{} | 中かっこ、波かっこ | ブロック(クラス、メソッド、if文などの範囲) |
[] | 角かっこ | 配列、インデクサ、属性の指定 |
+ | プラス | 加算、文字列連結、インクリメント(++ ) |
- | マイナス | 減算、デクリメント(-- )、符号反転 |
* | アスタリスク | 乗算、ポインタ型(unsafeコンテキスト) |
/ | スラッシュ | 除算、コメントの開始(// , /* */ ) |
% | パーセント | 剰余(あまり)演算子 |
= | イコール | 代入演算子 |
== | イコールイコール | 等価比較演算子 |
!= | ノットイコール | 等しくないかの比較演算子 |
> | 大なり | 大なり比較演算子 |
< | 小なり | 小なり比較演算子 |
>= | 大なりイコール | 以上の比較演算子 |
<= | 小なりイコール | 以下の比較演算子 |
&& | アンドアンド | 論理積(AND) |
` | ` | |
! | ノット | 否定(NOT)演算子 |
& | アンド | ビットAND、参照渡し(ref , out )でも使用 |
` | ` | パイプ |
^ | キャレット | ビットXOR(排他的論理和) |
~ | チルダ | ビット反転 |
=> | ラムダ | ラムダ式 |
?? | ヌル合体演算子 | 左がnullなら右を返す |
?. | null条件演算子 | nullでない場合のみメンバーアクセス |
$ | ドル記号 | 文字列補間(例: $"Hello {name}" ) |
@ | アットマーク | 識別子のエスケープ、逐語的文字列 |
# | シャープ | プリプロセッサディレクティブ(#define , #if など) |
次回は、「2章. 変数でデータを再利用できるようになる」を学びます。