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

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

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

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

Q&A

解決済

1回答

998閲覧

C# 匿名クラスについて

abd1106

総合スコア12

C#

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

0グッド

0クリップ

投稿2021/10/25 11:49

編集2021/10/25 12:08

C#の匿名クラスの中について質問です。

以下のコードはコンパイルエラーになりますが、匿名クラスでは、比較演算子は使えないのでしょうか。
もし、使えるようでしたら、使い方をご教示いただけますと幸いです。
最終目標地点として、ラムダ式で使用する匿名クラスで、比較演算子で値の比較ができないか検討しております。
(可能でしたら、ラムダ式で使用する匿名クラス内での、比較演算子を使った例もいただけると大変助かります)

※追記
エラーメッセージ:
・CS0103 現在のコンテキストに 'num1' という名前は存在しません
・CS0103 現在のコンテキストに 'num2' という名前は存在しません

C#

1 var v = new { 2 num1 = 1, 3 num2 = 2, 4 test = (num1 > num2); // コンパイルエラー 5 };

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

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

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

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

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

y_waiwai

2021/10/25 11:53

エラーが出たなら、エラーメッセージを提示しましょう エラーメッセージは、いらぬ翻訳省略しないで、出たそのママをコピペで提示してください
abd1106

2021/10/25 12:08

ご指摘いただき、ありがとうございます。 追記として、エラーメッセージをコピペしました。
Zuishin

2021/10/25 12:12

匿名じゃなくてもこんなことはできません。 test が初期化されるときにはまだ num1 と num2 がないので。
abd1106

2021/10/25 12:22 編集

>Zuishinさん 右辺が実行されるときに、num1とnum2、testが同時に宣言、初期化されるイメージでしょうか。 以下のようなコードでは、コンパイルがうまくいきましたので、上記のイメージになりました。 int num1 = 1; int num2 = 2; var v = new { test = num1 > num2 };
Zuishin

2021/10/25 12:25

おおむねその通りです。
abd1106

2021/10/25 12:29

ありがとうございます。初歩的なことでした・・。納得しました。
Zuishin

2021/10/25 12:30

解決できたのであれば、検索でたどり着いた他の人の参考になる回答をつけてそれをベストアンサーに選んでください。
guest

回答1

0

自己解決

右辺が実行されるときに、num1とnum2、testが同時に宣言、初期化されるイメージなため

投稿2021/10/25 12:29

abd1106

総合スコア12

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

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

退会済みユーザー

退会済みユーザー

2021/10/25 13:44

解決した方法? どこにそれが書いてあるのでしょう?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問