ふらっとC#,C♯,C#(初心者用) Part45at TECH
ふらっとC#,C♯,C#(初心者用) Part45 - 暇つぶし2ch962:デフォルトの名無しさん
09/10/16 01:02:35
>>935-936
設計と命名以外でダメ出してみる (×:MUST be fixed、△:SHOULD be fixed)

×Form2.ZassekiEventイベントのソースがForm2のインスタンスじゃない
  → ソースはそのイベントを定義している型かその派生にする

×Form2でZassekiEventがnullのときにNullReferenceException
  → nullチェックを入れるかnullにならないようにする

△ZassekiEventHandlerのシグネチャがEventHandlerと同じ
  → 単に無駄というだけでなく、EventHandlerには「イベントデータが無い」という意味がある

△Form1.Sekigaeメソッド内のWhere(...).Single()は無駄
  → Single、Firstなどには条件を指定できるオーバーロードがある

963:デフォルトの名無しさん
09/10/16 01:05:54
ウザ

964:デフォルトの名無しさん
09/10/16 01:29:35
次スレの予感・・・

965:デフォルトの名無しさん
09/10/16 02:05:32
>>924
おれはプログラミングはじめて1ヶ月でAPIを駆使して
winnyのリストボックスの内容を取得して
ハッシュを収集したり無視したり自動でキャッシュ削除するソフトを作ったよ

向いている向いてないがあるんだろうな

966:965
09/10/16 02:11:57
プロパティ、フィールド、クラス、値型とか意味知ってるか?
おれはまず文法を一通り読んだ
それでわからなかったら、初心者サイトで調べ、それでもわからなければ
別の初心者サイトを見る。
わからないことをわからないままで横着して進めようと焦る気持ちはわかるが
他と違って、プログラミングはコツコツ覚えていくしかない

体で覚えていこうなんてするなよ

967:デフォルトの名無しさん
09/10/16 03:02:00
>>965
みんなお前みたいに暇じゃないんだよw
一ヶ月根詰めればそれぐらい出来るわ

968:965
09/10/16 03:16:12
おっさんのおまえらには無理だろうなww

969:デフォルトの名無しさん
09/10/16 07:09:02
細かく調べる前に勘で書いて体で覚えたけど
最初に作りたい物が決まってるならこの方が早い
そのあと詰まった所で随時調べる

970:デフォルトの名無しさん
09/10/16 07:35:24
>>962
指摘thx

>>→ ソースはそのイベントを定義している型かその派生にする
プロパティでget/setできればOK?

>>→ nullチェックを入れるかnullにならないようにする
このケースでnullになるかな?けれどもnullチェックはしたほうがいいね。

>>単に無駄というだけでなく、EventHandlerには「イベントデータが無い」という意味がある
よくわからん。

>> Single、Firstなどには条件を指定できるオーバーロードがある
Whereいらなかったね。ひとつ賢くなった。


971:デフォルトの名無しさん
09/10/16 08:39:02
また夜中なのに異常に伸びたなと思ったら予想通り

972:デフォルトの名無しさん
09/10/16 10:28:50
ポインタを使ったアルゴリズム、チェインとか木とかあるけど
同じような動作をするものでunsafeしないでC#で行うことはできますか?

厳密なメモリアドレスへの操作というわけじゃなくて
あるカプセルの参照と値を持つカプセルを関連付けていければいいだけなんだけど

973:デフォルトの名無しさん
09/10/16 10:35:20
何言ってるかわかんね
LinkedListでも何でも好きなの使えよ

974:デフォルトの名無しさん
09/10/16 10:36:27
>あるカプセルの参照と値を持つカプセルを関連付け

Dictionary<TKey,TValue>で両方に参照同じ渡せば。

975:デフォルトの名無しさん
09/10/16 10:42:57
フォルダを作ってそこにクラスファイルを入れると
そのクラスを利用する場合

フォルダ名.クラス名

としなければなりませんよね?
でも、パっと見でフォルダ名なのかクラス名なのかがわかりにくいと思いませんか?
わざわざフォルダ名を書かなければいけないのっておかしい気がするのですが

976:デフォルトの名無しさん
09/10/16 10:44:19
namespace変更すればいいだろ…
VSに文句言う前に言語仕様から理解しような

977:デフォルトの名無しさん
09/10/16 10:47:07
MyClass.System.TxtReader

があり、TxtReaderをSystemフォルダにいれた場合

System.TxtReader

と書くと、Systemはフォルダ名なのかクラス名なのかわかりにくくないですか?

978:デフォルトの名無しさん
09/10/16 10:48:21
>>976
じゃあ、フォルダの数だけnamespaceを作れと?
namespaceを大量生産するってそれこそありえないと思うんだけど

