ふらっとC#,C♯,C#(初心者用) Part41 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
09/06/06 12:30:18
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ

ふらっとC#,C♯,C#(初心者用) Part40
スレリンク(tech板)

2:デフォルトの名無しさん
09/06/06 12:31:32
-----関連スレ

C#, C♯, C#相談室 Part52
スレリンク(tech板)

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
スレリンク(tech板)

----参考サイト

URLリンク(www.google.co.jp)
URLリンク(msdn.microsoft.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)

3:デフォルトの名無しさん
09/06/06 14:16:04


4:デフォルトの名無しさん
09/06/06 17:09:29
>>1
前スレ埋まりage

5:デフォルトの名無しさん
09/06/06 17:16:24
> >>997
> で,言いたいことは?
VB.NET >>>> C#

6:デフォルトの名無しさん
09/06/06 17:17:10
君にとってはそうかもしれんね

7:デフォルトの名無しさん
09/06/06 17:30:55
>.NET構想における中心的な開発言語であり、XML WebサービスやASP.NETの記述にも使用される。
>他の.NET系の言語でも記述可能だが、生産性・機能においてC#が最も優れるとされる。

Wikipediaだけどこんなこと誰が言ったんだろ

8:デフォルトの名無しさん
09/06/06 17:32:27
ワロス

スレリンク(tech板:129番)

123 名前:デフォルトの名無しさん[] 投稿日:2009/06/05(金) 20:54:00
VB.NETのオープンソースプロジェクト自体ほとんどないから諦めてC#読めるようになるといいよ

9:デフォルトの名無しさん
09/06/06 17:34:49
>>6
お前大人だな、見習ってスルーするわ

10:デフォルトの名無しさん
09/06/06 19:07:23
作ったはずのUIが見えなくなったのですけど、どこを押せば復活するか教えてください

11:デフォルトの名無しさん
09/06/06 19:18:22
とうごうしっちょうしょう

12:デフォルトの名無しさん
09/06/06 21:33:58
>>10
VS2005かそれ以前ならVS2008を買う、デザイナがバグっとる、結局治らんかった。

>>前997
>C++を使えて、C#を高く評価する輩には、VB.NETも使える輩はいないと仮定する。
何言いたいのか訳わからんがあり得ない仮定だな、.NetのサンプルにVBが多い以上読めないわけにはいかない、特にDB周り。
つか知らなくてもカンで読めるだろ

13:デフォルトの名無しさん
09/06/06 21:41:27
しょうもない釣りなんて放っておきなよ

14:デフォルトの名無しさん
09/06/06 22:05:23
スレの伸びからしてvbよりc#のほうが普及してる気がする。

15:デフォルトの名無しさん
09/06/06 22:14:08
その根拠は?

16:デフォルトの名無しさん
09/06/06 22:17:12
検索のヒット件数からしてvbよりc#のほうが普及してる気がする。

17:デフォルトの名無しさん
09/06/06 22:20:53
現在の北米のプログラミング書籍の売り上げを比べると、
C#がJavaを追い抜いて一番売れているそうだぞ(大体40%くらい)

オレはVB.NET自体がC#の糖衣表現のように感じてるなぁ。

18:デフォルトの名無しさん
09/06/06 22:28:32
気がする。
気がする。
感じてるなぁ。

19:デフォルトの名無しさん
09/06/06 22:29:33
スレの伸びはC#の方が速い
検索件数はC#の方が多い

これでいいのかな?VB大敗北だな

20:デフォルトの名無しさん
09/06/06 22:33:16
スレの伸びと普及の関係の根拠はなに?

21:デフォルトの名無しさん
09/06/06 22:34:43
VBとJavaはできませんときっぱり言っておくとデスマーチに呼ばれないように感じるなぁ。

22:デフォルトの名無しさん
09/06/06 22:36:56
>>17
じゃあ、日本でその状態になるのは5年後じゃね?<日米の流行の時間差

23:デフォルトの名無しさん
09/06/06 22:38:21
ウザイから一回埋めてやる

24:デフォルトの名無しさん
09/06/06 22:38:37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

25:デフォルトの名無しさん
09/06/06 22:38:41
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

26:デフォルトの名無しさん
09/06/06 22:38:44
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

27:デフォルトの名無しさん
09/06/06 22:38:47
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

28:デフォルトの名無しさん
09/06/06 22:38:50
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

29:デフォルトの名無しさん
09/06/06 22:38:53
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

30:デフォルトの名無しさん
09/06/06 22:39:00
再開

31:デフォルトの名無しさん
09/06/06 22:39:42
>>21
選べる状況ならそうするけど
今は何でもいいから仕事がほしい

32:デフォルトの名無しさん
09/06/06 22:40:29
c#スレが伸びるのはvb厨が荒らすから。

33:デフォルトの名無しさん
09/06/06 22:40:47
>>17
ソース

34:デフォルトの名無しさん
09/06/06 22:57:30
おれ最近規制報告に凝ってるんだ
しつこいようだとやっちゃうぞ?

35:デフォルトの名無しさん
09/06/06 23:02:58
17だが、すまん。40%というのは嘘だった。
でもシェアトップというのは本当だ。
URLリンク(www.atmarkit.co.jp)

36:デフォルトの名無しさん
09/06/06 23:08:41
Objective-Cって絶滅したかと思ってたよ。

37:デフォルトの名無しさん
09/06/06 23:09:52
C++にしないなら、何で中途半端なC#なのか。
素直にVB.NETにすればいいのに。
VBなら馬鹿にされると思って、見栄でC#やってるだけだろ。

38:デフォルトの名無しさん
09/06/06 23:11:12
君には中途半端なのかも知れないね、C#

39:デフォルトの名無しさん
09/06/06 23:16:08
まあ少なくとも、オレの居た会社では.NETの案件でVB.NETなんてのは聞いたことなかったな。
言語としてできることにそれほど差があるわけではないが、
まあ全体的な生産性からみてC#を選択するのが無難だろ。

40:デフォルトの名無しさん
09/06/06 23:20:20
VB.netはC#のおまけだろ。
実際、最新の機能はC#へが先だしな

41:デフォルトの名無しさん
09/06/06 23:33:04
IShellFolder とかいじるプログラムを作ってて、
SafeHandle や HandleRef の使い方がわからなくて
全部、IntPtr にしてるんだけどやっぱりまずいよね?

ぐぐってみたが使いどころがよくわからないんだけど
誰か教えてくれないか?

42:デフォルトの名無しさん
09/06/06 23:41:28
プロパティにするかパラメータにするかの判断基準が分からない

43:デフォルトの名無しさん
09/06/06 23:44:08
private 以外は無条件でプロパティで。

44:デフォルトの名無しさん
09/06/06 23:48:14
VB.NETをまともに使いこなせるレベルなら
C#なんて構文ちょろっと覚えるだけで使えるようになるのに何故騒いでるんだ?

>>37
何?お前VBに劣等感とか持っちゃってるの?wwアホくさ

45:デフォルトの名無しさん
09/06/06 23:51:11
>>42
getterだけあればいいばあい。
もしくはgetterとsetterが必要で、setterに特に追加の引数を必要としない場合はプロパティでよい。

46:デフォルトの名無しさん
09/06/07 00:01:15
結局はクラスライブラリを知ってるかどうか、でしょ。
それを呼び出す手段は別になんだってできることは同じ。
VBでもC#でも、もっと別の言語でも。

47:デフォルトの名無しさん
09/06/07 00:22:04
>>46
開発の歴史を知らない感じの発言だな。
それを実現するまでにどれぐらい時間がかかってるか理解してる?

48:デフォルトの名無しさん
09/06/07 00:30:58
ゲームを作る目的なら、C++よりC#を覚えた方がいいんでしょうか?
サイトで色々調べてみたのですが、C#の方が向いていると言うのと、
ライブラリ(これがどれほどの役に立つものかは理解していませんが)が充実しているという点でC++でやったほうがいいという意見で別れています


49:デフォルトの名無しさん
09/06/07 00:35:11
>>48
商用でゲームプログラムを作っている立場のものだが、
実際にどちらにするか迷う。
従来はC++の一点張りだったが、C#は圧倒的に開発効率がいいし、
DirectXのサポートも問題ない。

問題は外部ライブラリの使用と特にスクリプトをどうするかで、
.NETには使い勝手の良いライトウェイト言語がまだ実用化されていないように思える。
(IronPythonなどがあるが、あんなにコンパイルに時間がかかって実用になるのか?)

だが、C#でゲームを作るというのは十分ありだと思うよ。起動は遅くなるけど。

50:デフォルトの名無しさん
09/06/07 00:43:24
>>49
プロの方でも迷う問題ですか
とりあえず製作がまだ簡単そうな、C#でやってみることにします。ありがとうございました

51:デフォルトの名無しさん
09/06/07 00:44:18
>>49
IronPythonは.NETアセンブリに事前コンパイルできたように記憶している。
他のDLR言語は知らない。

52:デフォルトの名無しさん
09/06/07 00:54:52
GCどうすんのよ。
諦めて自分で管理か

53:デフォルトの名無しさん
09/06/07 01:04:22
>C#なんて構文ちょろっと覚えるだけで使えるようになる
そんなわけない
50ページ以下で出版されてるC#の本などない。
何百ページもの学習量がある。

54:デフォルトの名無しさん
09/06/07 01:10:35
何百ページのC#解説書なんかちょろっとマスターしてしまえるわ

55:デフォルトの名無しさん
09/06/07 01:11:34
>VB.NETをまともに使いこなせるレベルなら
前提抜かすな

56:デフォルトの名無しさん
09/06/07 01:11:35
まあ、プログラミングやりたい初心者がいたら、間違いなくC#奨めるよ
RubyやPythonみたいなスクリプト系は癖が強すぎるので絶対奨めない
基本学ぶならC#が取っつきやすくていい

57:デフォルトの名無しさん
09/06/07 01:21:13
C++がそうであるように、C#のすべての言語仕様なんぞ知る必要がない。

58:デフォルトの名無しさん
09/06/07 01:21:45
荒らしてんのは本当にVB厨なのか?
どうにも、実はCすらできないC++厨臭いんだがw

59:デフォルトの名無しさん
09/06/07 01:22:08
C#を、というより、「データ構造とアルゴリズム」の概念を身体に染み込ませれば、
あとはどの言語もリファレンス引きながら何とかなる。
プログラミング的「センス」ってのはあるけど、多少ださいソースでも
昨今の「ハイパワー」が補ってくれる。

ツールへの習熟度は軽視できないけど、
それよりも作る物の目的やその結果が全てでがしょ?

60:デフォルトの名無しさん
09/06/07 01:35:36
>>56
私はそうは思わない(癖が強い)けど、
まあ動的型言語と静的型付け言語とどちらを先に覚えるべきかと言えば、
静的型付けかもしれないなぁ。

でも動的型言語は最初にプログラムを作るのに覚えることが少ないから初心者向きともいえる。
教える側のスキルによっても結論は変わってきそうだ。

61:デフォルトの名無しさん
09/06/07 01:43:48
>>54>>55は物事を過小評価する奴だな。

62:デフォルトの名無しさん
09/06/07 01:46:43
そして、自信過剰になる傾向のある奴だな。
自分の弱点等には気付かないタイプだな。

63:デフォルトの名無しさん
09/06/07 01:47:33
アンタは過大評価しすぎだな>>61

64:デフォルトの名無しさん
09/06/07 01:48:14
ごめんね
C#がちょろっとできるようになっちゃったもんでつい調子に乗っちまった

