5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

■前スレ
ふらっとC#,C♯,C#(初心者用) Part73
http://hibari.2ch.net/test/read.cgi/tech/1302422250/

■関連スレ
C#, C♯, C#相談室 Part66
http://hibari.2ch.net/test/read.cgi/tech/1303889653/
ミスターサタンのC#相談室 
http://hibari.2ch.net/test/read.cgi/tech/1092656075/
VB.NET質問スレ(Part36)
http://hibari.2ch.net/test/read.cgi/tech/1301828549/
くだすれC++/CLI(初心者用)part2
http://hibari.2ch.net/test/read.cgi/tech/1268613679/

128 :デフォルトの名無しさん:2011/05/05(木) 01:56:39.54
Disposeの実装ってスレッドセーフであるべき?
ネット上にあるサンプルの中にはlockを使ってスレッドセーフにしてあるのもあるけど、
これの必要性っていかほど?
複数のスレッドから同時にDisposeを呼び出すシチュエーションがいまいち想像できないんだけど。

129 :デフォルトの名無しさん:2011/05/05(木) 02:59:29.47
必要であればそうすべきなだけで、全部が全部スレッドセーフに実装する必要はないのでは

言い方を変えれば、全てのクラスがIDisposableを実装してるわけではないだろう?
必要ないからだ

130 :デフォルトの名無しさん:2011/05/05(木) 03:12:35.47
>>128
あんまり一般的なシナリオでもないけど、
並列に処理を始めて、最初に帰ってきた1つの値だけを採用したい
最初の1つが終われば残りは止めていい、
止めるのにDisposeを使う
とか?

131 :デフォルトの名無しさん:2011/05/05(木) 03:25:21.30
ありえないと思うけど時限式のキャッシュを作ってる時とか?

俺の頭だとその辺の想像が限界だなあ

132 :デフォルトの名無しさん:2011/05/05(木) 09:45:47.40
明示的呼び出しによるDisposeの実行中にファイナライザによるDispose呼び出しが行われることはあるかも
明示的なDisposeの最後にGC.SuppressFinalize(this)を入れとけばたぶんおk

133 :132:2011/05/05(木) 09:50:05.75
KeepAliveか
訂正

134 :デフォルトの名無しさん:2011/05/05(木) 13:52:27.51
プロセス制御のシステムで仕方なく・・・
プロセスからの標準出力読み込みやプロセス終了など非同期イベントと、
ファイルハンドルなどリソース解放の関係でDisposeにロック付けた。
正直うまくない手だったと思う。エレガントな方法思いつかなかった。

135 :デフォルトの名無しさん:2011/05/05(木) 15:20:08.89
すみませんが、VS2010EEでパーシャルクラスの追加の仕方を教えてください。
Form1.cs(既に自動作成されたForm1のパーシャルクラス)が大きくなりそうなので、
もう一つ分けて書こうと思うのですが、
普通にクラスの追加でForm1.csとすると同名のファイルが競合するとでます。
別名で作って、Partialに変え、リファクタで名前変更かと思いきや、それも駄目でした。
どういう手順で追加すればいいのでしょうか?

136 :デフォルトの名無しさん:2011/05/05(木) 15:25:09.86
リファクタリングじゃなくてエディタで直接クラス名をForm1に書き換えればいいよ

137 :デフォルトの名無しさん:2011/05/05(木) 15:27:23.68
それでファイル同士の関連付けは出来るのですか?
ちょっと試してみます。ありがとうございました。

138 :デフォルトの名無しさん:2011/05/05(木) 16:10:13.71
あのー・・・追加したクラスから、Form1のコントロール類に繋がらないのですが。


139 :デフォルトの名無しさん:2011/05/05(木) 16:21:55.61
追加したファイルをデザイナで開いて、空のフォームが表示されるなら成功
コードからはフォームのコントロールにアクセスできるはず
ただし.designer.csを認識しないので、デザインを弄る場合はもともとのファイルを編集する必要がある

デザイナで開けない場合は既存のフォームと名前空間かクラス名が違うんだと思う

140 :デフォルトの名無しさん:2011/05/05(木) 16:56:47.40
空のフォームは開きましたが、コードでコントロールにあくせすできません。
何か足りないのかな?パーシャルクラスって、Form1.csの2ページ目みたいな漢字化と思ってたんだけど、
ちがうのかな?

141 :デフォルトの名無しさん:2011/05/05(木) 17:36:31.50
テレパス召喚

142 :デフォルトの名無しさん:2011/05/05(木) 17:46:26.93
言語やコンパイラが対応しているというのと、
Visual StudioなどのIDEがサポートしているかどうかは別の話だな。
.csprojファイルを無理やりいじってみたけどIDEの動作はやっぱ変だった。


143 :デフォルトの名無しさん:2011/05/05(木) 17:52:14.59
そうなんだ・・・じゃあ、この状態で正しいプログラムが書ければ、
コンパイルは通るかもしれない、ってことなのかな。
でもまだIDEがないと書けない初心者だから・・・
VSの正しい手順でパーシャルクラスの追加って何処かに出てないですかね?


144 :デフォルトの名無しさん:2011/05/05(木) 17:57:13.87
タイムスリップ設定を被せてきてる時点でそんな意識はないだろ

145 :デフォルトの名無しさん:2011/05/05(木) 17:58:23.33
oh..誤爆

146 :デフォルトの名無しさん:2011/05/05(木) 18:05:42.64
Form1.cs コードの表示→全部選択→コピー

追加→新しい項目→クラス

Class1.cs コードの表示→全部選択→削除→貼り付け

public partial class Form1:Form の中身を削除

ビルド

こっちの環境は2005だけどたぶん2010でもうまくいくと思うよ



147 :デフォルトの名無しさん:2011/05/05(木) 18:13:27.40
追加したパーシャルクラスを書いたコードをフォームエディタで開かないようにすればおkだろ

namespace WindowsFormsApplication1
{
 public partial class Form1
 {
  private void Hage()
  {
   //... ふつうにForm1のフィールドにアクセスできる
  }
 }
}

つーかデフォルトのエディタをコードエディタにしろよな

148 :デフォルトの名無しさん:2011/05/05(木) 18:36:03.21
あ、できました!ありがとうございます!!
あーーー、そういうことかーーーー!
いや、完全に勘違い。言われてみればそうだわ。


149 :デフォルトの名無しさん:2011/05/06(金) 10:33:57.11
鯖プログラムを作ってみたい。
ブラウザでなく専用アプリをインストールした2台以上のPC間で
各PCからの入力状況を読み込んで鯖で処理してクライアントにリアルタイムで表示を返す。

こういうのってWPFとかsilverlightを使うことになるの?
とっつきの方向を教えてください。
数台ならP2Pになるんでしょうか?
P2Pなら鯖プログラムなしで各クライアントが処理しなきゃならんのですよね。

っていうかプログラムしなくてもネット接続されたPCのIPアドレスとかから
各PCの特定ポートに常時データをPUSH出来るんだっけ?

150 :デフォルトの名無しさん:2011/05/06(金) 10:35:05.88
>>149
WCFで通信すれば楽にできそうだな

151 : 忍法帖【Lv=40,xxxPT】 :2011/05/06(金) 10:53:27.62
適当に知ってる用語を並べてる感じ

152 :デフォルトの名無しさん:2011/05/06(金) 11:30:34.65
普通にソケット通信使えば?
融通効くし

結局何がやりたいかによる気がする。


153 :デフォルトの名無しさん:2011/05/06(金) 12:01:02.35
ゲームにきまってんだろ

154 :デフォルトの名無しさん:2011/05/06(金) 13:16:34.42
>P2Pなら鯖プログラムなしで
考えようによるがソケットつなぐ時鯖は必ず存在しているわけで・・・
これ以上は突っ込まない方がいいのかな?

155 :デフォルトの名無しさん:2011/05/06(金) 13:32:24.03
用語の認識が適当だからー
突っ込んでも通じないよー

156 :デフォルトの名無しさん:2011/05/06(金) 17:17:48.04
やっぱ鯖は味噌煮に限る

157 :デフォルトの名無しさん:2011/05/06(金) 17:48:04.10
キーを押し続けるとキーリピートしますが、
この機能をC#でON/OFFする方法を教えてください。

158 :デフォルトの名無しさん:2011/05/06(金) 19:23:39.75
C#を使わずにDirectINPUTでするしかない

159 :デフォルトの名無しさん:2011/05/06(金) 20:05:18.56
KeyUpで我慢しなさい

160 :デフォルトの名無しさん:2011/05/06(金) 21:01:35.23
bool isPressing = false;

