C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: JavaScriptの無名関数に相当するのものは?


(過去ログ 130 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■76981 / inTopicNo.1)  JavaScriptの無名関数に相当するのものは?
  
□投稿者/ nbea3m (3回)-(2015/09/03(Thu) 09:02:33)

分類:[C#] 

2015/09/03(Thu) 09:08:53 編集(投稿者)
質問させてください。

JavaScriptだと、

(function(){
 console.log("hello");
})();

のように関数名を考えずに、無名関数で関数を実行できます。
これをC#でやるとなると、どうすればいいのでしょうか。
Delegate は型の宣言や変数名などがいりますよね?

ラムダ式でも

            Action action1 = () => Console.WriteLine("hello");
            action1();

のように変数名がいります。

少し似てはいますが、

            this.button1.Click += delegate(Object o, System.EventArgs e){
                Console.WriteLine("hello");    
            };

だと、用途が特殊すぎます。

JavaScriptのようなスッキリした形で書きたいのですが。
もちろん、実行内容は単純なコンソール出力だけではなく、関数の中で色々することを想定しています。
よろしくお願いします。

引用返信 編集キー/
■76982 / inTopicNo.2)  Re[1]: JavaScriptの無名関数に相当するのものは?
□投稿者/ Hongliang (338回)-(2015/09/03(Thu) 09:21:43)
> Action action1 = () => Console.WriteLine("hello");
> action1();
>
> のように変数名がいります。

new Action(() => { Console.WriteLine(""); })();
とか
((Action)(() => { Console.WriteLine(""); }))();
みたいなことは可能ですが。
引用返信 編集キー/
■76983 / inTopicNo.3)  Re[2]: JavaScriptの無名関数に相当するのものは?
□投稿者/ なちゃ (66回)-(2015/09/03(Thu) 10:08:45)
やろうと思えばHongliangさんのような書き方で疑似的にはやれますが、何でそういうことしたいんでしょう?
代入しないなら実質単なる処理の同期実行で、せいぜいスコープを作りたいくらいしか意味ない気がします。
スコープなら{}でいい話ですし。

他に何か目的がありますか?
引用返信 編集キー/
■76986 / inTopicNo.4)  Re[3]: JavaScriptの無名関数に相当するのものは?
□投稿者/ nbea3m (4回)-(2015/09/03(Thu) 13:07:07)
Hongliangさん、ありがとうございます。
Actionは自分もやってみたのですが、カッコの使い方が間違ってたみたいです。
形としては、

new Action(() => { Console.WriteLine(""); })();

の方がきれいですね。 new Action(......)の部分はカッコでくくらなくても良いのが不思議だったのですが、
new とf() の()は優先順位が同じだったんですね。
https://msdn.microsoft.com/ja-jp/library/Aa691323%28v=VS.71%29.aspx

>他に何か目的がありますか?

いまC#勉強中なのですが、自分はJavaScriptの方が慣れているので、あのように無名関数を使い回すというのが、C#でもどこまで
通用するのか確かめたいくらいの気持ちでいじってます。スクリプト言語とC#の違いはやっぱり結構あるかなぁってのを最近感じます。
C#の方が広大で難しいです。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -