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

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

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

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

Q&A

解決済

1回答

798閲覧

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

Y.Kurohata

総合スコア7

C#

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

0グッド

0クリップ

投稿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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

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

回答1

0

ベストアンサー

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

総合スコア2707

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問