Тёмный

【プログラミング講座(C#)】第133回 LINQとラムダ式 その1【独り言】 

9cubed
Подписаться 17 тыс.
Просмотров 14 тыс.
50% 1

Опубликовано:

 

27 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 20   
@9cubed
@9cubed 9 лет назад
LINQ、ラムダ式は最初はとっつきにくいですが、慣れるとものすごい便利なので、是非使ってみて下さい!
@ハーズインチンバーグ
@ハーズインチンバーグ 3 года назад
すっごい分かりやすい!! 話やスピード感がバッチリすぎる
@zebratchzebratch5549
@zebratchzebratch5549 Год назад
Stringがcharの配列とのことですが、配列ではないです。 string型変数sに対して、s[0]のようなアクセスができますが、 これはC#のインデクサという機能で配列っぽく見せているだけです。
@amaterasu48
@amaterasu48 9 лет назад
現役プログラマーでLINQやラムダ式が苦手なので大変参考になります。ありがとうございました。
@田中田中-n1i
@田中田中-n1i 9 лет назад
キーボードは何を使っていらっしゃるんですか?
@くま家-g2q
@くま家-g2q 3 года назад
LINQの引数にラムダ式を入れているところで理解が追いつきませんでした。 1. 関数の引数にラムダ式を入れた場合の挙動はどうなるのでしょうか? 2. ラムダ式の定義をする際にLINQの関数仕様から戻り値の返し方を説明されていましたが、この辺りの考え方をもう少し噛み砕いてご説明いただけますでしょうか?
@9cubed
@9cubed 3 года назад
いま見返すと、かなり説明が漏れているのと、わかりづらい説明で申し訳ないです。 補足しますと、ラムダ式は匿名関数(無名関数)と同じようなものになりまして、 通常の関数(メソッド)と異なり、関数自体を変数に代入して使うことができます。 これにより、他の関数の引数に、関数を渡して、他の関数の内部から、渡した関数を呼び出してもらうことができます。 これをコールバックと呼びます。 実際には違うかもしれませんが、 今回、Where() にラムダ式を渡していますが、Where() の内部では、リストを foreach でループして要素を1つずつ取り出しています。 そしてその要素を、引数で渡されたラムダ式の引数にして、ラムダ式を実行しています。 これにより、Where() の処理の一部を、利用者が引数(ラムダ式)で指定できるようになっています。 関数を変数に代入して使えることが理解できれば、理解しやすいと思います。 ■関数を変数に代入して使う例 //Func Func add = (int v1, int v2) => { return v1 + v2; }; int result = add(1, 2); Console.WriteLine(result);
@くま家-g2q
@くま家-g2q 3 года назад
@@9cubed サンプルをご提供いただきましてありがとうございます。 ラムダ式を引数に持つLambdaという関数を独自実装したいとサンプルを改変しました。 //ラムダ式を引数に持つ関数 static void Lambda(int v1, int v2) { Console.WriteLine("引数1:%d", v1); Console.WriteLine("引数2:%d", v2); } static void Main(string[] args) { int result = Lambda((int v1, int v2) => { return v1 + v2; }); } 「エラー CS7036 Program.Lambda(int, int)' の必要な仮パラメーター 'v2' に対応する特定の引数がありません。」 と出てしまうのですが、ラムダ式を引数として受け取る関数はどのように定義すればよいでしょうか? また、VS2019上でWhereの実装を確認しようとしたのですが、F12キーでは宣言までしかジャンプできませんでした。 ライブラリの実装を確認する手順を教えていただけると幸いです。
@9cubed
@9cubed 3 года назад
@@くま家-g2q 2つ引数を持つラムダ式の場合は、Func が型になります。 また、Where の実装は確認できないです。ラムダ式を渡しているので、おそらく内部ではそう言うことをしていると言う想像になります。 以下がラムダ式を使ったコールバックの例になります。 Calc() の処理は変更せずに、Calc() に渡すラムダ式を変えることによって、いろんな計算ができるのがポイントです。 static int Calc(Func f, int v1, int v2) { //渡されたラムダ式を実行する int result = f(v1, v2); return result; } static void Main(string[] args) { //足し算 int a1 = Calc((int v1, int v2) => { return v1 + v2; }, 10, 20); //掛け算 int a2 = Calc((int v1, int v2) => { return v1 * v2; }, 10, 20); Console.WriteLine(a1); Console.WriteLine(a2); }
@くま家-g2q
@くま家-g2q 3 года назад
回答いただきありがとうございます。ラムダ式を引数に持つ関数の定義方法をよく理解できました。.NETライブラリはMicrosoftの著作物でオープンソースではないのは当たり前でしたね。。 興味深い動画を膨大に投稿いただいているので、時間をかけて楽しませていただこうと思います。また私の理解が追いつかない場合は質問させていただくこともあるかもしれませんが、今後ともよろしくお願いいたします。
@9cubed
@9cubed 3 года назад
@@くま家-g2q またわからないところがございましたら、遠慮なくコメントしてください!
@2cc.everywhere
@2cc.everywhere 6 лет назад
質問なんですけど ラムダ式の左辺側のxは int x ;同じ扱いなんですか?(エラーが出てたみたいだから) 宣言と同時処理という理解で大丈夫でしょうか? あと、7.6?で出来るようになった書き方も 教えてもらえると嬉しいです。
@2cc.everywhere
@2cc.everywhere 6 лет назад
もう一つ質問何ですが、 前回、IndexOfで小数点を取っていた事が ありましたが、今回の書き方とでは 行数が少ない以外に何が違いますか? 例えば、処理速度が違うとかありますか?
@9cubed
@9cubed 6 лет назад
左辺側は元の変数の型によりまして、例えば List に対してのラムダ式なら、要素が int なので int になります。動画中では文字列の string を使っているため、要素は文字となるため、x は char 扱いになります。
@2cc.everywhere
@2cc.everywhere 6 лет назад
@@9cubed 今ひとつ分かんないですが とにかく書きまくってみます。 ありがとうございます。
@9cubed
@9cubed 6 лет назад
すみません。1つ返信漏れてました。 indexOf は要素の位置しか返せませんが、LINQを使うとリストから特定の値だけを抽出したり加工したりいろいろできます。速度は処理にもよりますが、他の書き方に比べて遅くなる気はします。 最初はLINQを使わずにforやforeachなどで書いて、書くのが面倒になってきたらLINQを使うと良いかもしれません。
@2cc.everywhere
@2cc.everywhere 6 лет назад
@@9cubed 了解しました。 ありがとうございます! あ、あと、もし嫌じゃなければ マイクロソフトのMSDNを 調べながら書くコツなど動画に 載せて欲しいです。。。 めんどくさければスルーで大丈夫です。
@9cubed
@9cubed 9 лет назад
キーボードは、型番見たら、www2.elecom.co.jp/peripheral/full-keyboard/tk-u12fya/ でした。 本当はメタリックな感じのキーボードとか、かっこいいのにしたいんですけどね。
Далее
Купил КЛОУНА на DEEP WEB !
35:51
Просмотров 2,7 млн
Nightmare | Update 0.31.0 Trailer | Standoff 2
01:14
Просмотров 602 тыс.
【C#】delegateとラムダ式をゆっくり解説
19:06
Using LINQ in C# to select from Lists
20:54
Просмотров 7 тыс.