ふらっとC#,C♯,C#(初心者用) Part62
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/08/08(日) 12:08:26「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとC#,C♯,C#(初心者用) Part61
http://hibari.2ch.net/test/read.cgi/tech/1277597122/
■関連スレ
C#, C♯, C#相談室 Part61
http://hibari.2ch.net/test/read.cgi/tech/1280008155/
VB.NET質問スレ(Part34)
http://pc12.2ch.net/test/read.cgi/tech/1270998481/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0153デフォルトの名無しさん
2010/08/30(月) 00:41:410154デフォルトの名無しさん
2010/08/30(月) 00:41:550155デフォルトの名無しさん
2010/08/30(月) 00:44:080156デフォルトの名無しさん
2010/08/30(月) 00:44:54必要な範囲が広がったとき、入力超えちゃったとき面倒だったっしょ?分かってるはず。
0157デフォルトの名無しさん
2010/08/30(月) 00:45:53全く面倒ではないよ
0158デフォルトの名無しさん
2010/08/30(月) 00:48:45確かにミ社のコンポーネント使いづらいよな。自作したい気持ちは解る。
Rのときは10進でZRのときはアドレス16進って所に注意な。
0159デフォルトの名無しさん
2010/08/30(月) 00:56:350160101
2010/08/30(月) 01:20:59って言っちゃった俺がそもそも悪い。ゴメン。2文字があった。
158あ、やっぱり解ります? w ハシゴ屋のお仕事暇なんで興味本位で・・・
使ったこと無いんだけれど代官山ってオムロン以外でも使えたっけ?
今 来られた方々へ
つまらぬコトで60スレも消費してしまいました。
0161デフォルトの名無しさん
2010/08/30(月) 02:44:100162デフォルトの名無しさん
2010/08/30(月) 07:36:150163デフォルトの名無しさん
2010/08/30(月) 18:11:120164デフォルトの名無しさん
2010/08/30(月) 18:18:060165デフォルトの名無しさん
2010/08/30(月) 18:22:05HasValueがtrue時に、value参照かね?
0166デフォルトの名無しさん
2010/08/30(月) 18:37:390167デフォルトの名無しさん
2010/08/30(月) 20:04:34普通はそういう仕様にすると思うんだが、このあたりのMS様のセンスはよくわからない。
0168デフォルトの名無しさん
2010/08/30(月) 20:48:48問題あるだろ。
implicit にヌルポ発生させるのもどうかと。
あと、C# の型変換に関する方針は、
「範囲の広い型から狭い型への変換は明示」。
T? の方が T より広い(T + null)んで、それとの一貫性もあると思う。
0169デフォルトの名無しさん
2010/08/30(月) 21:08:18どうしてHasValueはOKで暗黙変換はNGなの?
よく分からん発想だ。
こんなものの価値は、明らかに(そうしたい時には)Tと等価(透過じゃない)に
扱えることのあるのに。
0170デフォルトの名無しさん
2010/08/30(月) 21:09:310171デフォルトの名無しさん
2010/08/30(月) 21:12:34不要なキャストを省けるため、暗黙の型変換を行う場合はソース コードが読みやすくなります。
ただし、暗黙の型変換では、一方の型からもう一方の型へ明示的にキャストする必要がないため、
予期しない結果が発生しないように注意する必要があります。
暗黙の演算子は、通常、プログラマが変換を認識していなくても安全に使用できるように、
変換中に例外をスローしたり情報を失ったりしないことが必要です。
このような条件を満たせない変換演算子には、explicit キーワードを使用する必要があります。
詳細については、「変換演算子の使用 (C# プログラミング ガイド)」を参照してください。
0172デフォルトの名無しさん
2010/08/30(月) 21:17:40んなわけないだろ
0173デフォルトの名無しさん
2010/08/30(月) 21:22:57そのあたりの話は分かるんだけどね。
原理原則はそれでいいとして、Nullable<T>の場合も本当にその原則を
適用すべきかどうかというと、俺はそうは思わない。
繰り返しになるけど、こんなものTと同じに扱いたいときに同じに扱えなきゃ、
有用性半減だろ。
>>172
全然違う。
Nullable<T>の意味の特殊性をよく考えてくれ。
っていうか、Nullable<T>使ったことあって言ってるのかそれ。
0174デフォルトの名無しさん
2010/08/30(月) 21:25:180175デフォルトの名無しさん
2010/08/30(月) 21:26:21そうでなければMSに陳情してこい
ここはお前のグチ発表会場じゃないんで
0176171
2010/08/30(月) 21:28:24お前がどう思おうが大概の人はどうでもいいよ。
0177デフォルトの名無しさん
2010/08/30(月) 21:30:46みっともないな。
今日はこのぐらいにしといたるわ、にしか読めない。
しかし、馬鹿はまだ救いもあるけどガキ臭い奴は嫌だね。
0178デフォルトの名無しさん
2010/08/30(月) 21:33:080179デフォルトの名無しさん
2010/08/30(月) 21:35:470180デフォルトの名無しさん
2010/08/30(月) 21:36:49掲示板では面識もない相手をいきなり「お前」呼ばわり。
そういう自分に何も戦慄を感じないなら、立派な廃人だと思うがな。
0181デフォルトの名無しさん
2010/08/30(月) 21:37:21暗黙のキャストを許可することによってどういうメリットがあるのか
暗黙のキャストを許可しないことによってどういうメリットがあるのか
を書くべきじゃね
はいどうぞ書きたまえ
0182デフォルトの名無しさん
2010/08/30(月) 21:39:050183デフォルトの名無しさん
2010/08/30(月) 21:39:29だから、書いてるでしょ?
0184デフォルトの名無しさん
2010/08/30(月) 21:41:46Value は OK じゃねぇよ。
T? x からの変換は T y = x ?? defaultValue; でやる。
>>173
T? と T 一緒に扱えたらダメだろ。
null 勝手に握りつぶされるとか、絶対酷い人的ミス起こすぞ。
>>181
人的ミスの一言に尽きるだろ。
だから、型変換しても情報落ちしない場合にのみ暗黙キャストを認めてる。
0185デフォルトの名無しさん
2010/08/30(月) 21:41:580186デフォルトの名無しさん
2010/08/30(月) 21:45:020187デフォルトの名無しさん
2010/08/30(月) 21:45:41キャスト不要にしろというなら最初から ?使うなよ…
0188デフォルトの名無しさん
2010/08/30(月) 21:46:05だから、Valueを使おうがHasValueのチェックを忘れたら、結局同じこと。
だから「フールプルーフのために暗黙変換禁止」というのは理由にならない。
0189デフォルトの名無しさん
2010/08/30(月) 21:47:16だからといって暗黙のキャストをデフォルト動作にすべきとはならないだろww
0190デフォルトの名無しさん
2010/08/30(月) 21:48:01何のための??なん
0191デフォルトの名無しさん
2010/08/30(月) 21:50:13同じじゃねーよ
0192デフォルトの名無しさん
2010/08/30(月) 21:50:58普通は(その方が便利なものを)禁止する場合に理由が必要だと考えるのじゃないの?
なんで「手を縛るな」というのり理由が必要なの?
よくわからん発想だ。
0193デフォルトの名無しさん
2010/08/30(月) 21:51:41利用に際してチェックが必要な奴は全て否定できるな
0194デフォルトの名無しさん
2010/08/30(月) 21:51:55いや、だから、HasValueとかValueなんてC#で直接使わないんだってば。
普通 ?? 使う。
HasValueとかは他の.NET言語との相互運用のためにあるとでも思っといてOK。
0195デフォルトの名無しさん
2010/08/30(月) 21:52:54InvalidOperationException
が発生する!
0196デフォルトの名無しさん
2010/08/30(月) 21:53:31Javaなんかも基本は推定有罪で動いてるじゃないか
0197デフォルトの名無しさん
2010/08/30(月) 21:55:12そんな変換が許されるなら最初からNullableなんて使わないだろw
0198デフォルトの名無しさん
2010/08/30(月) 21:55:51デメリット
InvalidOperationException
InvalidOperationException
InvalidOperationException
InvalidOperationException
InvalidOperationException
InvalidOperationException
0199デフォルトの名無しさん
2010/08/30(月) 21:56:15スーパープログラマーの人には悪いが底辺に合わせてくれ
人が集まらない
0200デフォルトの名無しさん
2010/08/30(月) 21:56:52それはさすがに極論。
純粋に値が設定されてない状態の表現に使う場合の方がむしろ多いと思うが
0201デフォルトの名無しさん
2010/08/30(月) 21:58:010202デフォルトの名無しさん
2010/08/30(月) 21:58:43これは分かったから
しつこい
0203デフォルトの名無しさん
2010/08/30(月) 22:00:41== null でよくね?C# において HasValue の存在意義ある?
0204デフォルトの名無しさん
2010/08/30(月) 22:02:07HasValueの方が読みやすい人もいる
0205デフォルトの名無しさん
2010/08/30(月) 22:02:37例外なんて出さないで暗黙で0代入しとけやって馬鹿が言いそう…
0206デフォルトの名無しさん
2010/08/30(月) 22:05:47参照型と同じ感覚で使う方がいいと思うんだけどなぁ。
まあ、あるものは使えばいいとは思うけど。
0207デフォルトの名無しさん
2010/08/30(月) 22:06:390208デフォルトの名無しさん
2010/08/30(月) 22:09:290209デフォルトの名無しさん
2010/08/30(月) 22:11:32この話終わりな
↓はい次の方
0210デフォルトの名無しさん
2010/08/30(月) 22:22:24話題なんてないよ。。。
x=x+1で
x=0.5にならないのは何でですか?はあと
0211デフォルトの名無しさん
2010/08/30(月) 22:23:32今の C# なら、Solve(x => x == x + 1) とかで 0.5 を作れそうだよなぁ。
0212デフォルトの名無しさん
2010/08/30(月) 22:27:280213デフォルトの名無しさん
2010/08/30(月) 22:28:070214デフォルトの名無しさん
2010/08/30(月) 22:28:090215デフォルトの名無しさん
2010/08/30(月) 22:35:16ちょwww
コード変わってるwwww
0216デフォルトの名無しさん
2010/08/30(月) 22:39:570217デフォルトの名無しさん
2010/08/30(月) 22:41:500218デフォルトの名無しさん
2010/08/31(火) 00:17:080219デフォルトの名無しさん
2010/08/31(火) 00:26:41今常駐アプリを作っていて、キーの監視について悩んでいます
自分が作成している常駐アプリは特定のキーが押された場合に非アクティブでも反応し
それに応じた動作を行うというものです
キーを監視する方法は、Win32APIのSetWindowsHookEx()かなんかそこらへんを見ればいいとか書いてあったような気がするんですが
実際の実装方法が分かりません
わかりづらくてもうしわ家ありませんがよろしくお願いします
0220デフォルトの名無しさん
2010/08/31(火) 00:28:28http://ufcpp.net/study/csharp/sp_pinvoke.html#sample
こんなの?
0221デフォルトの名無しさん
2010/08/31(火) 01:29:22あんたの事やで?!
そのバック♪
0222デフォルトの名無しさん
2010/08/31(火) 01:53:09■〜〜
■〜〜
□〜〜
□〜〜
■〜〜
保存
save.txt
1,2,5
もし、設定ファイルの中に1が会ったとき(設定で1が有効になっている時)にイベントを起こす
ということをやりたいです
ただ、設定項目の数が不定でいくつにも増える可能性があります
こういう場合はどういう風に実装すればいいでしょうか
設定ファイルの中身を配列に保存していけばいいのかな?
0223デフォルトの名無しさん
2010/08/31(火) 01:55:58コンストラクターなり、event なりでイベントハンドラーを渡しておいて、
LoadSetting(path); 的な呼び出しした瞬間に、その設定ファイル読みに行って、
その条件な時にイベントハンドラー呼び出しするってこと?
それともファイルの更新監視とか必要?
他のアプリインスタンスと競合起こしたりはする?
0224デフォルトの名無しさん
2010/08/31(火) 01:57:42.NETの場合、XMLSerializerなりDataContractSerializerなり使え。
ファイルの更新監視するならFileSystemWatcher。
0225デフォルトの名無しさん
2010/08/31(火) 02:00:420226デフォルトの名無しさん
2010/08/31(火) 02:01:240227デフォルトの名無しさん
2010/08/31(火) 02:02:520228デフォルトの名無しさん
2010/08/31(火) 02:05:15配列がどうこうじゃなく読んだ時にイベントハンドラ呼べばいいだけよね
0229デフォルトの名無しさん
2010/08/31(火) 02:08:54説明下手でごめんなさい
�@ある文章中の特定キーワードにひっかかるようにしたい
�A特定キーワードは必ず数字2文字
�B特定キーワードはユーザーが自由に設定できる(しかし、範囲は00〜99まで)
こういう場合、テキストに特定キーワードを,で区切るなりして保存して
配列にひたすら読み込んで
配列の大きさぶんだけforでマッチするか比較するみたいな感じでいいんでしょうか
何かすごく無駄な気もするんですが他に思い浮かばなくてorz
良い方法あったらお願いします
xml調べてみます……
0230デフォルトの名無しさん
2010/08/31(火) 02:21:400231デフォルトの名無しさん
2010/08/31(火) 08:34:52>>229
var r = new Regex("パターン");
var m = r.Match(読み込んだ文字列);
if (m.Success)
じゃダメなの?
あと、配列じゃなくて IEnumerable になるように作ればメモリの無駄は少ないよ。
0232デフォルトの名無しさん
2010/08/31(火) 09:17:340233デフォルトの名無しさん
2010/08/31(火) 09:20:360234デフォルトの名無しさん
2010/08/31(火) 10:18:59検出した後どうするんだろうね
それに合った動作も定義して100分岐するのかな
0235デフォルトの名無しさん
2010/08/31(火) 12:37:593桁の数字を渡して○月×日の形に変換するにはどんな方法があるんでしょうか?
0236デフォルトの名無しさん
2010/08/31(火) 12:43:320237デフォルトの名無しさん
2010/08/31(火) 13:05:09お前は閏年を知らないのか?
0238デフォルトの名無しさん
2010/08/31(火) 13:07:470239デフォルトの名無しさん
2010/08/31(火) 13:23:35DateTime.AddDaysで解決しました
ありがとうございました
0240デフォルトの名無しさん
2010/08/31(火) 14:25:15SAXは糞だからXmlReaderはプル型にしたとMSDNに書いてあるけど全面的に同意
0241デフォルトの名無しさん
2010/08/31(火) 18:24:19http://ideone.com/RTlGI
こんな感じ?
キーワードに対応するActionを任意のコードにしたいとなると、それはそれで対応しないといけないけど。
0242デフォルトの名無しさん
2010/08/31(火) 18:59:26var
var
var
0243デフォルトの名無しさん
2010/09/01(水) 01:42:12try〜catchの書き方なのだが、必要な箇所にだけ書け! という
規約を忠実に守って書いてみた。
内容はDBから取ってきた値を画面に表示する単純なもの。
(ただし結構ソースは長い)
穴があくくらいソースを見てみたが、エラーが想定できる
箇所はDBアクセスの1箇所だけだったので、そこだけ
try〜catchで囲って想定できる例外処理をした。
……これで正しい書き方といっていいのでしょうか?
誰かに「こいつtry〜catch全然使ってねーよ!大丈夫か?」とか
思われるんちゃうかと思ってしまうのだが(汗)
0244デフォルトの名無しさん
2010/09/01(水) 01:50:220245243
2010/09/01(水) 01:58:08try〜catchで囲ってるケースが多いし、逆に必ず
全てにtry〜catchを記述しろという現場もありました。
それになんとなくその方が安心できる気もするしw
まあ最終的に例外時に正しいログさえ採取できれば、どの
書き方でもいい感じもしますが、さすがに今回
ソース書いてみて、一箇所しかtry〜catchがないと
自分でも「これで大丈夫か?」と思ってしまうわけでw
0246デフォルトの名無しさん
2010/09/01(水) 02:39:310247デフォルトの名無しさん
2010/09/01(水) 02:41:040248デフォルトの名無しさん
2010/09/01(水) 03:29:28で一番上の階層でメッセージを出したりログ出力したり。
そうしないと例外がどのメソッドで起きたかわかんないよね。確か。
0249デフォルトの名無しさん
2010/09/01(水) 06:02:320250デフォルトの名無しさん
2010/09/01(水) 09:05:30全部 try catch で囲むとか Java の悪習過ぎるだろ。
ほんとは、try catch で例外握りつぶすんじゃなくて、
単体テストで想定外の例外でなくなるまでテストやるべき。
でも、客に納品したプログラムが「未処理例外で止まりました」ってエラーメッセージだすと、
客にすごい嫌な顔されるとかで、「握りつぶす」って選択肢でダメなしのぎ方する人多いと聞くけど。
0251デフォルトの名無しさん
2010/09/01(水) 09:06:19例外、スタックトレース情報持ってるじゃない。
0252デフォルトの名無しさん
2010/09/01(水) 09:09:34■ このスレッドは過去ログ倉庫に格納されています