979:デフォルトの名無しさん
09/10/16 10:48:32
名前空間でググレカス

980:デフォルトの名無しさん
09/10/16 10:49:57
TxtReader.csのnamespaceをMyClassにすりゃいいでしょう。
馬鹿としか言えない。

981:デフォルトの名無しさん
09/10/16 10:50:23
>>978
誰もユニークにしろとは言ってないぞw

982:デフォルトの名無しさん
09/10/16 10:51:30
ググレといのはこのスレの本分ではないと思うのですが?

983:デフォルトの名無しさん
09/10/16 10:52:48
new System.IO.DirectoryInfo(@"c:\");

これの"IO"はフォルダ名なのかクラス名なのか分かりにくいだろうか。

984:デフォルトの名無しさん
09/10/16 10:55:03
フォルダ名と呼ぶのをやめて欲しい
そんな用語はない
VSがフォルダと同じ名前の名前空間を自動生成しているだけ

985:デフォルトの名無しさん
09/10/16 10:55:15
>>978
お前が何を悩んでいてどうしたいのかさっぱり分からない。
C#はjavaと違って好きに名前空間を指定出来るぞ。
俺はフォルダ名と一緒が一番いいと思うが。


986:デフォルトの名無しさん
09/10/16 10:56:10
次ぎたててくる

987:デフォルトの名無しさん
09/10/16 10:57:08
>>984
そういうことかわかった^^

988:デフォルトの名無しさん
09/10/16 10:59:02
スレリンク(tech板)

989:デフォルトの名無しさん
09/10/16 11:13:07
>>975
そんな規則はない。
コーディング規約的にnamespaceとディレクトリ配置が一致していることが望ましいだけ。
間違った思い込みをする前に、MSDNで一次情報に当たる習慣をつけよう。

990:デフォルトの名無しさん
09/10/16 12:58:02
.NETの命名ガイドラインに従うと,確かにA.B.C.Dだけ見て
名前空間とクラスとプロパティを見分けることはできないんだけど
実際それで困ることある? だいたい分かるじゃん
java.lang.System.outとかキモい

991:デフォルトの名無しさん
09/10/16 15:07:04
おそらく、開発環境ソフトが見分けをサポートすべきという思想なんだろうな
カーソルでポイントすればヒントが表示されるみたいな

992:デフォルトの名無しさん
09/10/16 15:11:42
つーか、大文字小文字を打ち間違えたときも、
大文字と小文字を入れ替えたら名前が見つかってエラーがでなくときは、自動で修正してほしいもんだ

993:デフォルトの名無しさん
09/10/16 15:39:45
俺も昔、スペルチェック機能みたいなのが欲しいと思ってた。MS-Wordでできるんだから
Visual Studioでもできるだろう、と。
でも今はインテリセンスあるからいらない。みんな最初から候補に出てくる。

994:デフォルトの名無しさん
09/10/16 15:44:02
>>992
VBは実際にそれやってくれる
C#は大文字と小文字を区別するのでわざとその機能は付けてないんだと思う
仮に現在大文字と小文字だけが違う複数の名前が無かったとしても,
そういう機能があるとつい無頓着になってミスが発生しやすいからね

995:デフォルトの名無しさん
09/10/16 16:03:59
大文字小文字が違うだけの変数名を作ることはまずなのにに
なぜ区別するようにしたんだろうな
publicの場合は先頭だけ大文字、privateは小文字って決め付ければいいのに

996:デフォルトの名無しさん
09/10/16 16:05:58
メインターゲットがC++やJavaからの移行者だから当たり前
それとVBとの差別化

997:デフォルトの名無しさん
09/10/16 16:39:12
List<>の勉強中です。
List<string> photolists = new List<string>();
string[] photofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
foreach(string photofile in photofiles) {
if (photofile.Contains("good")){
photolists.Add(photofile);
}
}
すこし書いてみました。動作のテストもしました。
List<>とstring[]とふたつ使っているところが、まだいまいちな気がします。
もっとスマートになりますよね?
foreachを使わず直接配列を追加することは可能ですか?


998:デフォルトの名無しさん
09/10/16 16:50:35
フィルタリングが入る時点で「直接配列を追加」は不可能だろ
次のステップはContains("good")をメソッドに取り出した上でArray.FindAll、辺りかな
この場合はList<T>の出番が無くなるけど

999:デフォルトの名無しさん
09/10/16 16:52:02
LINQを使うしかない
var goodphotos = photofiles.Select(photofile => photofile.Contains("good"));
photolists.AddRange(goodphotos);

1000:999
09/10/16 16:52:43
ごめんSelectじゃなくてWhereだった

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch