C#の書き方
よく使う文法・タグ・操作を、短い例で。42項目から探せます。
42 / 42項目
基本の形や関数内の抜粋を掲載しています。そのまま実行する例と準備方法は、各言語の「学ぶ」ページで確認できます。
変数と表示
型を指定して値を表示します。
string name = "海";
Console.WriteLine(name);条件分岐
条件に応じて処理を変えます。
int age = 20;
if (age >= 18) {
Console.WriteLine("成人");
} else {
Console.WriteLine("未成年");
}繰り返し
forで1から3まで表示します。
for (int i = 1; i <= 3; i++) {
Console.WriteLine(i);
}関数
処理をまとめて呼び出します。
int Add(int a, int b) { return a + b; }配列
複数の文字列をまとめます。
string[] names = {"海", "空"};
Console.WriteLine(names[0]);クラス
関連する情報をまとめます。
var user = new User { Name = "海" };
Console.WriteLine(user.Name);
class User { public string Name = ""; }nullを扱う
値がない場合の代わりを用意します。
string? name = null;
Console.WriteLine(name ?? "名無し");var・const
型推論と定数。
var age = 20;
const int Limit = 10;文字列の埋め込み
文章に値を入れる。
string name = "海";
Console.WriteLine(quot;こんにちは、{name}さん");List
追加できる一覧。
var names = new List<string> { "海", "空" };
names.Add("陸");
Console.WriteLine(names[0]);Dictionary
キーと値の組を保存する。
var ages = new Dictionary<string, int>();
ages["海"] = 20;foreach
一覧を順に処理する。
foreach (var n in new[] { 1, 2, 3 }) {
Console.WriteLine(n);
}switch式
値に応じた結果を選ぶ。
int day = 1;
string label = day switch { 1 => "月曜", _ => "その他" };プロパティ
読み書きする項目を定義する。
class User {
public string Name { get; set; } = "";
}コンストラクター
作成時に値を設定する。
class User {
public string Name;
public User(string name) { Name = name; }
}interface
実装すべき操作を定める。
interface IGreeter { string Greet(); }
class User : IGreeter {
public string Greet() => "こんにちは";
}ラムダ
小さな関数を書く。
Func<int, int> twice = n => n * 2;LINQ
一覧を絞り、値を変える。
var nums = new[] { 1, 2, 3 };
var result = nums.Where(n => n > 1).Select(n => n * 2).ToList();System.Linqを使用します。.NETコンソールの暗黙のusingでも利用できます。
try・catch
エラーを受け止める。
try { int.Parse("海"); }
catch (FormatException) { Console.WriteLine("数字ではありません"); }TryParse
例外を使わず変換の成否を調べる。
if (int.TryParse("20", out int age)) {
Console.WriteLine(age);
}async・await
非同期の完了を待つ。
async Task<string> Greet() {
await Task.Delay(100);
return "こんにちは";
}
Console.WriteLine(await Greet());ファイルを読む
保存した文字列を読む。
string text = File.ReadAllText("notes.txt");
Console.WriteLine(text);System.IOを使用します。notes.txtを用意してください。
1行を入力する
ReadLineでキーボード入力を受け取ります。
string name = Console.ReadLine() ?? "";
Console.WriteLine(name);文字を数値にする
Parseで数字が書かれた文字列を数値にします。
int count = int.Parse("12");変換できない文字は例外になります。失敗を想定する場合はTryParseを使います。
丸める・絶対値
Mathでよく使う数値計算をします。
double rounded = Math.Round(3.6);
int distance = Math.Abs(-5);短い条件分岐
条件に応じて使う値を選びます。
int age = 20;
string label = age >= 18 ? "成人" : "未成年";nullのときの初期値
??で値がないときに使う値を指定します。
string? name = null;
string display = name ?? "ゲスト";string?はnullable参照型を有効にしたC# 8以降の書き方です。
nullなら操作しない
?.は値があるときだけメンバーにアクセスします。
string? name = null;
int length = name?.Length ?? 0;nullable参照型を有効にしたC# 8以降の例です。
区切って配列にする
Splitで区切り文字ごとに分けます。
string[] colors = "赤,青,白".Split(',');
Console.WriteLine(colors[0]);置き換え・空白を除く
Trimで前後の空白を除き、Replaceで置き換えます。
string text = " hello ".Trim();
string message = text.Replace("hello", "こんにちは");文字が含まれるか確認
ContainsやEndsWithで文字列を調べます。
string file = "memo.txt";
bool isText = file.EndsWith(".txt");
bool hasMemo = file.Contains("memo");配列の長さと並べ替え
Lengthで長さを調べ、Sortで小さい順に並べます。
int[] scores = {90, 70, 80};
Array.Sort(scores);
Console.WriteLine(scores.Length);リストを変更する
位置を指定して値を変えたり削除したりします。
var names = new List<string> {"海", "空"};
names[0] = "山";
names.RemoveAt(1);
Console.WriteLine(names.Count);using System.Collections.Generic;が必要です。
辞書を安全に調べる
TryGetValueでキーがあるか確認して値を受け取ります。
var scores = new Dictionary<string, int> {{"海", 80}};
if (scores.TryGetValue("海", out int score)) {
Console.WriteLine(score);
}using System.Collections.Generic;が必要です。
重複しない集合
HashSetは同じ値を1回だけ持ちます。
var colors = new HashSet<string> {"赤", "赤", "青"};
Console.WriteLine(colors.Count);using System.Collections.Generic;が必要です。
引数の初期値
引数を省略すると初期値が使われます。
int Add(int value, int extra = 1) {
return value + extra;
}名前を付けて引数を渡す
引数名を書くと値の意味が分かりやすくなります。
void Show(string name, int age) {
Console.WriteLine(quot;{name}: {age}");
}
Show(name: "海", age: 20);C# 9以降のトップレベルプログラムの例です。
複数の値をまとめる
タプルで関連する値をまとめて受け取れます。
var point = (X: 10, Y: 20);
Console.WriteLine(point.X);状態に名前を付ける
enumで選択肢を名前付きの値にします。
enum State { Ready, Done }
// State.Readyで使うenumはクラスの外、またはクラス内で宣言します。
クラスを引き継ぐ
共通の処理を引き継いで必要な部分を変更します。
class Animal {
public virtual string Speak() => "声";
}
class Cat : Animal {
public override string Speak() => "にゃー";
}データ用の型を作る
recordはデータの値を比較しやすい型です。
record User(string Name, int Age);
// new User("海", 20)で作るC# 9以降。型の宣言として書きます。
ファイルを自動で閉じる
usingで使い終わった資源を解放します。
using (var writer = new StreamWriter("memo.txt")) {
writer.WriteLine("こんにちは");
}using System.IO;が必要です。既存の内容を上書きします。