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


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

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



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

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

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

855 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:19:30 ]
C#, C♯, C#相談室 Part54 で質問したんですが
スレが終了してしまったのでこちらで再質問させていただきます。
-------------------------------------------------
ArrayList.Add でリストの最後ではなく
リストの最初に追加するにはどうすれば良いですか?
-------------------------------------------------

995 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:20:40
関係ないけど今更ArrayListなんか使うな

1000 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:47:19
List<T>

というレスをもらいましたが、Listでも
リストの最初に要素を追加する方法はわかりませんでした。
回答いただけたら大変助かります。

856 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:25:16 ]
C#, C♯, C#相談室 Part55
pc12.2ch.net/test/read.cgi/tech/1255530225/

立てといた

857 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:26:05 ]
>>855
994でレスもらってるじゃねーか

>>856


858 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:26:40 ]
>>855
list.Insert(0, x);

859 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:27:02 ]
994 名前: デフォルトの名無しさん [sage] 投稿日: 2009/10/14(水) 17:28:58
Insert

↑なんでこれみてないの?これ答えたの俺じゃないけど、答えそのままじゃん。
List<T> でも同じ名前と同じやり方だよ。

860 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:28:01 ]
45→55ってどういうこと?

861 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:28:40 ]
バージョンアップ

862 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:32:26 ]
一瞬立て間違えたかと思ってビビった

863 名前:デフォルトの名無しさん [2009/10/14(水) 23:38:18 ]
>>859
アンカーも付いてないのになんでもくそもないわ。
答える側の能力が低いだけだ。



864 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:44:04 ]
質問の直後のレスで、その言い方はないわ
ほかに混同するレスもないのに

865 名前:デフォルトの名無しさん [2009/10/15(木) 00:02:10 ]
c:\data\a\good01.jpg
c:\data\a\bad02.jpg
c:\data\a\other03.txt
c:\data\b\good04.jpg
c:\data\b\bad05.jpg
c:\data\b\music06.mp3
c:\data\c\good07.jpg
c:\data\c\bad08.jpg
のような構造から、goodのjpgだけ抜き出したいと考えました。
string[] photofiles;
string[] allphotofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories);
string photolist;
foreach(string allphotofile in allphotofiles) {
if (allphotofile.Contains("good)){
photolist = photolist + allphotofile + "\n";
}
}
photofiles = photolist.Split('\n');
でできているのですが、ひどく無駄な処理をしている気がしてます。
こういうときに、LINQを使うとスマートになるんですか?


866 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:07:43 ]
何が「ひどく」とまでいうほど無駄と感じるわけ?
別にLINQ使ったからって大して変わるわけでもないけど。

867 名前:デフォルトの名無しさん [2009/10/15(木) 00:13:15 ]
配列に入れたものを文字列にして、
もう一度配列にしているのが無駄な気がしてます。
直接配列に入らないのかな〜と。
あと、LINQはこのあいだ盛り上がっていたのと、
まだ使ったことがないので、なんとなくあこがれて。


868 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:15:52 ]
yield returnだろうとLINQだろうと配列コピーだろうとなんだろうと
目的の機能を達成すれば全ておk
好きな方法を使え

869 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:17:04 ]
>>857>>858
あ、ほんとだ。
すいません、2回ぐらい見たはずなのに
自分へのレスだと気づけませんでした…。

870 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:17:55 ]
Directory.GetFiles(@"c:\data", "good*.jpg", SearchOption.AllDirectories);

こうはできないんだっけ

871 名前:デフォルトの名無しさん [2009/10/15(木) 00:27:43 ]
>>864
まあそうなんだけどさ、それは分かってる側の理屈だよね。
もちろん答える側の自由なんだけど、せっかく答えたのに
相手に伝わらなければもったいないよ。
質問内容で明らかにかなりの初心者だってわかるんだし、
その僅かな気配りが出来るか出来ないかで能力に雲泥の差が出るよね。

872 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:27:52 ]
var files= Directory.GetFiles(@"c:\work", "*good*.jpg", SearchOption.AllDirectories)
.Select(f => new FileInfo(f));
でできるよ。

873 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:36:25 ]
わかってる、というより質問しといて新しいレスが増えたのに、
自分宛じゃないからって無視する精神の方がおかしいわ



874 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:37:17 ]
コードは、な

875 名前:874 mailto:sage [2009/10/15(木) 00:39:37 ]
ごば

