トップページ⇒tech
90コメント27KB

すげえぜC#

■ このスレッドは過去ログ倉庫に格納されています
0001教えて君@2chNGNG
よくわかんないけど書いてみただけ。
0002デフォルトの名無しさんNGNG
○C♯
×C#
0003名称未設定NGNG
>>2 のようにいちいちうるさいやつもいるが、
MSのサイトはC#なので大丈夫。
それはそうと、俺もかなりいけてると思うなC#。
0004デフォルトの名無しさんNGNG
>>3
とりあえずWindowsでは標準的な言語になるだろうね。
0005デフォルトの名無しさんNGNG
>>2
さすがに、海外ではそれは(藁
0006デフォルトの名無しさんNGNG
そんなにいけてるのC#age。
0007デフォルトの名無しさんNGNG
まだまだC#は信用できないなage。
0008お腹すいたNGNG
C丼
0009デフォルトの名無しさんNGNG
一見地味だけどoverrideキーワードは画期的な発明だと思う
0010D使いNGNG
>>9
ハァ?
0011デフォルトの名無しさんNGNG
>10
9はMSしかしりません。
0012デフォルトの名無しさんNGNG
>一見地味だけどoverrideキーワードは画期的な発明だと思う

設計者がDelphiと同じだもんな。
0013デフォルトの名無しさんNGNG
>>9
恥
0014和風NGNG
C井
0015デフォルトの名無しさんNGNG
ヘジルスハンバーグ
0016デフォルトの名無しさんNGNG
>>8
藁タ
0017名無しさん@お腹いっぱい。NGNG
>一見地味だけどoverrideキーワードは画期的な発明だと思う

画期的まではいかないが、まっとうなモンだと思う。
注意深いプログラマーにとっては無用かも知れんが、
注意深いプログラマーというのは、(定義上)存在しない。
0018デフォルトの名無しさんNGNG
Javaにはfinalがあるからいいもんねー
0019デフォルトの名無しさんNGNG
Javaもoverrideほしい。
0020名無しの笛の踊りNGNG
ものが出てから様子見だね。
MSが言うことは話半分に聞いておかないと。
ただ言語仕様を見る限りでは、かなりイケてると思う。
0021デフォルトの名無しさんNGNG
Javaがそうであるように、インターフェイスはまともでも
実装はゴミという事は多々ある(多分初期バージョンでは
バグの嵐の可能性あり)ので、まあとりあえず使える程度
にはなっといて、後は様子見のつもりっす。
0022デフォルトの名無しさんNGNG
C#信者逝ってよし
0023デフォルトの名無しさんNGNG
どうせならそろそろD作れよ。
それとも次は「も〜っと!C」か?
0024デフォルトの名無しさんNGNG
C#++と思われ
0025デフォルトの名無しさんNGNG
>>23
どれみちゃんかい?おじさんもみてるぞ。ドゥフフフフフ。
0026デフォルトの名無しさんNGNG
>>23
ワラタ
0027デフォルトの名無しさんNGNG
C++の++の線を少しずらしていって交あわせると… #だー!#になったー!
0028デフォルトの名無しさんNGNG
>>27
今更ナニを言っとるのかね、キミわ。
0029デフォルトの名無しさんNGNG
>ドゥフフフフフ
なんかすっげー嫌な笑いなんですけど。
0030デフォルトの名無しさんNGNG
>>27
はー、そーゆーことだったんだ…
知らんかった。ちょっと鬱。
0031デフォルトの名無しさんNGNG
>27
 うっそー。

 Java って、 C-- のようなものって、よく言われるけど、
C# 式でいうと、
 Java は、 C♭ ですな。

0032デフォルトの名無しさんNGNG
Java == Objective-C・改
0033デフォルトの名無しさんNGNG
言語仕様についてはどう?
0034デフォルトの名無しさんNGNG
オペレータオーバーロードがあるのはいいけれど、
(数学関係にゃ必要だと思ー)
イベントハンドらの追加を+=演算子でやるのは勘弁してくだちい。
0035デフォルトの名無しさんNGNG
>>34
わかりやすくて良いんじゃない?
0036デフォルトの名無しさんNGNG
どこがやねん。
003734じゃないけどNGNG
オペレータオーバーロードの悪い使用例の筆頭から2番目だとおもう
一番はもちろんC++の「<<」ね
0038デフォルトの名無しさんNGNG
>ドゥフフフフフ
いただきー!
0039無しさんNGNG
オーバーロード演算子に関しては、個人が勝手にやってるわけじゃく、
コンパイラベンダがやってることなんで、別にかまわんよ。
まあオレ的には
Button.AddOnClick(new EventHandler(buttonNoget_click));
を
Button.Click += new EventHandler(buttonNoget_click);
みたいに全部変更しなきゃいかんかったのがツラかったよ。
(昔のバージョンで実用アプリ作ってたから)
0040デフォルトの名無しさんNGNG
genericsの実装(template)は.NETの正式リリースに間に合うのだろうか。
0041デフォルトの名無しさんNGNG
で、C#はWebアプレット作れるんか?
0042デフォルトの名無しさんNGNG
で、C#はランタイムいるんか?
え?ドットネットフレームワーク!?
こりゃまたでかいランタイムやなー!!
0043デフォルトの名無しさんNGNG
>>41
作れるようだが、セキュリティ上通信は一切できないように見える。
ただし、10KBのデータ保存ができるように見える。
ワタクシの英語力はクソなので
誰かヘルプ読んで追試してください。
0044デフォルトの名無しさんNGNG
>>39
ベンダが率先して演算子オーバーロードの妙な使い方すると、
ヘボい連中がそれを真似するんだよぅ(涙)
0045デフォルトの名無しさんNGNG
>>41
ごめんなさい、言ってる意味がよくわからならないっす。
今のJavaと基本的には同じってこと?
004645NGNG
間違えた…
X >>41
O >>43
0047デフォルトの名無しさんNGNG
>>37
何が悪い例なんだか良く分からん。
何の問題も無いと思うが。
0048デフォルトの名無しさんNGNG
>>36
+=は直感的にわかりやすくないか?
俺はまさに+=だと思って感心したよ。
0049デフォルトの名無しさんNGNG
>>48
キミあっち行って下さい。
0050デフォルトの名無しさんNGNG
+= の何が駄目?
0051デフォルトの名無しさんNGNG
1.7.2 Labeled statements and goto statements
A labeled statement permits a statement to be prefixed by a label, and goto statements can be used to transfer control to a labeled statement.
The example

using System;
class Test
{
static void Main() {
goto H;
W: Console.WriteLine("world");
return;
H: Console.Write("Hello, ");
goto W;
}
}
0052デフォルトの名無しさんNGNG
>51
gotoはほとんどの場合悪だが、深いネストから脱出する時に
使うのは効果的、とストラウストラップ大先生がのたまって
おられました。
0053デフォルトの名無しさんNGNG
>52
うんそうだね。ただサンプルをああ書くそのセンスが、かなりいけてると思った。
0054トリッキーの1NGNG
>>48 >>50
1つのイベントに2回+=をするとどうなるんですか?
マジレス希望っす。俺にはその辺が直感的じゃないので。
0055デフォルトの名無しさんNGNG
>>50
たぶん、演算子のオーバーロード自体が駄目ということなんだろう。
JAVAで何故それがなくなったかわかってない!といいだげだぞ。

まあ、C#はJAVAよりもC++よりってことなのかね。
0056デフォルトの名無しさんNGNG
>54
現在の実装だと、そのイベントハンドラーが 2回呼ばれる
ようです。これが仕様なのか、製品版で重複した設定は
無視されるようになるのかは、分かりませんが。

まぁ仕様にしてもバグにしても += じゃなくて、
Button.AddOnClick(...) とか Button.Click.AddHandler(...) とか
いう感じでやっても、動作がどうなるかが、直感的でないのは一緒だね。

個人的には、AddHandler とか AddOnClick とかいたずらに method を
増やすより、すっきりしてていいと思うのだが。

0057トリッキーの1NGNG
>>56
レスサンクスです。AddHandler()という名称にせずに、
SetHandler()みたいな形にすれば直感的に重複を許さないと思うけど、
重複させたい場合とかもあるのかなぁ……?
気が向いたらC#で実際に使ってみます。

>>55
Javaで演算子のオーバーロードがないのは、やはりfriendが必要になるから?
あくまで個人的な意見だけど、operator定義は正しく使えばかなり有用だと思います。
文字列の比較が==で「エラーは出ないが正しく比較できない」のは、どうかと思いますね。
そのくせJavaではStringになぜか+が定義されているんだよね。実にナンセンス。
0058デフォルトの名無しさんNGNG
>57
SetHandler というのは、ダメです。というのも、複数の異なる
イベントハンドラーを設定することができるというのは、はっきり
と書いてある仕様ですから。
button.Click += new System.EventHandler(button_ClickA);
button.Click += new System.EventHandler(button_ClickB);
てな感じで、ひとつのイベントに複数のハンドラーを設定できます。

しかし、確かに同じハンドラーがひとつのイベントに際して複数回
呼ばれる必要があるという事態は考えにくい。あるのかな?
0059トリッキーの1NGNG
>58
なるほど。仕様から来ている+=だったんですね。
AddHandlerがあるなら+=がそれに値するということはそれほどはずれていないと思うけど、
何にせよちょっとやりすぎかな。+とか=とかは全く別の定義だろうし。

色々情報サンクスです。ハンドラが複数回呼ばれると便利な状況はあると思いますよ。
0060デフォルトの名無しさんNGNG
恥の上塗りとはこういうことを言います。
ttp://dennou.gihyo.co.jp/books/cnet/faq.html
0061デフォルトの名無しさんNGNG
C#ねぇ。すっきりしてていいよ。
覚えることが少ないから楽チン。
0062サンプリング@NGNG
早く一般向けにダウンロード可能にならないかなぁ。age
0063デフォルトの名無しさんNGNG
SDKのベータ版はずっと前から一般向けにダウンロード可能だよ。
雑誌の付録にもついてるし。
ベータ版なんで、業務用マシンには入れるなと書いてあったので
ずっと実験用マシンで使ってたが、安定してるようなので、先日
ついに常用のマシンに入れてしまった。
VS.NET のベータ版も雑誌の付録のハガキ送ったら来たよ。
0064厨房NGNG
やっぱり.NET Frameworkはばんばん配布されるのかな〜。
JavaだとJREが普及していないせいもあって(GUI絡むと重いし)client-sideに広まらなかったけれど、
.NETは今後のWinodozeには組み込まれそうな気がするのでかなり普及しそうな気がする。

0065D使いNGNG
>>60
この人アホなんですか?

DelphiPascalだとオバロドとオバライドを間違ったり混同する
ヤツなんて誰もいないんだが、C#だと間違いやすくなってる?
0066デフォルトの名無しさんNGNG
C#の詳しい本ってまだ出てない?
薄っぺらい、「C#入門」しかないのかな。
0067voidNGNG
しっかしマイクロソフトというのは変な会社だ。

現在の Windows の分散オブジェクト環境も、本当に
ユーザーのためになってるとは思えない。Windows が
COMとかなくても(なかったら、ちょっと寂しいけど)、
単なる統一された32ビットAPIの GUI環境であっても、
充分使い物になってたと思う。いまの分散オブジェクト
環境は、too much だよ。IEのコンポーネントを使った
ブラウザーが続々作られるなんて、他の環境ではちょっと
考えられない。不必要なほどに複雑だからバグも多いし。

で、今度は、仮想マシンときた。もちろん すごく先進的と
いうわけではない。Javaっていうのもすでにあるし。
99%の現在の “パソコン”ユーザーにとって、Windowsの
上で仮想マシンを走らせる意義ってないし、そもそも
ユーザーにとってはそういう理屈は関係ない。
いずれ、現在のPCから離れた環境が主戦場になるというのは
まぁ自明だけど、そのための主導権の確立の手筈を今の PC上で
なんとかしとこうというのは、なんかやりきれない感じだ。
Windows NTもひところは、PowerPC,MIPS,x86,Alpha と4種類
のCPUサポートしてたし(これも今から考えると too much)。

ビルって、将来のための保険を一般のユーザーを巻き込んで
かけてるんだな。ついて行く開発者も大変。こういうの嫌で
Linux とかにゆく開発者もいるよね。(Linux とかの方面が
技術的に大変じゃないと言ってるわけではないよ。ただ、
MSについていく果ての無さの感覚はないよね。なんかもっと
着実にやれそうな感じだよね)

MSのアメリカでやる PDC に参加すると、なんかこう遠い遠い
所まで来てしまったなと思うよね。
0068デフォルトの名無しさんNGNG
いや、COMはそれなりに使える技術だと思いますよ。インタフェースと
実装を切り離すことで、プラグアンドプレイなソフトウェア環境を
作り上げることに成功したんですから。

それがToo MuchだというのならWindowsに限らず、現在の分散オブジェ
クト技術全部がToo Muchということになってしまいそうな気がするん
ですけど。
0069デフォルトの名無しさんNGNG
EXEの方が使える。
0070voidNGNG
誤解を受ける書き方をしたけど、 WindowsのCOM が
駄目だとは思ってないよ。COMの全面的な採用によって
得られた世界は、なによりワクワクするものを含んでるし、
開発効率から見た生産性の向上も多分あったはず。

で、メリット・デメリットがあったと思うけど、その
新技術のメリット・デメリットを圧倒的なシェアを背景に
一般ユーザを巻き込んで、ビジネス的に独走しながら、
まとめて引き受けてるというのが、なんかスゴイな
と思った次第。

Linux なんかより(ごめん他意はない。突っ込まれても
しょうがないが、それには対応しないよ)ある意味はるか
に挑戦的なことやってるよね、MSって。
007168NGNG
確かに、COMが定着したのは何よりもMSが自社製品で使えるものを
これでもか、というくらいに提供したからですね。
# VB、VC++, Excel、Word、Access、ASP...

そういうところでは独自技術の強みがありますね。
ただ、とりあえず市場に出すことが優先されて品質が二の次とか、
標準技術を軽視するところが嫌われるところではありますね。
0072デフォルトの名無しさんNGNG
IEコンポーネントのブラウザ非常に重宝してるんだけど…
0073デフォルトの名無しさんNGNG
だから、67=70 の語法による「一般ユーザー」は
IEコンポーネントプラウザを作ったり使ったりしてないという話。
まあ、存在してるから、使うことはあるだろうけど、それが
IEコンポーネントを使った COMによる分散オブジェクト技術で
成り立ってるなんてことは、意識しないだろう。
で、便利なもんなら、COMでなくても、ソースコードをパクってきて
作ったものでも、適当なライブラリーを従来の方法でスタティックか
ダイナミックにリンクして作ったものでも、使うだろう。
一言でいうと、一般ユーザーが求める道具としてのパソコンに
現在の Windows が提供している分散オブジェクト環境は too much
だということだよ。

おれは、COMも .NET もありがたく、楽しく使うけどね。
007468NGNG
一般ユーザだってCOMの恩恵は受けていますよ。たとえばインプレース
アクティベーションとか、透過的なドラッグ&ドロップとか。

ExcelやAccessのVBAでちょっとしたプログラムが組めるようになった
のも、COMあってこその話ですよね。
0075デフォルトの名無しさんNGNG
MSが仮想マシンを作り始めたのはいずれMSが分社化するときに対応するためとか聞いたがどうなんだろう?
0076デフォルトの名無しさんNGNG
age
0077デフォルトの名無しさんNGNG
仮想マシンを使って32bit->64bitへの移行をスムーズに
行えるようにするというのもメリットのひとつだと思う。
とくにAMDの64bit CPUはIntelのものと非互換みたいだし。
# C#がCPU依存の型を廃したのは英断でしょう。

MSの自社製品がすべてC#に移行したらまた複数のCPUを
サポートし始めるんじゃない。
0078サンプリング@NGNG
「一般ユーザー」なんですが、シェアウェアなどの小規模なアプリにはあまりCOMは
使われていないような気がするのですが、いかがお考えですか?やはりCOMは、
ごく普通のプログラマには難しいような気がするのですが。。。
(おっと、へたれPGであることがばれてしまう。アブアブ)
0079デフォルトの名無しさんNGNG
>78
それは見方がアマイだけじゃないの?
74が上げているような機能なら使用しているアプリは多いし。
(ほんとに小規模なら別。使うまでもない。
 もしくはめんどくて付けなかった、などの理由もある。)

COMがプログラマに難しいかどうかは開発環境にもよる。
0080>70NGNG
なんでもいいけどvoidってハンドルだけは止めとけ。
0081SAGENGNG
>>78
エクスプローラの右クリックメニュー拡張とか。
エディタのテキストをドラッグ&ドロップとか。
ショートカット作成とか。
Iriaみたいに IEに食い込むタイプのソフトとか。
DirectX 使ったゲームとか。

そこら中で見かける気がするけれど。
0082デフォルトの名無しさんNGNG
>>70
へみ猫は市ね。
0083知ったか君NGNG
>>78
COMもOOPみたいに小規模ではどうしても煩雑なところばかり
が目立ってしまいますからね。
ただ、オンラインソフトの場合はCOMを使うとどうしてもレジストリを
触ることになるので、ユーザーにあまり好まれないからだと思います。
0084デフォルトの名無しさんNGNG
「COMを使う」って定義が問題。

IEやExcelのコンポーネントを使うような小規模アプリは
いくらでもある。

自分のインターフェイスを提供するようなのは、少ない
と思うけどね。

Iriaみたいに、公開してくれると結構便利なんだけど。

008568=74NGNG
オートメーションオブジェクトを作る/使うだけだったら楽勝でしょう。

ただインプレースアクティベーションとか構造化ストレージとかのコンテナや
コンポーネントを実装するのは結構大変ですね。

>ただ、オンラインソフトの場合はCOMを使うとどうしてもレジストリを
>触ることになるので、ユーザーにあまり好まれないからだと思います。

確かにレジストリが汚くなるのはやっかいですね。登録情報はどこかに
持たなくてはいけないので、レジストリを使うこと自体は問題ないと思う
のですが...
0086デフォルトの名無しさんNGNG
レジストリアレルギー(自分で命名)ってまだあるのかな?
0087デフォルトの名無しさんNGNG
Side-By-Sideを使えば、レジストリの呪縛から抜けられるけど、
システムグローバルには使えないし。

痛し痒しってとこだね。
0088デフォルトの名無しさんNGNG
http://www.denpa.org/~go/denpa/200103/from11.html#16_1
ってマジすごい。「COMってやりすぎじゃないの」というこのスレの
途中で出てきた議論に対して、正面から答えてる。
とりあえず、脱帽だぜ。
っつうことで、age ね。
0089デフォルトの名無しさんNGNG
>88
つーか常識。その上で、マニアックすぎないかって言う議論だったんでしょ。
ま、プログラマにとっちゃ魅力的だけどね。
0090金持ち名無しさん、貧乏名無しさんNGNG
>>88
日付から見て、このスレにインスパイアされた可能性もあるよ。
■ このスレッドは過去ログ倉庫に格納されています