65:デフォルトの名無しさん
09/06/07 01:49:55
そうか、ちょろっとしかできないくせに、調子に乗ってるのか

66:デフォルトの名無しさん
09/06/07 01:57:53
>>59
C++ って結局落とし穴やら最低必要な予備知識が多すぎてその
一般論すら通用しないんだよなぁとふと思った。

67:デフォルトの名無しさん
09/06/07 02:07:23
それでも標準的な言語ではあるわけで

68:デフォルトの名無しさん
09/06/07 02:10:23
標準的?
これまた曖昧な概念を持ち出したな

69:デフォルトの名無しさん
09/06/07 03:37:05
c#とjavaどちらが将来性があるかというと結局はMSとOracleどっちか将来性があるかということだ。

70:デフォルトの名無しさん
09/06/07 03:45:33
それは硬貨と紙幣どっちが将来性があるかと言いってるようなもんだ。


71:デフォルトの名無しさん
09/06/07 03:50:25
既に将来性うんぬんとかいうようなレベルじゃなくて十分に普及しているから、
自分の作るものがどちらで作るのが向いているのかで考えればいいんじゃないかな。

72:デフォルトの名無しさん
09/06/07 03:58:17
たいていどっちでも作れる

73:デフォルトの名無しさん
09/06/07 04:01:46
マルチスレッドって処理速度が早くなるの?

74:デフォルトの名無しさん
09/06/07 04:04:13
>>73
使い方次第

75:デフォルトの名無しさん
09/06/07 04:41:25
どうやって使ったら速くなるの?

76:デフォルトの名無しさん
09/06/07 06:09:45
解説サイト見ながら簡単なプログラムを作ってみたんですが、動作がおかしいんです。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?

77:デフォルトの名無しさん
09/06/07 06:51:28
ほい

78:デフォルトの名無しさん
09/06/07 07:23:28
C#でDirectXのD3DXの関数は使えますか?

79:76
09/06/07 07:26:17
おねがいします。これです。
URLリンク(ponyo.no-ip.org)

テキストボックスにgoogleのソースを表示するだけなんですが、
テキストが全洗濯状態になってしまいます。
どこを直せばいいんでしょうか。
C#2008です。

80:76
09/06/07 07:29:03
ついでにもう一つお願いします。
禁則処理(?)をなくして、単語の途中で改行するのを許可して、右端にスペースが
あかないようにする設定はありますでしょうか。

81:デフォルトの名無しさん
09/06/07 07:33:33
>>47
これから作るソフトにC#とVB.Netのどちらを選ぶか、って話には歴史関係ないじゃん

82:デフォルトの名無しさん
09/06/07 10:18:31
>>79
カーソル位置を設定していないと、フォーカス来たときに全選択になるんじゃないかな。
文字列設定した後に、textBox1.Select(0, 0);でカーソル位置先頭にするとか。
ワードラップは、、、、EM_SETWORDBREAKPROCを直接設定するしかないかも。

83:デフォルトの名無しさん
09/06/07 10:32:20
>>78
質問の仕方が怪しいな
DirectX使うっていうのは関数一つ二つでちょこっとできるようなものじゃないよ
使うとなるとプログラム全体がDirectXに染まる

ManagedDirectXとかSlimDXとか

84:デフォルトの名無しさん
09/06/07 13:20:41
VBからC#への移植で悩んでいます。
VBで数値(文字コード)を文字列に変換する部分で

s = Chr(x) + Chr(y)

をC#になおしたいのですが、自力で書き換えてみたらこんなに長くなってしまいました。
もうちょっと短く書く方法はないでしょうか?
とくにToString()を1文字ごとに呼び出すのが無駄っぽく思えるのですが。

s = ((char)x).ToString() + ((char)y).ToString();

85:デフォルトの名無しさん
09/06/07 13:26:22
>>84
C#で1文字ごとに処理すること自体あまりやらないことなので、
敢えて1文字ずつ処理してしまう場合にはそうなるのも仕方ないんじゃね?

86:デフォルトの名無しさん
09/06/07 13:27:06
追加。数値を文字列に変換するというなら、formatを使ってご覧。

87:デフォルトの名無しさん
09/06/07 13:29:08
>>84
2文字だったら、別に書き換える必要はないと思うけど。

どうしても、ToStringが嫌なら

s = new string(new[] { (char)x, (char)y });

88:デフォルトの名無しさん
09/06/07 13:31:43
string.Concat
中でToStringされるから意味も実際の動作も全く同じだけどどっちにしてもChrよりは速いよ

89:デフォルトの名無しさん
09/06/07 13:33:46
>>85
わかりました。
今回はchr関数を自作して置き換えることにします。

90:デフォルトの名無しさん
09/06/07 13:35:27
VBのアセンブリを参照設定して Chr() 関数使えばいいじゃん。

91:デフォルトの名無しさん
09/06/07 13:38:43
あ、考えてる間にレスが…
色々ありがとうございます。実際はもうちょっと式が長いんです。
とりあえず、一通り試してみます。

ちなみに単純なプログラムなので処理速度は問いません。
あくまでもVBからの移植性とか可読性(式の単純さ)の方を重視したいと思っています。

CharからStringへの暗黙の変換がないのはどうしてなんでしょうね。
ずっとVBばかりやってきたので不思議でしょうがありません。

92:デフォルトの名無しさん
09/06/07 13:40:39
>>90
すいません。その方法をもうちょっと詳しく教えてください。
そのexeはVB(のランタイム)の入ってないマシンでも実行できますか?

93:デフォルトの名無しさん
09/06/07 13:42:37
いやChrの戻り値もcharだから無意味

94:76
09/06/07 13:45:17
>>82
Select(0, 0)で全選択は解消できました。
右端で折り返すのはまだできません。むむむ

95:デフォルトの名無しさん
09/06/07 13:52:07
ついでにお願いします。
今回のchrとか、自作の関数をどこかにまとめていつでも使えるようにしておきたいのですが、
C#2008の流儀ではどうするのが推奨されているのでしょうか。

昔覚えたC言語ではlibフォルダにソースを入れておいて、<#include jisaku_lib.c>みたいにして
使ってた覚えがあるんですが。

96:デフォルトの名無しさん
09/06/07 13:54:02
>>92
VBのランタイムって、今のバージョンなら .NET Framework だよ。
なので、.NET Framework が入ってれば使える。

97:デフォルトの名無しさん
09/06/07 13:55:07
>>95
クラスライブラリプロジェクトを作って、アセンブリかプロジェクトを参照。

98:デフォルトの名無しさん
09/06/07 13:56:22
>>94
URLリンク(msdn.microsoft.com)(VS.80).aspx

99:デフォルトの名無しさん
09/06/07 13:58:17
>>96
なるほど、.NETが共通のライブラリなんですね。
ライブラリが共通なのに使える関数が言語ごとに違うのはなんとなく不思議な感じがします。

100:デフォルトの名無しさん
09/06/07 13:59:19
クラスライブラリにする
そこまでするほどではないと思うなら変なこと考えるよりソースコードをコピーしちゃったほうがいい
細かい依存が増えるとかえって煩雑になる

101:デフォルトの名無しさん
09/06/07 14:01:33
横レスすいません、>>90の方法を詳しく教えてもらえませんか?
それか開設してるサイトがあれば教えてください
VBからVCに移行したばかりなので、VBの関数を使えればすごく楽になりそうです


102:デフォルトの名無しさん
09/06/07 14:01:35
>>97
あ、なるほどわかりました。
「新しいプロジェクト」のテンプレートから「クラス ライブラリ」を選ぶんですね。
今まで一番先頭の「フォーム アプリ」しか選んだことがありませんでした。

103:デフォルトの名無しさん
09/06/07 14:03:42
>>94
こことか参考になるかな?
URLリンク(www.atmarkit.co.jp)

104:デフォルトの名無しさん
09/06/07 14:04:11
>>101
VC では無理。C++/CLI を除く。

105:デフォルトの名無しさん
09/06/07 14:08:24
最初の質問の内容なら、Formatを使えば十分なような気がするんだが……。

106:デフォルトの名無しさん
09/06/07 14:13:56
Microsoft.VisualBasic.dllを参照設定に入れるだけ
あんまりここでVBVB言わない方がいいよ
VB使いたくないから使う言語なんで

107:デフォルトの名無しさん
09/06/07 14:15:40
>>104
そうなのですか、ありがとうございました
>>106
分かりました、すいませんでした


108:デフォルトの名無しさん
09/06/07 14:31:18
>>105
始めたばかりなので、なんでもやってみたいんです。
それに、クラスライブラリの作り方も覚えておいて損はないと思うので。

で、とりあえずライブラリはできたんですが、ちょっとイメージと違っていたので
もうちょっと教えてください。参照設定にjisakuを入れて
先頭にusing jisaku; を足して、作った関数を使う場合、クラス名は省略できないんでしょうか。
今は、当然ですがClass1.chr()と書かないとエラーになります。
他の組み込み関数のように、いきなり関数名だけを書けるようにはできないでしょうか。

109:デフォルトの名無しさん
09/06/07 14:48:49
できない。

そもそも、C#に組み込み関数なんてないぞ。

110:デフォルトの名無しさん
09/06/07 15:11:13
意図的にできないようにしてる
型に厳しいのだって同じ
それはそれでメリットもあって、そういう「文化」なんだよ

111:デフォルトの名無しさん
09/06/07 15:15:30
その強制によって自動的にクラスごとにパッケージ化されるんだから、
決して悪くない方法だよな。名前の衝突がその分起こりにくくなる。

112:デフォルトの名無しさん
09/06/07 15:22:51
VS2010見てきたが、C++のインテリセンスは相変わらずなんだな。
未だに自動で変数の候補表示してくれねえし、予約語も認識しないし
いつになったらC#と同レベルになるのやら

113:デフォルトの名無しさん
09/06/07 15:25:26
>>91
暗黙の型変換ってバグの温床になるからなぁ。


114:デフォルトの名無しさん
09/06/07 15:26:33
>>112
だいぶ良くなってるよ。
C++はまず、インテリセンスが効かなくなるって状況がなくなっただけで感動しないと行けないレベル。

最初からツールアシストまで考えて設計されてる言語とC++比べたらかわいそう。


115:デフォルトの名無しさん
09/06/07 15:31:06
まー何でもアリのC++に比べたらC#はものすごい規則的で、
一度に覚えないといけないことが少ないからなぁ。

C++の諸悪の根源は、マクロと#includeとtypedefだな。
スレ違いだが。

116:デフォルトの名無しさん
09/06/07 15:38:35
VB→C#なら手で変換しなくてもいいやん

117:デフォルトの名無しさん
09/06/07 15:40:50
マクロはCから引き継いだ負債だな明らかに

118:デフォルトの名無しさん
09/06/07 15:42:03
>>115
最悪なのは define マクロだよ、これが全てのツールを全滅させる。
インテリセンスやドキュメント生成、果てはテストツールまで
文法も破壊してしまうし、理解できない深刻なバグも誘発する。

119:デフォルトの名無しさん
09/06/07 15:42:54
>>117
C#のdefineは、マクロじゃないぞ

120:デフォルトの名無しさん
09/06/07 15:47:59
>>119
流れ読めるならそんなツッコミは出ないはずなのだが…

121:デフォルトの名無しさん
09/06/07 15:49:19
つかC++の話題はC++スレでやれっちゅーの、おまえら何しに来てんだ?

122:デフォルトの名無しさん
09/06/07 17:27:25
異文化交流だよ

123:デフォルトの名無しさん
09/06/07 17:41:14
せめてC++マスターしてからこいよ

124:デフォルトの名無しさん
09/06/07 17:50:48
マスター(苦笑)

125:デフォルトの名無しさん
09/06/07 18:53:07
そこまで書いたんなら最後まで教えてあげようよ

>>107
参照設定でMicrosoft.VisualBasic.dllを入れると
Microsoft.VisualBasicという名前空間でVB固有のクラスが使えるようになる

C言語は文字列をcharの配列で代用するという文化があって、
今でもCharとChar[]とStringを厳密に区別するから
文字列の処理は微妙にややこしいんだよな。
一番VBを使いたくなるのは、たぶんこういう時。

126:デフォルトの名無しさん
09/06/07 19:48:21
> C言語は文字列をcharの配列で代用するという文化があって、
これ関係なくない?

むしろ、スクリプト言語の
どんどん暗黙の型変換を行いますよ
っていう文化の有無によるものだと思うんだけど

127:デフォルトの名無しさん
09/06/07 20:09:23
生のC言語は文字列の扱いもう少し何とかならんかったのかとは思う

128:デフォルトの名無しさん
09/06/07 20:22:27
文字列が扱えたら低級言語じゃなくなるだろ。
マクロだって微量のスタック領域しかない昔の処理系ではとくに有用なんだよ。

129:デフォルトの名無しさん
09/06/07 20:25:29
要するに時代遅れって事だな

130:デフォルトの名無しさん
09/06/07 20:29:33
それは違う。
ダイヤモンドの原石とダイヤモンドを比べて原石のほうを時代遅れと言ってるようなもの。

131:デフォルトの名無しさん
09/06/07 20:31:12
C++だってマクロがなければ価値が半減する。
マクロがなかったらMFCなんか使えたもんじゃないよ。

132:デフォルトの名無しさん
09/06/07 20:35:18
お前らC#以外の言語大好きだな

133:デフォルトの名無しさん
09/06/07 20:54:43
結局昨日から沸いてる変な人に釣られてるんだよ…
さぞほくそ笑んでるだろうよ

134:デフォルトの名無しさん
09/06/07 20:57:20
まったくC++に疲れ果ててC#に移り住んだのに、ここでC++の話題かよ
今後もC++使いたい奴は話し相手がいないからってここに来るなよw

135:デフォルトの名無しさん
09/06/07 21:03:00
>>134
ある意味、C++の愚痴大会w

136:デフォルトの名無しさん
09/06/07 21:16:12
C++のスレが最近やたらアゲられるが強烈に自演臭いんだよな、そんなに寂しいかwww

137:デフォルトの名無しさん
09/06/07 21:20:47
皆C++一度は経験してるの?
C#の前にC++やっといたほうがいい?


138:デフォルトの名無しさん
09/06/07 21:22:07
C++の勉強?必要ないかと
経験はあるよ、そりゃ当然、オレおっさんだし。

139:デフォルトの名無しさん
09/06/07 21:27:27
C++のコンパイルの遅さとデバッグの面倒さに嫌気がさしてC#に移ってきましたよ

C++の知識はいらんけど、Cのライブラリの呼び出し方とCOMの知識はあると便利

140:デフォルトの名無しさん
09/06/07 21:37:19
>>137
今から始めるなら別にC++要らない。
(参考程度に後から調べるとかはありだと思うけど)
今C++愚痴まくってるのは、俺含めみんな多分おっさん。

141:デフォルトの名無しさん
09/06/07 21:42:28
ありがとございます
そんなにC++って面倒なのですか?
C#の方がメリットがありそうな感じとwikiで読んだぐらいなので、実感はありませんが
そんなに面倒ならC++組もC#に乗り換えればいいと思うんですがねぇ

142:デフォルトの名無しさん
09/06/07 21:46:18
>>141
しつこい、C++スレに池

143:デフォルトの名無しさん
09/06/07 21:47:35
ただし向こうでC#の名前を出すなよ面倒だから

144:デフォルトの名無しさん
09/06/07 21:49:21
textbox1.Text = "1";
textbox2.Text = "1" + "あ";

これを

string s = "1";
textbox1.Text = s;
textbox2.Text = s + "あ";

って書く意味は何が有利なの?

145:デフォルトの名無しさん
09/06/07 21:50:21
C#使いの大半はC++からの移行組みのせいか
C++経験ない人は劣等感ありまくりだな。

146:デフォルトの名無しさん
09/06/07 21:50:53
業務上の都合というものが色々あってだな

147:デフォルトの名無しさん
09/06/07 21:50:58
"1" が別の文字列に変わったときに修正する箇所が1箇所で済む

148:デフォルトの名無しさん
09/06/07 21:51:09
うぜーな、自分で考えろ、sの定義行書き換えたら一斉に変更がきくってだけだろ。死ね。

149:デフォルトの名無しさん
09/06/07 21:51:53
初心者は保守性第一に書くのが吉。

150:デフォルトの名無しさん
09/06/07 21:52:37
C++荒らしの自演だろ、アホくさ

151:デフォルトの名無しさん
09/06/07 21:52:42
>>1-1000
スレ違い

152:デフォルトの名無しさん
09/06/07 21:52:58
>>148
それだけじゃねーだろ。コンパイル結果見ろ。見て分からなきゃ市ね。

153:デフォルトの名無しさん
09/06/07 21:53:32
>>150
どんだけ劣等感持ってんだよw

154:デフォルトの名無しさん
09/06/07 21:55:43
>>152
分からん
死ぬ前に教えてくれ

155:デフォルトの名無しさん
09/06/07 21:56:03
C++も極めればそれなりに使える、自演C++厨房は巣に帰ってガンバレ

156:デフォルトの名無しさん
09/06/07 21:57:34
C++に過剰反応する奴はもう寝ろ。疲れてるだろ。

157:デフォルトの名無しさん
09/06/07 21:57:35
コンパイル結果はJIT次第だ、ローレベルの話がしたくて仕方がないC++坊は無視

158:デフォルトの名無しさん
09/06/07 21:58:37
>>156
あのさぁ、過剰反応つーか、埋め尽くすなよって話だろ
ここなんのスレだよ?言ってみろ

159:デフォルトの名無しさん
09/06/07 21:58:52
>>157 ← JITがどういう処理をしてるか分かってない奴。

160:デフォルトの名無しさん
09/06/07 22:00:47
>>158
反応しないでスルーできないのか?  スルーしたら埋め尽くされないの。2ch初心者?
おまえみたいのがいるから荒れるんだよ。

161:デフォルトの名無しさん
09/06/07 22:02:12
>>158
スルーしろっつってんだよ。馬鹿か?

162:デフォルトの名無しさん
09/06/07 22:02:15
ほっとていも、ほっとかないでも酷有様、つか埋め尽くし犯人お前だろ >> 160

163:デフォルトの名無しさん
09/06/07 22:02:41
だまんねえと改行で埋めるぞ

だまれ

164:デフォルトの名無しさん
09/06/07 22:03:02
>>158
【魔力】書き込むと願いが必ず叶うスレ【強力】409
だろが

165:デフォルトの名無しさん
09/06/07 22:04:11
C++の人アタマおかし過ぎ

166:デフォルトの名無しさん
09/06/07 22:04:58
それにしても >>142 一人で必死すぎだろw

167:デフォルトの名無しさん
09/06/07 22:05:08
>>164
VB スレに誤爆すんなよw

168:デフォルトの名無しさん
09/06/07 22:05:31
"1"が他に置き換わるような設計してる時点でミスですよ僕に言わせれば

169:デフォルトの名無しさん
09/06/07 22:06:03
心療内科へいって治療してもらえ

170:デフォルトの名無しさん
09/06/07 22:06:22
クラック対策だろjk

171:デフォルトの名無しさん
09/06/07 22:08:37
メソッド内部で書かれたsは定数として処理されて出てこないよ
上でも下でも出力は一緒ね、メンテの問題だけね、変なやついるから相手すんなよ

172:デフォルトの名無しさん
09/06/07 22:10:14
出力が違うと思ってた奴は一人もいないのに偉そうに説明すんな。

173:デフォルトの名無しさん
09/06/07 22:11:01
>>171
分かってないな。そんな話じゃないだろ。

174:デフォルトの名無しさん
09/06/07 22:11:39
つまらん話で発狂するなよ

175:デフォルトの名無しさん
09/06/07 22:12:31
よほどコンプレックスがあるのだろう。

176:デフォルトの名無しさん
09/06/07 22:12:43
もりあがってまいりました

177:デフォルトの名無しさん
09/06/07 22:14:07
向上心なければどの言語でも無駄って事を知れ C++ の人

178:デフォルトの名無しさん
09/06/07 22:16:17
おい黙れって言ってるだろ

179:デフォルトの名無しさん
09/06/07 22:21:59
黙ったぞ

180:デフォルトの名無しさん
09/06/07 22:23:52
>>178-179
お前変過ぎる、精神病院へいけ、今すぐ

181:デフォルトの名無しさん
09/06/07 22:28:46
>>157
ふつうに考えてC#のコンパイル結果ってILの話だと思うぞ。

182:デフォルトの名無しさん
09/06/07 22:30:27
>>157 >>171
スレが荒れているので聞き流されるかもしれないが、C#のコンパイラはあまり最適化などかけず、
かなり素直なコードを吐き出すんだが、それを知っているんだろうか。
public void SampleMethod1()
{
this.textBox1.Text = "1";
this.textBox2.Text = "1あ";
}
public void SampleMethod2()
{
string s = "1";
this.textBox1.Text = s;
this.textBox2.Text = s + "あ";
}
最初の質問の例を一旦コンパイルした後、ディスアセンブルするとこんな感じになる。
ほとんど最適化されてない。

183:デフォルトの名無しさん
09/06/07 22:35:40
ディスアセンブル? バイナリをアセンブラにすることなんだが。

184:デフォルトの名無しさん
09/06/07 22:39:25
メソッドのインライン展開が行われたりするのは実行時なんだが、それを知っているんだろうか。

185:デフォルトの名無しさん
09/06/07 22:42:36
>>182
ILやメタデータって string s のローカル変数名を保持してんの?
もしそうなら恥ずかしい名前つけれないんだが。

186:デフォルトの名無しさん
09/06/07 22:45:18
>>184
そんなことは当たり前のことだから省略した。長かったからな。
>>185
そう。だから.NET用の難読化ツールとかが出回ってたりする。
前のスレでも話題になった。

187:デフォルトの名無しさん
09/06/07 22:46:22
>>185
保持はしていないね、直接定数をロードしている。
ちなみに const string s = 1; としてしまえばどちらも一緒。

188:デフォルトの名無しさん
09/06/07 22:49:09
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0006: ldstr "1"
IL_000b: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0010: ldarg.0
IL_0011: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0016: ldstr "1a"
IL_001b: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0020: ret
ちなみにこんな感じだね、しかしこんなのチクチク詰めていっても関係無くないw
あほくさあほくさ

189:デフォルトの名無しさん
09/06/07 22:50:03
フィールドと違って最適化で消えることはあるけど基本的には保持される

190:デフォルトの名無しさん
09/06/07 22:50:38
じゃあディスコンパイルしたらどうやって >>182 の sって名前を特定したんだ?
>>182 はガセ?

191:デフォルトの名無しさん
09/06/07 22:51:29
いちいちツッコミどころかC++厨房うぜぇーって感じだな

