質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

C#の宣言中の=>の意味について教えてください。

Y.Kurohata
IAmGhost

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1回答

0グッド

0クリップ

415閲覧

投稿2022/12/08 13:11

編集2022/12/08 13:45

前提

C#の=>の意味について教えてください。

発生している問題・エラーメッセージ

補足情報のURLの、
DataGridの動的な列追加について解説を読んでいた中で

private readonly DataTable dataTable = new DataTable(); public DataView dataView => new DataView(dataTable);

とのコードがありました。
=>があるため、この一文の意味が理解できません。

=>を含むと上記はどういった意味を持つ式になるでしょうか。

補足情報(FW/ツールのバージョンなど)

https://qiita.com/ishida722/items/6324b6b85bde5f40ca8b

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

maisumakun

2022/12/08 13:40

何か調べてみたことはありますか?
Y.Kurohata

2022/12/08 14:18 編集

はい、あります。
maisumakun

2022/12/08 23:28

調べてわかったこと、わからなかったことはどのような感じですか?
Y.Kurohata

2022/12/08 23:42

ラムダ式の使い方について同様の表記を探しきれず、 ラムダ式でプロパティが表記できることが分かっておりませんでした。
Zuishin

2022/12/08 23:45

> ラムダ式でプロパティが表記できることが分かっておりませんでした。 これはラムダ式ではありません。
Y.Kurohata

2022/12/08 23:51

そうなのですか! 下記サイトのこちらの説明と同義だと認識していたのですが解釈が異なっていますでしょうか。 // 読み取り専用プロパティ:ラムダ式で記述 public string FullName => FirstName + " " + LastName; https://atmarkit.itmedia.co.jp/ait/spv/1606/01/news051.html
Zuishin

2022/12/08 23:54

この記事が間違っています。 これは式形式のメンバーというもので、ラムダではありません。
Y.Kurohata

2022/12/08 23:56

誤って理解してしまうところでした。 ご指摘いただきありがとうございますm(_ _)m 改めて自分できちんと調べたいと思います。
Zuishin

2022/12/09 00:11 編集

自分で調べられるなら URL は出しませんが、Microsoft の公式のドキュメントを参考にしてください。 ラムダ式は「引数 => 本体」の形式になっており、「=>」は「ラムダ演算子」であるとラムダ式の説明のところに書いてあります。 式本体のメンバーの場合は引数も無く、演算子でもありません。そもそも用途が違います。つまり、見た目以外は全部違います。 たとえばラムダ式は Expression 型の変数に収めて式木を構築できたり、高階関数に渡したりできますが、プロパティはできません。
Y.Kurohata

2022/12/09 00:10

解説含めご教示いただきありがとうございます。はっきりとものが違うことを認識しました。 公式ドキュメントを見て確認いたします。

回答1

2

ベストアンサー

CSharp

1private readonly DataTable dataTable = new DataTable(); 2public DataView dataView => new DataView(dataTable);

datatable はフィールド、dataView はプロパティになります。
マウスカーソルをもっていくとわかりますよ。

投稿2022/12/08 13:48

編集2022/12/08 14:03
KOZ6.0

総合スコア2252

IAmGhost, Zuishin👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Y.Kurohata

2022/12/08 14:10

kozさん、ありがとうございました。 読み取り専用のプロパティということですね、教えていただきありがとうございますm(_ _)m
TN8001

2022/12/09 11:02 編集

public DataView dataView => new DataView(dataTable); は public DataView dataView { get { return new DataView(dataTable); } } や public DataView dataView { get => new DataView(dataTable); } の短縮形です。 > このプロパティを読みだす度に、dataTable から DataView が作成されます。 と参考先に書いてあるように、↓と同義でないことに留意してください。 public DataView dataView { get; } = new DataView(dataTable); // この場合エラーだが^^;
Y.Kurohata

2022/12/08 23:40

ご教示ありがとうございます。短縮形が理解できておりませんでした、具体例を示していただき他の表記も理解できましたm(_ _)m

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。