//KeyDownのハンドラ
{
if (!isPressing) { [ 初回押下時の処理 ]; isPressing = true; }
}

//KeyUpのハンドラ
{
isPressing = false;
}

161 :デフォルトの名無しさん:2011/05/06(金) 21:20:30.16
>>160
おお!素晴らしい!上手くいきました。ありがとうございます!

162 :デフォルトの名無しさん:2011/05/07(土) 01:43:24.05
2chてさ、適当な事書いとけば
真っ赤な顔して正しいことを調べ廻ってくれる親切な人が居るから
スゲー 便利www

163 :デフォルトの名無しさん:2011/05/07(土) 01:44:41.44
そういうことしてるから、周りの要求レベルが上がって対応できなくて自爆しちゃうんだよ。

164 :デフォルトの名無しさん:2011/05/07(土) 02:17:27.25
周りの要求レベルが上がって・・・

165 :デフォルトの名無しさん:2011/05/07(土) 07:40:49.06
おさわり禁止

166 :デフォルトの名無しさん:2011/05/07(土) 08:23:49.11
>>162
酷い負け惜しみだなwww
>>160の発想は素晴らしいと思うよ。
”キーリピート”でググっても、「無理」とか「間隔を最大に伸ばす」
みたいなのしか出てこないけど、多分皆、リピートを止めることしか考えてなかったんだな。
恥ずかしながら自分もそうだったんだけど。
でも180度逆から、リピートは止めずにハンドラを回避するアプローチはお見事。
在りそうで思いつかなかった。しかもフラグ1本で簡単。勉強になった!

167 :デフォルトの名無しさん:2011/05/07(土) 08:52:28.78
普通の人はKeyUp使うから・・・^^;

168 :デフォルトの名無しさん:2011/05/07(土) 13:05:05.18
初心者スレでは、質問にまじめに答えるのではなく
質問者の意図と技量を読む能力が試されるよね
もしかしたらテキストボックスのキーリピートを止めたかったのかもしれない

169 :デフォルトの名無しさん:2011/05/07(土) 13:59:11.91
それは俗にエスパーすると言います

170 :デフォルトの名無しさん:2011/05/07(土) 14:04:46.38
C#でキーリピートっていったらテキストボックスに決まってんだろ

171 :デフォルトの名無しさん:2011/05/07(土) 14:50:33.12
>>166
褒められちゃった。うれしい!

172 :デフォルトの名無しさん:2011/05/07(土) 16:29:27.38
>>170
ComboBoxは仲間はずれか?

173 :デフォルトの名無しさん:2011/05/07(土) 17:58:15.42
asp.net webサービスを使ってログイン処理を作ろうとしています。
postされたユーザ情報がdbに存在しなかった場合、クライアントに何を送り返すのがベストなのでしょうか?

174 :デフォルトの名無しさん:2011/05/07(土) 18:11:27.38
ユーザー名またはパスワードが間違っているか存在しません。
でいいじゃね?

そういうセキュリティの話を2chで振るのは微妙な気がするけどね。

175 :デフォルトの名無しさん:2011/05/07(土) 18:13:41.80
ここで聞く前にYahooとかGoogleあたりで試してみればいいのに

176 :デフォルトの名無しさん:2011/05/07(土) 18:57:45.92
public interface IInterface { public string value; }
public class ClassImpl : IInterface {}

var c = new ClassImple();
c.value = "hellow";

valueに何故値を代入できない?

177 :デフォルトの名無しさん:2011/05/07(土) 19:15:03.08
インターフェイスにフィールドはないよ
そもそもコンパイルできないっしょ

178 :デフォルトの名無しさん:2011/05/07(土) 20:09:59.70
>>175
試せる環境にいたらとっくに試してるは

179 :デフォルトの名無しさん:2011/05/07(土) 20:13:59.25
ネットに繋がってたら試せるだろ。
どうやって2chに書き込んでるんだw

180 :デフォルトの名無しさん:2011/05/07(土) 20:33:04.71
試してるは

181 :173:2011/05/07(土) 20:39:28.75
>>179
>>178は俺じゃないから怒るなって

>>175
>ここで聞く前にYahooとかGoogleあたりで試してみればいいのに
Webサービス <----- XML -------> Flashっていう感じのを作りたいの

googleやyahooがとかっていうのも大切だと思うんだけど、俺は業務で使いたいと考えている
だから、業務アプリとして作るならばって観点で教えてください



