[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 04/03 03:17 / Filesize : 222 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part41



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

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part40
pc12.2ch.net/test/read.cgi/tech/1239599317/

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

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

ManagedDirectXとかSlimDXとか

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

s = Chr(x) + Chr(y)

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

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

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

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

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

どうしても、ToStringが嫌なら

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

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

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

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



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

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

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

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

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

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

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

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

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

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

98 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 13:56:22 ]
>>94
msdn.microsoft.com/ja-jp/library/8ksw88aw(VS.80).aspx

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

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



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


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

103 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:03:42 ]
>>94
こことか参考になるかな?
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37654&forum=7

104 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:04:11 ]
>>101
VC では無理。C++/CLI を除く。

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

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

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


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

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

109 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 14:48:49 ]
できない。

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

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



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

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

113 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:25:26 ]
>>91
暗黙の型変換ってバグの温床になるからなぁ。


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

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


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

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

116 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:38:35 ]
VB→C#なら手で変換しなくてもいいやん

117 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:40:50 ]
マクロはCから引き継いだ負債だな明らかに

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

119 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 15:42:54 ]
>>117
C#のdefineは、マクロじゃないぞ

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



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

122 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:27:25 ]
異文化交流だよ

123 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:41:14 ]
せめてC++マスターしてからこいよ

124 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 17:50:48 ]
マスター(苦笑)

125 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 18:53:07 ]
そこまで書いたんなら最後まで教えてあげようよ

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

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

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

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

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

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

129 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:25:29 ]
要するに時代遅れって事だな

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



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

132 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 20:35:18 ]
お前らC#以外の言語大好きだな

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

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

135 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:03:00 ]
>>134
ある意味、C++の愚痴大会w

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

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


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

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

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

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



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

142 名前:デフォルトの名無しさん [2009/06/07(日) 21:46:18 ]
>>141
しつこい、C++スレに池

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

144 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:49:21 ]
textbox1.Text = "1";
textbox2.Text = "1" + "あ";

これを

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

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

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

146 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:50:53 ]
業務上の都合というものが色々あってだな

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

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

149 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:51:53 ]
初心者は保守性第一に書くのが吉。

150 名前:デフォルトの名無しさん [2009/06/07(日) 21:52:37 ]
C++荒らしの自演だろ、アホくさ



151 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:52:42 ]
>>1-1000
スレ違い

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

153 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:53:32 ]
>>150
どんだけ劣等感持ってんだよw

154 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:55:43 ]
>>152
分からん
死ぬ前に教えてくれ

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

156 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:57:34 ]
C++に過剰反応する奴はもう寝ろ。疲れてるだろ。

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

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

159 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 21:58:52 ]
>>157 ← JITがどういう処理をしてるか分かってない奴。

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



161 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:02:12 ]
>>158
スルーしろっつってんだよ。馬鹿か?

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

163 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:02:41 ]
だまんねえと改行で埋めるぞ

だまれ

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

165 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:04:11 ]
C++の人アタマおかし過ぎ

166 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:04:58 ]
それにしても >>142 一人で必死すぎだろw

167 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:05:08 ]
>>164
VB スレに誤爆すんなよw

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

169 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:06:03 ]
心療内科へいって治療してもらえ

170 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:06:22 ]
クラック対策だろjk



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

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

173 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:11:01 ]
>>171
分かってないな。そんな話じゃないだろ。

174 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:11:39 ]
つまらん話で発狂するなよ

175 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:12:31 ]
よほどコンプレックスがあるのだろう。

176 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:12:43 ]
もりあがってまいりました

177 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:14:07 ]
向上心なければどの言語でも無駄って事を知れ C++ の人

178 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:16:17 ]
おい黙れって言ってるだろ

179 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 22:21:59 ]
黙ったぞ

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



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

182 名前:デフォルトの名無しさん mailto:sage [2009/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 + "あ";
}
最初の質問の例を一旦コンパイルした後、ディスアセンブルするとこんな感じになる。
ほとんど最適化されてない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<222KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef