14言語・590の書き方
CODE ATLAS / 文法辞典

C#の書き方

よく使う文法・タグ・操作を、短い例で。42項目から探せます。

42 / 42項目

基本の形や関数内の抜粋を掲載しています。そのまま実行する例と準備方法は、各言語の「学ぶ」ページで確認できます。

変数と表示

型を指定して値を表示します。

Program.cs
string name = "海";
Console.WriteLine(name);
説明と練習この項目

条件分岐

条件に応じて処理を変えます。

Program.cs
int age = 20;
if (age >= 18) {
  Console.WriteLine("成人");
} else {
  Console.WriteLine("未成年");
}
説明と練習この項目

繰り返し

forで1から3まで表示します。

Program.cs
for (int i = 1; i <= 3; i++) {
  Console.WriteLine(i);
}
説明と練習この項目

関数

処理をまとめて呼び出します。

Program.cs
int Add(int a, int b) { return a + b; }
説明と練習この項目

配列

複数の文字列をまとめます。

Program.cs
string[] names = {"海", "空"};
Console.WriteLine(names[0]);
説明と練習この項目

クラス

関連する情報をまとめます。

Program.cs
var user = new User { Name = "海" };
Console.WriteLine(user.Name);
class User { public string Name = ""; }
説明と練習この項目

nullを扱う

値がない場合の代わりを用意します。

Program.cs
string? name = null;
Console.WriteLine(name ?? "名無し");
説明と練習この項目

var・const

型推論と定数。

Program.cs
var age = 20;
const int Limit = 10;
この項目

文字列の埋め込み

文章に値を入れる。

Program.cs
string name = "海";
Console.WriteLine(
quot;こんにちは、{name}さん");
この項目

List

追加できる一覧。

Program.cs
var names = new List<string> { "海", "空" };
names.Add("陸");
Console.WriteLine(names[0]);
この項目

Dictionary

キーと値の組を保存する。

Program.cs
var ages = new Dictionary<string, int>();
ages["海"] = 20;
この項目

foreach

一覧を順に処理する。

Program.cs
foreach (var n in new[] { 1, 2, 3 }) {
  Console.WriteLine(n);
}
この項目

switch式

値に応じた結果を選ぶ。

Program.cs
int day = 1;
string label = day switch { 1 => "月曜", _ => "その他" };
この項目

プロパティ

読み書きする項目を定義する。

Program.cs
class User {
  public string Name { get; set; } = "";
}
この項目

コンストラクター

作成時に値を設定する。

Program.cs
class User {
  public string Name;
  public User(string name) { Name = name; }
}
この項目

interface

実装すべき操作を定める。

Program.cs
interface IGreeter { string Greet(); }
class User : IGreeter {
  public string Greet() => "こんにちは";
}
この項目

ラムダ

小さな関数を書く。

Program.cs
Func<int, int> twice = n => n * 2;
この項目

LINQ

一覧を絞り、値を変える。

Program.cs
var nums = new[] { 1, 2, 3 };
var result = nums.Where(n => n > 1).Select(n => n * 2).ToList();

System.Linqを使用します。.NETコンソールの暗黙のusingでも利用できます。

この項目

try・catch

エラーを受け止める。

Program.cs
try { int.Parse("海"); }
catch (FormatException) { Console.WriteLine("数字ではありません"); }
この項目

TryParse

例外を使わず変換の成否を調べる。

Program.cs
if (int.TryParse("20", out int age)) {
  Console.WriteLine(age);
}
この項目

async・await

非同期の完了を待つ。

Program.cs
async Task<string> Greet() {
  await Task.Delay(100);
  return "こんにちは";
}
Console.WriteLine(await Greet());
この項目

ファイルを読む

保存した文字列を読む。

Program.cs
string text = File.ReadAllText("notes.txt");
Console.WriteLine(text);

System.IOを使用します。notes.txtを用意してください。

この項目

1行を入力する

ReadLineでキーボード入力を受け取ります。

Program.cs
string name = Console.ReadLine() ?? "";
Console.WriteLine(name);
この項目

文字を数値にする

Parseで数字が書かれた文字列を数値にします。

Program.cs
int count = int.Parse("12");

変換できない文字は例外になります。失敗を想定する場合はTryParseを使います。

この項目

丸める・絶対値

Mathでよく使う数値計算をします。

Program.cs
double rounded = Math.Round(3.6);
int distance = Math.Abs(-5);
この項目

短い条件分岐

条件に応じて使う値を選びます。

Program.cs
int age = 20;
string label = age >= 18 ? "成人" : "未成年";
この項目

nullのときの初期値

??で値がないときに使う値を指定します。

Program.cs
string? name = null;
string display = name ?? "ゲスト";

string?はnullable参照型を有効にしたC# 8以降の書き方です。

この項目

nullなら操作しない

?.は値があるときだけメンバーにアクセスします。

Program.cs
string? name = null;
int length = name?.Length ?? 0;

nullable参照型を有効にしたC# 8以降の例です。

この項目

区切って配列にする

Splitで区切り文字ごとに分けます。

Program.cs
string[] colors = "赤,青,白".Split(',');
Console.WriteLine(colors[0]);
この項目

置き換え・空白を除く

Trimで前後の空白を除き、Replaceで置き換えます。

Program.cs
string text = " hello ".Trim();
string message = text.Replace("hello", "こんにちは");
この項目

文字が含まれるか確認

ContainsやEndsWithで文字列を調べます。

Program.cs
string file = "memo.txt";
bool isText = file.EndsWith(".txt");
bool hasMemo = file.Contains("memo");
この項目

配列の長さと並べ替え

Lengthで長さを調べ、Sortで小さい順に並べます。

Program.cs
int[] scores = {90, 70, 80};
Array.Sort(scores);
Console.WriteLine(scores.Length);
この項目

リストを変更する

位置を指定して値を変えたり削除したりします。

Program.cs
var names = new List<string> {"海", "空"};
names[0] = "山";
names.RemoveAt(1);
Console.WriteLine(names.Count);

using System.Collections.Generic;が必要です。

この項目

辞書を安全に調べる

TryGetValueでキーがあるか確認して値を受け取ります。

Program.cs
var scores = new Dictionary<string, int> {{"海", 80}};
if (scores.TryGetValue("海", out int score)) {
  Console.WriteLine(score);
}

using System.Collections.Generic;が必要です。

この項目

重複しない集合

HashSetは同じ値を1回だけ持ちます。

Program.cs
var colors = new HashSet<string> {"赤", "赤", "青"};
Console.WriteLine(colors.Count);

using System.Collections.Generic;が必要です。

この項目

引数の初期値

引数を省略すると初期値が使われます。

Program.cs
int Add(int value, int extra = 1) {
  return value + extra;
}
この項目

名前を付けて引数を渡す

引数名を書くと値の意味が分かりやすくなります。

Program.cs
void Show(string name, int age) {
  Console.WriteLine(
quot;{name}: {age}"); } Show(name: "海", age: 20);

C# 9以降のトップレベルプログラムの例です。

この項目

複数の値をまとめる

タプルで関連する値をまとめて受け取れます。

Program.cs
var point = (X: 10, Y: 20);
Console.WriteLine(point.X);
この項目

状態に名前を付ける

enumで選択肢を名前付きの値にします。

Program.cs
enum State { Ready, Done }
// State.Readyで使う

enumはクラスの外、またはクラス内で宣言します。

この項目

クラスを引き継ぐ

共通の処理を引き継いで必要な部分を変更します。

Program.cs
class Animal {
  public virtual string Speak() => "声";
}
class Cat : Animal {
  public override string Speak() => "にゃー";
}
この項目

データ用の型を作る

recordはデータの値を比較しやすい型です。

Program.cs
record User(string Name, int Age);
// new User("海", 20)で作る

C# 9以降。型の宣言として書きます。

この項目

ファイルを自動で閉じる

usingで使い終わった資源を解放します。

Program.cs
using (var writer = new StreamWriter("memo.txt")) {
  writer.WriteLine("こんにちは");
}

using System.IO;が必要です。既存の内容を上書きします。

この項目