182 :デフォルトの名無しさん:2011/05/07(土) 20:39:57.59
>>179
余計なサイトには接続できないようになってる

183 :デフォルトの名無しさん:2011/05/07(土) 20:44:40.22
2chは余計なサイト扱いされてないのか
どっか抜けてるなその会社

184 :176:2011/05/07(土) 20:46:50.97
>>177
そうなのね
ありがとう

185 :デフォルトの名無しさん:2011/05/07(土) 22:10:11.50
お前らってjavaとC#のどちらが簡単だと思う?
俺はjavaだなー 楽だもん

186 :デフォルトの名無しさん:2011/05/07(土) 22:14:01.73
覚えることが少ないのはJavaだけど使うのはC#の方が簡単
Javaのジェネリクスとか泥沼

187 :デフォルトの名無しさん:2011/05/07(土) 22:15:46.44
なんでこのスレにいるんだよw

188 :デフォルトの名無しさん:2011/05/07(土) 22:16:39.59
how(どう書くか)ベースだと Java の方が覚えること少ないけど、
what(何を書きたいか)ベースだと C# の方が簡単だからなぁ。

189 :デフォルトの名無しさん:2011/05/07(土) 22:17:02.06
使いやすい方使えばいいだろそんなもん

190 :デフォルトの名無しさん:2011/05/07(土) 22:19:26.70
イベントリスナとか画面殴りたくなる

191 :デフォルトの名無しさん:2011/05/07(土) 22:27:23.38
C# = Java - Javaの欠点 + VBの利点 + ラムダ式 + dynamicだと思ってる
あとIDEが有料なだけあって無茶苦茶使いやすい

192 :デフォルトの名無しさん:2011/05/07(土) 22:28:45.74
IDEが優秀すぎる

193 :デフォルトの名無しさん:2011/05/07(土) 22:36:05.28
これがIDEの意志だと言うのか。

194 :デフォルトの名無しさん:2011/05/07(土) 22:47:00.42
javaはクラスライブラリがダメダメな所が許せないなー
でも、C#は外部のライブラリが少ない気がするし

195 :デフォルトの名無しさん:2011/05/07(土) 23:01:24.12
よそ様のことをとやかく言うもんじゃないけど、Javaは船頭が多すぎた。
その点、C#はヘジたん萌えということで。

196 :デフォルトの名無しさん:2011/05/07(土) 23:15:22.90
Monoさん・・・

197 :デフォルトの名無しさん:2011/05/07(土) 23:18:37.53
Javaってデザパタ使いまくるんでしょ?
あんなクラス関係が複雑になる手法よく使えるな。

198 :デフォルトの名無しさん:2011/05/07(土) 23:22:51.38
J++を訴えられたから作った言語がC#です
兄弟の悪口はやめようや

199 :デフォルトの名無しさん:2011/05/07(土) 23:31:40.49
J++にはLINQあったの?

200 :デフォルトの名無しさん:2011/05/07(土) 23:38:11.06
デリゲートはあったから、あのまま訴えられずに正当進化してたらLINQも入ったんじゃないかな。

201 :デフォルトの名無しさん:2011/05/07(土) 23:40:02.66
J#なんて無かったことにしたいのか

202 :デフォルトの名無しさん:2011/05/07(土) 23:44:14.98
>>190
だな、C#のイベントとデリゲート見たとき目から鱗落ちたよ

203 :デフォルトの名無しさん:2011/05/07(土) 23:45:08.99
Javaのプリミティブ型ってのが大っ嫌いなんだけど、J#ではどういう扱いだったんだ?
int≠Integer=Int32なのか?

204 :デフォルトの名無しさん:2011/05/07(土) 23:51:10.29
君には関係の無い事だ。

205 :デフォルトの名無しさん:2011/05/07(土) 23:56:10.10
モショエショエ

206 :デフォルトの名無しさん:2011/05/08(日) 00:16:15.50
C#なら2秒で済む計算をJavaでやろうとすると2年かかるって聞いたな

207 :デフォルトの名無しさん:2011/05/08(日) 00:21:23.39
ソース出せや

208 :デフォルトの名無しさん:2011/05/08(日) 00:31:42.21
↑Java厨

209 :デフォルトの名無しさん:2011/05/08(日) 01:00:07.13
Javaってなんで、uintとかないの?

