式形式のメンバー
プロパティとメソッドを簡潔に記述します。
「式形式のメンバー」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
より簡潔な構文
式形式の構文では => を使い、メンバーを単一の式として定義します。完全な { ... } 本体を置き換えられるため、短いメンバーを簡潔で読みやすく記述できます。
using System;
class Greeter
{
public string Hello() => "Hi there!";
}
class Program
{
static void Main()
{
var g = new Greeter();
Console.WriteLine(g.Hello());
}
}式形式のメソッド
本体が単一の式であるメソッドは、=> を使用できます。式の結果が戻り値になります。
using System;
class MathHelper
{
public int Square(int x) => x * x;
public int Add(int a, int b) => a + b;
}
class Program
{
static void Main()
{
var m = new MathHelper();
Console.WriteLine(m.Square(6));
Console.WriteLine(m.Add(3, 4));
}
}式形式の読み取り専用プロパティ
計算による読み取り専用プロパティでは、get { return ...; } の代わりに => を使用できます。
using System;
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
public double Area => Width * Height;
}
class Program
{
static void Main()
{
var r = new Rectangle { Width = 4, Height = 5 };
Console.WriteLine("Area: " + r.Area);
}
}式形式の get と set
get と set のアクセサーにも、それぞれ独自の式形式の本体を指定できます。バッキングフィールドと組み合わせると便利です。
using System;
class Person
{
private string _name;
public string Name
{
get => _name;
set => _name = value.Trim();
}
}
class Program
{
static void Main()
{
var p = new Person();
p.Name = " Niki ";
Console.WriteLine("[" + p.Name + "]");
}
}計算された文字列の返却
式形式のプロパティは、フルネームやラベルなど、書式設定された派生値を返す場合に特に便利です。
using System;
class Customer
{
public string First { get; set; }
public string Last { get; set; }
public string Display => First + " " + Last;
}
class Program
{
static void Main()
{
var c = new Customer { First = "Ada", Last = "Lovelace" };
Console.WriteLine(c.Display);
}
}条件を含む式形式
単一の式には条件演算子(三項演算子)を含めることができ、分岐ロジックを 1 行にまとめられます。
using System;
class Account
{
public decimal Balance { get; set; }
public string Status => Balance >= 0 ? "OK" : "Overdrawn";
}
class Program
{
static void Main()
{
var a = new Account { Balance = -20m };
Console.WriteLine(a.Status);
}
}void の式形式メソッド
アクションを実行するメソッド(何も返さないメソッド)も、処理が単一の文であれば式形式にできます。
using System;
class Logger
{
public void Log(string msg) => Console.WriteLine("[LOG] " + msg);
}
class Program
{
static void Main()
{
var log = new Logger();
log.Log("Started");
}
}式形式のコンストラクター
代入を 1 つだけ行うコンストラクターでは、矢印構文も使用できます。
using System;
class Point
{
public int X { get; }
public Point(int x) => X = x;
}
class Program
{
static void Main()
{
var p = new Point(7);
Console.WriteLine("X = " + p.X);
}
}使わないほうがよい場合
式形式の本体を使えるのは単一の式だけです。複数の文、ループ、検証の分岐が必要な場合は、通常のブロック本体を使用してください。
using System;
class Calculator
{
// Single expression -> arrow is fine
public int Triple(int n) => n * 3;
// Multiple statements -> use a block
public int SumTo(int n)
{
int total = 0;
for (int i = 1; i <= n; i++) total += i;
return total;
}
}
class Program
{
static void Main()
{
var c = new Calculator();
Console.WriteLine(c.Triple(4));
Console.WriteLine(c.SumTo(5));
}
}1 つのクラスで複数の式形式を使う
小さなクラスでは、ほぼすべてのメンバーに矢印構文を使用して、定型コードを大幅に減らせます。
using System;
class Temperature
{
public double Celsius { get; set; }
public double Fahrenheit => Celsius * 9 / 5 + 32;
public double Kelvin => Celsius + 273.15;
public override string ToString() => Celsius + "C";
}
class Program
{
static void Main()
{
var t = new Temperature { Celsius = 25 };
Console.WriteLine(t + " = " + t.Fahrenheit + "F = " + t.Kelvin + "K");
}
}全体を組み立てる
単純な getter、ヘルパー、1 行のメソッドには式形式のメンバーを使ってすっきり記述し、実際のロジックにはブロック本体を使用してください。
using System;
class Order
{
public int Quantity { get; set; }
public decimal UnitPrice { get; set; }
public decimal Total => Quantity * UnitPrice;
public bool IsLarge => Quantity > 10;
}
class Program
{
static void Main()
{
var o = new Order { Quantity = 12, UnitPrice = 9.99m };
Console.WriteLine("Total: " + o.Total + ", Large: " + o.IsLarge);
}
}理解度チェック
式形式のメンバーについて理解できているか確認しましょう。
まとめ
式形式のメンバーでは => を使い、メンバーを単一の式として定義します。メソッド、読み取り専用プロパティ、個別の get/set アクセサー、さらにはコンストラクターにも使用できます。簡潔な 1 行の処理に使い、複数の文が必要になった場合はブロック本体に切り替えてください。
using System;
class Demo
{
public int N { get; set; }
public int Doubled => N * 2;
public string Label() => "N is " + N;
}
class Program
{
static void Main()
{
var d = new Demo { N = 9 };
Console.WriteLine(d.Label() + ", doubled = " + d.Doubled);
}
}よくある質問
「式形式のメンバー」レッスンは無料ですか?
はい。「式形式のメンバー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「式形式のメンバー」で何を学びますか?
プロパティとメソッドを簡潔に記述します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「式形式のメンバー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。