192:デフォルトの名無しさん
09/06/07 22:52:50
ガセではない。IL表記ならこうだ。
.method public hidebysig instance void SampleMethod2() cil managed
{
.maxstack 3
.locals init (
[0] string s2)
L_0000: ldstr "1"
L_0005: stloc.0
L_0006: ldarg.0
L_0007: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox ImageComposer.Form1::textBox1
L_000c: ldloc.0
L_000d: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
L_0012: ldarg.0
L_0013: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox ImageComposer.Form1::textBox2
L_0018: ldloc.0
L_0019: ldstr "\u3042"
L_001e: call string [mscorlib]System.String::Concat(string, string)
L_0023: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
L_0028: ret
}

193:デフォルトの名無しさん
09/06/07 22:52:51
reflectorでぐぐれ

194:デフォルトの名無しさん
09/06/07 22:53:51
ああ、s2になっているのは、ローカル変数がたまたまsという
名前になっているのではないかと疑ったので変えてみた。

195:デフォルトの名無しさん
09/06/07 22:56:46
>>192
おや、おれのと結果違うね
.method private hidebysig instance void Test2() cil managed
{
// コード サイズ 41 (0x29)
.maxstack 3
.locals init (string V_0)
IL_0000: ldstr "1"
IL_0005: stloc.0
IL_0006: ldarg.0
IL_0007: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_000c: ldloc.0
IL_000d: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0012: ldarg.0
IL_0013: ldfld class [System.Windows.Forms]System.Windows.Forms.TextBox WindowsFormsApplication2.Form1::textBox1
IL_0018: ldloc.0
IL_0019: ldstr "a"
IL_001e: call string [mscorlib]System.String::Concat(string,
string)
IL_0023: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0028: ret
} // end of method Form1::Test2
まっ、こんなのはコンパイラのバージョン次第で何でてるくかなどコンパイラの作り手の勝手なわけですが。

196:デフォルトの名無しさん
09/06/07 22:59:04
/oの有無の違いに決まってるだろjk

197:デフォルトの名無しさん
09/06/07 23:01:27
pdbファイルが同じディレクトリにあったらildasmが読んでるみたいだ
アセンブリ自体には含まれない

198:デフォルトの名無しさん
09/06/07 23:04:17
しかしなんで string s 使うか直書きするかの違いがILDの話になるんだと……
おかしくね?

199:デフォルトの名無しさん
09/06/07 23:04:40
試したらアセンブリ自体には含まれないな。冷や汗かいたぜ。

200:デフォルトの名無しさん
09/06/07 23:05:45
アホのC++坊よけには丁度いいかもしれんけど

201:デフォルトの名無しさん
09/06/07 23:08:33
結論:string s 推奨。

202:デフォルトの名無しさん
09/06/07 23:18:48
あんだけ荒れてたのにスレ止まった・・

203:デフォルトの名無しさん
09/06/07 23:22:07
C#の話題、C++であってもC#と関連する話ならいくらでもレス付けますがな
C++サイコーっていいたいなら巣に帰れって事

204:デフォルトの名無しさん
09/06/07 23:25:41
C++サイコーなんて主旨の書き込みはどこにもないわけだが。
一人必死でC++叩いてる奴が荒らしてただけだよ。

205:デフォルトの名無しさん
09/06/07 23:30:09
まったくこれだけ書き込みまくっていけしゃぁしゃぁと、死んでしまえw

206:デフォルトの名無しさん
09/06/07 23:34:10
一人汚いレスばかりする人がいますな。

207:デフォルトの名無しさん
09/06/07 23:37:31
C++の人さ、努力って大事だよ、ちゃんと勉強してC++使えるようになろうな
そしたら、こんなスレッドで嫌がらせなどしなくても自信もって生活できるようになる。

208:デフォルトの名無しさん
09/06/07 23:48:10
>>141はC++が初心者装った嫌味に見え
>>142が反応した
という流れじゃなかろうか

209:デフォルトの名無しさん
09/06/07 23:50:46
ちょっと話変わるけど、Visual studio 2010でC#のインテリセンス変わったよな。
インクリメンタルサーチ式になったけど、あれはもう旧式に戻らないのか?オプションに設定項目はなかったが
進化だとしても旧式も用意して欲しいもんだ

210:デフォルトの名無しさん
09/06/08 00:03:54
え?

211:デフォルトの名無しさん
09/06/08 00:15:42
>>207
そうやって煽ってるのはおまえ一人だけなんだが。さっさと消えろカス。

212:デフォルトの名無しさん
09/06/08 04:04:23
C#勉強中です。

Google LABSのソースコード検索をマニュアルの補助に使っているのですが、
ちょっと疑問に思うコードがあったので教えてください。

リソースの解放を確実に行うため、usingを使ってスコープを定義すると
いう方法があると思うのですが、そのコードではこう書かれていました。

SQLiteDataReader reader;
using (reader = command.ExecuteReader())
{
 何かの処理
}

この様にusingの外にDataReaderを定義して、usingの終わりで確実に
Dispose()されるのでしょうか?


213:デフォルトの名無しさん
09/06/08 04:12:07
>>212
SQLiteDataReader reader;
try
{
}
finally


のように宣言することが推奨されている。

URLリンク(msdn.microsoft.com)

214:デフォルトの名無しさん
09/06/08 04:14:03
すまん変なところで送信してしまった。

SQLiteDataReader reader;
{
try
{
 // 何かの処理
}
finally
{
 if (reader != null) ((IDisposable)reader).Dispose();
}
}
と同等だけど
using (SQLiteDataReader reader = command.ExecuteReader())
{
 // 何かの処理
}
のように宣言することが推奨されている。

215:デフォルトの名無しさん
09/06/08 04:14:22
>>212
using が実は現状確実にDispose してくれないという話的には Dispose され
ないと答えるけど、その話を除けば普通に
using(SQLLiteDataReader reader...)
とした場合と同等レベルには Dispose される。

これとそれの違いはスコープぐらいかな、意図がそれだけだと正直わか
らんが。

216:212
09/06/08 04:38:37
>>213-215
ありがとうございました。

GCがいつ実行されるか分からないというのは一応承知してます。
安心してusing内に書くようにします。


217:デフォルトの名無しさん
09/06/08 05:08:35
>>216
あー。GC とかは関係ない。
説明すると、現状の using には Abort されたときの耐性がない
という話。
インスタンスが生成された直後とローカル変数に代入されるまでの
間にスレッドが Abort されれば Dispose は呼ばれない。それも
含めて Finalizer が必要な理由にもなっている。
と思って今確認したら try の外でやってるし…なら try に入るまで
かな。

めったに問題になることじゃないので記憶の片隅においておくだけで
いい知識だが。

218:212
09/06/08 05:59:16
>>217
ありがとうございます。

今の自分の知識ではお話の半分ほどしか分かりませんが、
滅多に問題になることはないということも含めてメモっておきます。


219:デフォルトの名無しさん
09/06/08 11:26:26
あるフォームに対して、サイズ変更枠が付いたままタイトルバー有り無しの
切り替えをしたいと思い、フォームのコンテキストメニューから「切り替え」を
選択した際に、タイトルバーをなくす場合はフォームのTextを空にして
ControlBoxをfalseにしています。しかしControlBox=falseかつText=""
という操作をすると、それ以降Application.Exitで終了したときに
FormClosingイベントが呼ばれなくなってしまいます。
フォームの終了時に設定を保存したいのですが、終了処理はどこで
行えばいいでしょうか。よろしくお願いします。

220:デフォルトの名無しさん
09/06/08 13:03:06
>>219
操作中に例外が発生してるんじゃないかな。
そうすると何も起こらず終了しているように見えることがある。
コントロールの存在・状態チェックはしっかりやろう。

221:219
09/06/08 13:39:01
>>220
ありがとうございます。存在していないコントロールに触っているのかと思い、
原因を調べるために怪しい所を省いた以下のソースを実行してみたんですが
やはりフォームのTextを空にしてControlBox=falseとすると、FormClosing
のところにブレークポイントを設定してもヒットしなくなりました
URLリンク(sakuratan.ddo.jp)

こういう場合にはFormClosingイベント等は使えないのでしょうか。。。

222:デフォルトの名無しさん
09/06/08 13:41:22
>>221
というか、Application.Exit()じゃなくてメインのフォームをクローズするのが普通じゃないの?

223:デフォルトの名無しさん
09/06/08 13:48:16
>>>222
そうですね、よく考えたらサブのフォームからでも
MainForm.Close()ってすればいいんですよね
Application.Exitの事は忘れます。ありがとうございました

224:デフォルトの名無しさん
09/06/08 14:31:59
二つの配列を一つにまとめるにはどうしたらいいでしょうか?

int[] a = {1,2,3};
int[] b = {4,5,6};

int[] c = {1,2,3,4,5,6};

225:デフォルトの名無しさん
09/06/08 14:47:35
c = a.Concat(b).ToArray();

226:デフォルトの名無しさん
09/06/08 14:59:34
225> 出来ました。ありがとうございます(_ _)

227:デフォルトの名無しさん
09/06/08 19:56:13
Window Formの初期化のタイミングとして、
1.コントラクタのInitializeComponent();の後、
2.Loadイベントハンドラ内、
3.フォーム表示直後のShownイベントハンドラ内
の3つがあると思います。

1,2と3はフォームが表示される前か後ろかという違いがありますが、
1と2ではどういう違いがあるのでしょうか?


228:デフォルトの名無しさん
09/06/08 20:07:05
newしたときに呼び出されるか表示とかしようとしたときに呼び出されるか

229:デフォルトの名無しさん
09/06/08 20:08:23
C#ってASP開発できるんですか?

230:デフォルトの名無しさん
09/06/08 20:14:18
ASP.netなら出来る

231:デフォルトの名無しさん
09/06/08 20:20:21
>>228
なるほど、ということは、

コンストラクタ→New後、フォーム表示前に一度だけ実行

Loadイベントハンドラ→フォーム表示前に実行。リロードしたら再度実行される。

Shownイベントハンドラ→フォーム表示後一度だけ実行(リロードしても実行しない)

くらいに考えとけば良いですか。

232:デフォルトの名無しさん
09/06/08 20:30:49
普通、Windows Forms にリロードという概念はない。

233:デフォルトの名無しさん
09/06/08 20:35:35
〜Changedっていうイベントはオブザーバーパターンなんですか?

234:デフォルトの名無しさん
09/06/08 20:47:44
>>232
・・・もう一度マニュアル読んできます。
ありがとうございました。

235:デフォルトの名無しさん
09/06/08 20:50:26
イベントはイベントだろ

236:デフォルトの名無しさん
09/06/08 20:51:31
今日なんかあるの?

237:sage
09/06/08 21:28:25
VisualC#2008で、再表示がうまくできずに困っています。
fileSystemWatcher
でファイルを監視し、ファイルを読みこんで表示しようとしています。

string file = @"C:\tmp.txt";
public Form1()
{
InitializeComponent();
}

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));
//MessageBox.Show(lines[1]);
label1.Text = lines[1];
label2.Text = lines[2];
label3.Text = lines[3];
label4.Text = lines[4];
label5.Text = lines[5];
}
監視はできているようなのですが、2度めの表示が行われません。
どこがまずいんでしょうか。


238:デフォルトの名無しさん
09/06/08 21:38:16
public static List<T> a = new List<T>();
↑静的なListって可能なんですか?
どうやってメモリを確保しているんですか。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4679日前に更新/222 KB
担当:undef