210 :デフォルトの名無しさん:2011/05/08(日) 01:37:20.99
そしたらまたボックス化するものが増えるだろ?

211 :デフォルトの名無しさん:2011/05/08(日) 01:40:46.28
むしろuintが必用な場面ってそんなにあるのかと。
論理シフトが使いたいような場面?
無きゃ無いでなんとかなるな

212 :デフォルトの名無しさん:2011/05/08(日) 01:44:32.92
javaの文法はとても素晴らしいと思うんだ
c#の文法はだんだんc++化している気がして

213 :デフォルトの名無しさん:2011/05/08(日) 02:08:22.84
継ぎ足し感は確かにあるが言語が進化していった結果なわけで・・・というとC++と同じになってしまうか
しかし逆にJavaはそれが無さすぎる

214 :デフォルトの名無しさん:2011/05/08(日) 02:32:41.20
ラムダ式とダイナミックは確かに便利で手放せない物だが
アレを言語仕様に入れて本当に良かったのかな?
ラムダ式は素人お断り感があり、ダイナミックはバクの温床になりそうな予感

215 :デフォルトの名無しさん:2011/05/08(日) 03:17:28.30
Javaは基本的な部分でもダメだからなぁ
文法もはっきり言うと糞

216 :デフォルトの名無しさん:2011/05/08(日) 03:36:40.29
ラムダはともかくLL言語全盛期の世の中でdynamicはバグの温床になるとか鼻で笑われるレベル



俺もなると思うよ

217 :デフォルトの名無しさん:2011/05/08(日) 04:03:41.30
List<T>の中に<byte>0x10があったら、DTE記号と区別するためにダブルDTEとしてあげたい。{0x10,0x10}
\があったら\\に置換したい。(なら@使えって言われそうだが)
ラムダ式で書くとどんな感じになるの?

218 :デフォルトの名無しさん:2011/05/08(日) 04:05:29.92
ちゃんと質問するのもなかなか難しいもんだなぁと思った

219 :デフォルトの名無しさん:2011/05/08(日) 04:07:10.58
エスパー試験会場

220 :デフォルトの名無しさん:2011/05/08(日) 04:08:43.28
public static IEnumerable<char> DoubleWhen(this IEnumerable<char> source, Func<char, bool> cond)
{
foreach(var c in source)
if(cond(c)) { yield return c; }
yield return c;
}

で、利用側は
var doubled = source.DoubleWhen(c => c == '\\');
とか。

221 :デフォルトの名無しさん:2011/05/08(日) 04:10:23.80
Console.ReadLine()とかやると入力を待ってくれたりしますよね
あれって中はどうなってるんでしょうか、ループ的なものが回ってるんでしょうか

222 :デフォルトの名無しさん:2011/05/08(日) 04:15:25.59
ラムダ式が取り込まれたのは必然とすら思える。もう手放せない。

dynamicを使うとInteliSenceが効かなくなる(開発効率が大きく落ちる)ため、自然に乱用が抑制される。
事実、.NET4のOSSのソースを読めばdynamicが殆ど使われていないのが理解できるだろう。
dynamicの利用に適した分野(DLR言語との相互運用、一部のリフレクションの簡素化)では従来より効率的に開発できる。

223 :デフォルトの名無しさん:2011/05/08(日) 04:17:40.13
いや、みんなそれくらいは分かってると思うよ
誰が普通のなんでもないコードでdynamic使うんだよw

224 :デフォルトの名無しさん:2011/05/08(日) 04:47:29.59
本物はvarの代わりにdynamic使う

225 :デフォルトの名無しさん:2011/05/08(日) 04:52:18.43
>>221
OSのイベント待ってるんじゃないかな。
OS機能でI/O待ちポートってのがある。

>>224
本物の○がいww

226 :デフォルトの名無しさん:2011/05/08(日) 05:02:14.59
VBerはdynamic好きだと思いますよ
OptionStrict Offの動作に似てるから

せっかくOptionStrict Onが普及したのにDynamic使うにはOffにしなきゃならんってアホか

227 :デフォルトの名無しさん:2011/05/08(日) 05:58:41.13
はい?

228 :デフォルトの名無しさん:2011/05/08(日) 06:03:13.55
VBerはdynamic好きだと思いますよ
OptionStrict Offの動作に似てるから

せっかくOptionStrict Onが普及したのにDynamic使うにはOffにしなきゃならんってアホか

214 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)