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

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

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

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

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

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

952 :デフォルトの名無しさん:2009/10/15(木) 23:56:46
あれか、一回70個コピペさせて
面倒でしょ?そんな時に配列!ってか

953 :デフォルトの名無しさん:2009/10/15(木) 23:58:58
配列!そういうのもあるのか!

954 :942:2009/10/16(金) 00:00:24
Excelでいいじゃん

955 :デフォルトの名無しさん:2009/10/16(金) 00:01:56
×そういうのもある
○最低限の知識

956 :デフォルトの名無しさん:2009/10/16(金) 00:07:03
これは面倒すぎるありえないっていう感覚は大事だと思う

957 :デフォルトの名無しさん:2009/10/16(金) 00:12:35
ttp://uchukamen.com/Programming1/ToRecycleBin/index.htm
を参考にして、ファイルをゴミ箱に入れようとしています。

ダイアログを出さないようにフラグを
sh.fFlags = Shell.FOFlags.FOF_NOCONFIRMATION ;
に変えたら、ゴミ箱に入らずに消えてしまいました。

ダイアログを出さないようにゴミ箱に入れるには、FOF_ALLOWUNDOも同時に指定する必要があると思うんですが、
+でつなげても0x0050にしてもエラーが出てしまいます。
同時指定のやり方を教えてもらえませんか。

958 :デフォルトの名無しさん:2009/10/16(金) 00:17:32
>>955
孤独のグルメ

959 :デフォルトの名無しさん:2009/10/16(金) 00:24:02
で、その配列とやらをどう活かすですか

960 :デフォルトの名無しさん:2009/10/16(金) 00:36:42
>>957
組み合わせ可能な列挙体を組み合わせるのはビットごとの論理和演算子である | を使う

961 :デフォルトの名無しさん:2009/10/16(金) 00:52:36
>>960
あっさりと想定通りの動きをしました。
ありがとうございました。

962 :デフォルトの名無しさん:2009/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 :デフォルトの名無しさん:2009/10/16(金) 01:05:54
ウザ

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

フォルダ名.クラス名

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

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

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

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

System.TxtReader

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

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

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

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

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

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

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

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

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

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


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

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

988 :デフォルトの名無しさん:2009/10/16(金) 10:59:02
http://pc12.2ch.net/test/read.cgi/tech/1255658236/

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

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

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

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

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

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

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

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

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

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

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

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

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

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