876 名前:デフォルトの名無しさん [2009/10/15(木) 00:47:05 ]
>>873
うん、だからさ、その程度の事はアンカーを付ければ
簡単に避けれるのは理解できるかな?

決して気づかなかった無能な初心者を庇っている訳ではないんです。

877 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:54:40 ]
>>876
まあ、日本人は説明能力が欠如してる人間が多すぎるからね。

質問側にも回答側にも、本人とエスパー以外に読解不可能な文章を平気で書いて
それで人に伝わるつもりになってる奴が多すぎる。
明らかに教育の問題だな。

まあ、君がもし回答者は質問者に親切に<すべき>と思ってるなら、
そういうクレーマーチックな押し付けがましい考えもどうかと思うけど。

878 名前:デフォルトの名無しさん [2009/10/15(木) 01:12:38 ]
質問です。
病院、診療所の検索システムを作成しています。
病院の検索ボックスに、例えば「ちゅうおう」と入力すると、
文字列変換前に、右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
そこで、Enterキーで確定させる前に、
Tabキーまたは右カーソルキーの押下で右手のパネルにフォーカスを移したいと思っています。
Enterキーで確定後に右手にフォーカス遷移させることはできたのですが、
確定させる前の、入力文字列に点線の下線がある状態で、
Tabキーまたは右カーソルを検出し、フォーカスを移動させたいんです。
それは可能でしょうか?
もしできるなら、どのようなコーディングになるのでしょうか。
教えてください。よろしくお願いします。

879 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:39:01 ]
2ちゃんでの答えに説明力不足もくそもない。
直後に書いた答えに説明力不足もくそもない。
一言使うメソッド教えるのに説明力不足もくそもない。
読解不可能な答えでも何でもない。


880 名前:デフォルトの名無しさん [2009/10/15(木) 01:45:05 ]
>>872
System.IO.FileInfoって、配列じゃなくない?
>>870
できそうなのですが、条件を間違えてました…。
c:\data\a\good\photo01.jpg
c:\data\a\bad\photo02.jpg
c:\data\a\other\text03.txt
c:\data\b\good\photo04.jpg
c:\data\b\bad\photo05.jpg
c:\data\b\music\music06.mp3
c:\data\c\good\photo07.jpg
c:\data\c\bad\photo08.jpg
でした。
Directory.GetFiles(@"c:\data", @"\good\*.jpg", SearchOption.AllDirectories);
とかやったけどだめっぽい。


881 名前:デフォルトの名無しさん [2009/10/15(木) 01:49:10 ]
>>879
後輩に嫌われそうなタイプだなw

882 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:51:35 ]
自アプリ以外から起動したinternet explorerの特定のタブのHtmlDocumentを取得するのって自前でCOMの処理書かないと無理なの?
簡単にアクセス出来るクラスとか無いの?
COM使った実装は実現出来ているんだけどもっと簡単な方法が無いかなって思っての質問だけど

883 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:54:48 ]
少なくとも標準ライブラリにはない
Shell32とか使えば多少は楽になるかも知れんがまあ大差なかろ



884 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 01:56:14 ]
>>881
ここは2ちゃん


885 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:00:53 ]
>>883
サンクス
なんかこの当たりもっと対応して欲しいよね
C#は先進の技術で作られているのにM$純正のアプリですらレガシーな技術を使わないとアクセス出来ないとか意味不明すぎる
IEに至っては構造が歪すぎて本来COMで提供されているべき機能がWindowMessageを使わないとアクセス出来ない機能まであるし

886 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:03:40 ]
>>880
パスに含まれる、ならそりゃ第二引数は使えない これはファイル名のフィルタだから
Whereなりif文なり自分で分けるしかないな

Selectは型の変換 IEnumerable<TInput>をIEnumerable<TOutput>にする
GetFilesならstring[] : IEnumerable<string> で、
SelectでそれぞれのstringがそれぞれFileInfoに置き換えられてIEnumerable<FileInfo>を返す
まあFileInfoがいらないならこのSelect文は不要だな

取り敢えず\nでくっつけて後でSplitはあり得ない
List<string>にAddしていくようにすれば良いんじゃね

887 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:05:38 ]
>>885
他のプロセスの内容をのぞき見るとか、マネージドという方向性とは正反対じゃねーか

888 名前:デフォルトの名無しさん [2009/10/15(木) 02:08:14 ]
>>884
それも含めて言ってる

