#13 C#で学ぶクラスの基本
C#のクラスは、Javaとよく似た書き方に加えて、プロパティという便利な仕組みが用意されています。この記事では、C#におけるクラスの基本と、プロパティの活用法を解説します。
クラスを作ってみる
public class Person {
public string Name;
public Person(string name) {
Name = name;
}
public void Greet() {
Console.WriteLine($"こんにちは、{Name}です");
}
}
クラスからインスタンスを作る
Person person = new Person("太郎");
person.Greet();
プロパティという便利な仕組み
C#には「プロパティ」という、変数のように扱えるけれど、実際にはメソッドのような処理を挟める仕組みがあります。
public class Person {
public string Name { get; set; }
}
{ get; set; }と書くだけで、値の取得・設定ができるようになります。
プロパティの中に処理を挟む
プロパティの本領は、値の取得・設定時に独自の処理を挟める点にあります。
public class Person {
private int age;
public int Age {
get { return age; }
set {
if (value >= 0) {
age = value;
}
}
}
}
setの中でvalueという特別なキーワードを使うと、代入されようとしている値を受け取れます。この例では、負の数が設定されるのを防いでいます。読み取り専用にしたい場合はsetを省略できます。
C#ならではの注意点
プロパティは、単純な変数と同じようにperson.Nameという書き方で使えるため、慣れないうちはメソッドとの違いが分かりにくいかもしれません。「裏側で処理を挟める特別な変数」というイメージを持っておくとよいでしょう。単純な読み書きだけであれば{ get; set; }で十分ですが、値の検証やログ出力が必要になったら、いつでも中身を持つ書き方に切り替えられる柔軟性もプロパティの利点です。
読み取り専用プロパティ
コンストラクタでのみ値を設定し、後から変更されたくない場合はinitを使う書き方もあります。
public class Person {
public string Name { get; init; }
}
var person = new Person { Name = "太郎" };
// person.Name = "花子"; // コンパイルエラー
インスタンス作成時にだけ値を設定でき、それ以降は変更できない安全なプロパティを簡潔に定義できます。
まとめ
C#のクラスはJavaと似た書き方が基本ですが、プロパティという便利な仕組みが特徴です。単純な{ get; set; }から、検証を挟む書き方、initによる読み取り専用化まで、積極的に活用してみましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
C#をもっと学びたい方には「確かな力が身につくC#「超」入門 第2版」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