889 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:11:45 ]
>>887
いやいやw自分のアセンブリから他のアセンブリのパブリックメソッドを呼び出すのは実にマネージド的じゃんw
IEがアセンブリでちゃんとそう言うメソッドを公開していれば
ブラックボックスになっている他プロセスをわざわざ覗き見る必要なんてないじゃんかよ?w

890 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 02:21:11 ]
>>880
・GetDirectories()→GetFiles()の2段階にする
・条件緩めてGetFiles()→自前でフィルタ
のどちらかだろうな

とりあえず前者をLINQで書いてみた (SelectMany便利だねぇ)

Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
    .SelectMany(d => Directory.GetFiles(d, "*.jpg"))

891 名前:デフォルトの名無しさん [2009/10/15(木) 03:17:44 ]
>>886
\nでくっつけて後でSplitはあり得ない
自分でもそう思います。はい。レベルアップしたいです。
List<string>を試してみます。
List<string>って、ListBoxと扱いはいっしょ?

>>890
これがLINQですか…。
string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg"))
だと、
型 'System.Collections.Generic.IEnumerable<string>' を 'string[]' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
なんですけど、この変換が、886さんのいう型変換ですか?


892 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 04:07:29 ]
ToArray()でクエリを評価して結果の配列を受け取ればおk
列挙子(IEnumerable<string>)が返されるってのはLINQの重要なポイントなんで、今は分からなくとも頭の隅に置いとくといい。

string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg")).ToArray();

893 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 06:05:10 ]
>>891
個人的な意見だが
今のレベルではLINQ理解しようとしてもただただ混乱が増えるだけに見える。

勉強目的ならば、Listを使って>>865を改善できるように頑張った方がいい
LINQにこだわりたいのならば、誰かに作ってもらった動くものを
今はコピペするだけにとどめておいた方がいい
と思う。


あと変数名の付け方もちょっと気になる



894 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 06:26:23 ]
>>880
ToArray()

もうちった勉強しろ

895 名前:デフォルトの名無しさん [2009/10/15(木) 06:42:22 ]
>>878
ですが、どなたかご存知ではないでしょうか?
これができれば使いやすくなるのですが…。

896 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 07:07:22 ]
右パネルに移動したとして検索フォームには何も入力されないまま?
というかそれ使いやすいか?

897 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 07:16:59 ]
昔はImmほにゃらら関数とWM_IME_COMPOSITIONで可能だった
今はどうだかしらんが

898 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 08:15:47 ]
>>878
そんなIMEの実装に依存するような動作はやめたほうがいいと思う。
MS-IMEは変換中のキー入力の起動を任意にカスタマイズできるし、
ほかのIMEが入ってる環境ならなおさらだ。

899 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 09:19:57 ]
>>876
?

900 名前:デフォルトの名無しさん [2009/10/15(木) 11:21:29 ]
>>878
表示される文字とは別にKeyDownイベントで
キー入力だけチェックするのはどうよ

「ちゅうおう」って打ってる後ろで
[chuuou]って取得しつつ検索結果を常に別窓に表示する

901 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:00:03 ]
>>878
個人的には>>898,896と同感

あと
>右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
って、それは読み仮名検索を実装していて病院名検索とは別のもの、ってこと?


>>900
それは、後々整合性保つのがめんどくなっていくと思うなあ

902 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:05:53 ]
今議論してる話は、Youtubeの検索欄が実現できてるな。
(どうやってブラウザで確定前の入力が取れるのかが激しく謎だが)

便利かなと思わないでもないが、確定前に候補が出てくるので
今入力中の検索ワードを確定したらいいのかせんでいいのか迷ってしまう感じ。

903 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:20:26 ]
というか、googleのインクリメンタルサーチだと思ったが
いやまあ根本的に同じものなんだけどさ
まあアレはブラウザのサイズによってはすごくキモイ挙動になるけど・・・
クリックでも、確定してから矢印キー操作でもお好きな方でどうぞ。

ブラウザ上だったら、タイマー使って簡単に実現できるよ
DOMからvalueの中身を見るだけで未確定でも取ってこれる。



904 名前:デフォルトの名無しさん [2009/10/15(木) 12:48:44 ]
少し逸れた質問かもしれないが、変換ツールがIMEかそれ以外かを判定しる方法ってありますか?


905 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 12:53:00 ]
>>904
ユーザーに『パン作った少年』と変換・入力させて、
『パンツ食った少年』が入力されればMS-IME :)

906 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 13:07:25 ]
>>905
すでに修正変換していた場合、むりだろw

907 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 13:12:44 ]
Messagebox.Show("パンツは食えません!","エラー");

908 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 13:20:01 ]
ImmGetDescriptionとかImmGetIMEFileNameとかで判断する

909 名前:デフォルトの名無しさん [2009/10/15(木) 17:46:39 ]
>>892
できました。動きました。大感謝。
>>893
おっしゃるとおり。LINQはとりあえず892さんの作っていただいたのを眺めながら勉強したいと思います。
そう、そのまえに自分ではListをやってみないと。
Listで865を直してみます。
>>894
わかった!
ありがと。勉強するぜっ!


910 名前:850 mailto:sage [2009/10/15(木) 19:00:53 ]
お世話になってます。
なんとか参照して表示までこぎつけましたが内部はかなりへんてこなきがします
どうなのでしょうか

public class zasseki
{
public string zs1()
{
string a = "名前";
return a;
}
と言うのを73個作り
newを使いクラス生成
そして、form1に
public void Form1_Load(object sender, System.EventArgs e)
{
label1.Text = zsk.zs1();
とずらーっと入れました。
なんか他にも出来そうですが一応表示は出来てるので
このまま進めてもいいんでしょうか

911 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:03:04 ]
> と言うのを73個作り


  /'           !   ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、    ┃   ━━━━━━━━
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )    ┃               ┃┃┃
'   Y  ー==j 〈,,二,゙ !  )    。                  ┛
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧         三 ==-
/ |ヽ  \-ァ,          ≧=- 。
  ! \  イレ,、         >三  。゚ ・ ゚
  |   >≦`Vヾ        ヾ ≧
  〉 ,く 。゚ /。・イハ 、、     `ミ 。 ゚ 。 ・

912 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:03:45 ]
話を聞くだけで頭が痛くなるコードだな…

913 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:06:44 ]
もういっそエクセルでやってくれ・・・



914 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:12:14 ]
もうそれ紙に書いた方が良いよw

915 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:15:36 ]
>>910
もうどこから指摘して良いのやら全然ダメなやり方です
C#の本を1冊買って読みながら作った方がいいと思うよ
基礎をおろそかにしては次のステップへは進めない

916 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:20:19 ]
まずクラス名のザッセキが気になる

917 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:28:27 ]
うん、まずは配列覚えようか

918 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:31:55 ]
取り合えず
配列
でググろうか

919 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:32:49 ]
俺は本なんてよまないからいまだにオブジェクト指向とか意味わかってないけど経験でなんとかやってこれた。
あたって砕けて覚えていくのが楽しいものですといいたが、苦労したくなかったら本読め

920 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:44:28 ]
さすがに本読んでなくても
70も同じコード書いてたらなんかおかしいって思うだろ普通

921 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:51:18 ]
プログラム書くときって普通合理化しようと思うものじゃないの?
初心者とか以前に最低限、初心者用の本を読むとかアルゴリズムの入門編くらいは知っておけよ

922 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:52:46 ]
テキストボックスに、数字以外のものを入力させたくないのですが
どのような方法があるでしょうか?

右クリック、コピペでの貼り付けは考えなくて結構です。


923 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:11:09 ]
>>922
Validatingとか



924 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:18:59 ]
かれこれ2ヶ月やってこれです。

死んだほうがいいですかね。


925 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:21:03 ]
あ、↑910です

まじめに会社を辞めようかとも思ってます。ありがとうございます

926 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:26:36 ]
>>924
二つ質問があるんだけど
本は読んでいますか?読んでいれば何という本を読んでいますか?

927 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:29:50 ]
>>926
読んでいる最中で
猫でもわかるのC#を読んでいます。

やってるときは普通にこれじゃ意味ないなとか思ってたんですが
どうしたらいいか分からず上のようになっています。

ちゃんと読んで、サンプルも作ったり改造したりしてるのですが
全然だめですね。ほんとに死にたくなると同時に無能さを感じました。

928 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:31:00 ]
>>924
うそ、だろ・・・
俺も8月頃C#始めたけど(勉強のためにこのスレ見てる)
さすがに配列くらいわかるわ・・・

929 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:34:11 ]
初心者本が初心者にやさしいとは限らないからねえ
910の場合、本読んでるなら本の影響だろ

930 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:39:45 ]
どんな初心者本でも配列くらい載ってると思うけど…

931 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:45:55 ]
プログラムにバグがあるとき以外
発生しない状態になったときは
InvalidOperationException 投げておけばいい?

それとも、ApplicationException?

932 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:54:17 ]
>>931
その状態ってのが具体的にどういう場合なのか
引数がおかしければInvalidArgumentだし
メンバが変な値になってればInvalidOperationだし
なんかアプリ固有の例外を投げるべきかも知れないし
どんな例外もピンと来ない場合はなんとなくInvalidOperation投げることもあるけど

ApplicationExceptionは元々アプリ固有の例外を定義するための基底クラスとして用意されてた
ただし全部Exceptionから派生するようにガイドラインが変更されたので死にクラス

933 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:02:54 ]
「使い方が間違ってる。コードを修正しろ。」という意味で例外を投げる場合は
InvalidArgumentExceptionやInvalidOperationExceptionのようないい加減な例外を投げておくべき。
わざわざ固有の型を作るとキャッチしてくれという意味に取られかねない。



934 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:08:02 ]
>>922
KeyPress() イベントで e.KeyChar と e.Handled を使ってふんだらら。
ごめん。詳しくは覚えてない。

935 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:08:34 ]
zassekiにほれたのでやってみた。
呼び出し側のForm

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ZassekiEvent += Sekigae;
frm.Show();
}
private void Sekigae(object sender, EventArgs e)
{
var txtBox = sender as TextBox;
if (txtBox != null)
{
this.Controls.OfType<TextBox>()
.Where(t => t.Name == txtBox.Name)
.Single().Text = txtBox.Text;
}
}
}

936 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:09:55 ]
席の情報をもつForm

駄作だがうけとってくれw

public partial class Form2 : Form
{
public delegate void ZassekiEventHandler(object sender, EventArgs e);
public event ZassekiEventHandler ZassekiEvent;

public Form2()
{
InitializeComponent();

foreach (var txt in this.Controls.OfType<TextBox>())
{
txt.TextChanged += new EventHandler(zasseki_TextChanged);
}
}
void zasseki_TextChanged(object sender, EventArgs e)
{
ZassekiEvent(sender, e);
}
}


937 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:12:07 ]
Form1とForm2のTextBoxは同じ名前という前提で頼む。
Form1.TextBox1とForm2.TextBox1がつがいになる。
保存を考えたら外部のリソースにたいしてバインドするほうがいいだろうな。


938 名前:デフォルトの名無しさん [2009/10/15(木) 22:16:34 ]
リソースとバインドの意味がわかりません

939 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:19:36 ]
>>846みたいな設計にするってことだろ
いわゆるデータバインディングなどを使うかどうかは別にして

940 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:19:48 ]
辞書ひけカス

941 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:24:49 ]
C#初心者って言ってんのにデリゲート唱えるコードとかwwwドSw

942 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:31:27 ]
LINQ避けてわざわざforeachで回されると長くなってうざい
どうせイベントとか使ってる時点で理解できないだろうから短く貼ってくれた方がいい

943 名前:デフォルトの名無しさん [2009/10/15(木) 22:34:54 ]
この程度で長いって……



944 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:37:24 ]
ここでLINQを使うならいったいどのように書くんだ?
そっちの方が横に長くなると思うけど

945 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:44:45 ]
奥に長くしてくれ

946 名前:942 mailto:sage [2009/10/15(木) 22:45:52 ]
いや>>941が.Where(t => t.Name == txtBox.Name)に文句付けてるのかと勘違いした
たぶんイベント使ってるのが難しいと言いたいんだろうな

947 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:56:42 ]
初心者がやるならテキストファイルから入出力でしょうね。
配列、入出力あたりは早めに覚えておきたい。

948 名前:942 mailto:sage [2009/10/15(木) 23:01:34 ]
フォーム間のやり取りにわざわざテキストファイルを介するの?
そこまでして無理に今やることはないと思うぞ
さっさとオブジェクト指向の勉強とか済ませてしまった方が早い

949 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:52:32 ]
それよりいまの問題は配列をしらない事だろうw

950 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:53:55 ]
これを題材に、一歩ずつ学べるようにリファクタリング&機能追加するような教材を作ったら・・・
別に売れないかなw

951 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:56:38 ]
>>942
保存はどうするの?

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

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



954 名前:942 mailto:sage [2009/10/16(金) 00:00:24 ]
Excelでいいじゃん

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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



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

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

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

フォルダ名.クラス名

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

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

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

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

System.TxtReader

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

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

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

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

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

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

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

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



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

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


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

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

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

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

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

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

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

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



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

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

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

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

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

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






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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