ふらっとC#,C♯,C#(初心者用) Part48
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part47
http://pc12.2ch.net/test/read.cgi/tech/1257067411/
zip解凍を下記コードでしているのですが、 ClickOnesで発行しインストールしたPCの中で一台だけ例外で動作しません。 VisualStudioから「デバックを開始」だと正常に動きます。 動かないOSはXPです。(他のXP機やVista・7は動作します。) Shell32は参照設定してローカルコピーもしてます。 try { Shell32.ShellClass s32 = new Shell32.ShellClass(); Shell32.Folder zip = s32.NameSpace(filename); Shell32.Folder zipex = s32.NameSpace(dir); Shell32.FolderItems zipItem = zip.Items(); zipex.CopyHere(zipItem, 20); } catch (Exception e) { MessageBox.Show(e.ToString()); } <例外の内容> System.InvalidCastException: 型 'Shell32.ShellClass'のCOMオブジェクトを インターフェイス型'Shell32.IShellDispatch5'にキャスト出来ません。 IID '{866738b9-6cf2-・・・略}'が指定されたインターフェイスのCOMコンポーネント上でのQueryInterface 呼び出しのときに 次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません(HRESULTからの例外:0x80004002 (E NOINTERFACE))。 場所 Shell32.ShellClass.NameSpace(Object vDir) エスパーな内容で申し訳ありませんが、宜しくお願いします。
前スレ950です >>前991 確かに、1/3で呼ばれることも有りますね… 幸い除外値は1つなのですが、他に方法ありますか?
よっぽど極端な場合なら int[] 全ての許容値 = {…}; result = 全ての許容値[random.Next(0, 全ての許容値.Length)];
>>3 http://msdn.microsoft.com/en-us/library/bb774116 (VS.85).aspx
IShellDispatch5 は、Vista 以降に追加されたインターフェース
XPからは使えないわな。
bin以下に interopなんたらって生成されてない?
されてるなら、そいつはdllコピーを見に行かずPCにインストールされてるdllを見にいく。
動作しているXPのマシンはたぶんXPでも動作するようなパッチがあたってんじゃね?
MSUpdateでとりあえず全部最新にしてみたら?
>>4 結果をずらせばいい。
2〜8の乱数で除外値5の場合、
2〜7の乱数を発生させて、結果が5以上なら+1する。
一般化すると・・・
min〜max-1の範囲で乱数発生
結果がexclusion以上の場合は+1する。
これだと乱数発生は一回ですむし、ループもいらない。
Visual C# 2008 Express Edition で勉強中です 全国の市町村検索データベースを作成しようと思っています (漢字、よみがなであいまい検索できるようにしたいと思っています) 全国の市町村の数くらいなら、テンプレートの「データセット」でも大丈夫でしょうか? またはSQLiteを使った方がいいでしょうか? それとも他にいい方法がありますでしょうか? 初心者すぎて、入り口が広すぎで検索しても絞り込めないです お知恵をお貸し下さい
>>8 せめてDB使ったほうがいいんじゃないかな?
10 :
デフォルトの名無しさん :2009/11/19(木) 10:39:56
Graphics#DrawString() を使って縦書き描画をすると、 ローマ数字が90度回転して描画されてしまうのですが、 どうしたら良いでしょうか? [ソース] Graphics g = pictureBox1.CreateGraphics(); String drawString = "あいうえおTUV"; Font fnt = new Font("@MS ゴシック", 16, FontStyle.Bold); StringFormat sf = new StringFormat(); sf.FormatFlags = StringFormatFlags.DirectionVertical; g.DrawString(drawString, fnt, Brushes.Black, 0.0F, 0.0F, sf); fnt.Dispose(); g.Dispose();
11 :
3 :2009/11/19(木) 12:20:05
>>6 >bin以下に interopなんたらって生成されてない?
されてましたorz
DotNetZip Libraryを使ってみる事にします。
回答ありがとうございました!
12 :
3 :2009/11/19(木) 14:00:41
ウィンドウに関連付けられたテキストを取得したいのですが、 取得するテキストサイズが分からない場合どうすればいいのでしょうか。 あらかじめ大きめにサイズを指定しておくしか無いですか。 現在は下記のようにしていますが、途中までしか取得できません。 byte[] buf = new byte[255]; StringBuilder sb = new StringBuilder(); sb.Length = 255; SendMessage(hWnd, WM_GETTEXT, 255, sb);
WM_GETTEXTは見つけられて何で気付かないのかねぇ
14 :
3 :2009/11/19(木) 14:23:44
>>13 ありがとうございます!
WM_GETTEXTLENGTHで取得出来そうです。
そもそも3の質問は解決してるんだから 同じ人って主張する必要ないんじゃない?w
>>15 恥ずかしながら名前の消し忘れです。
>>12 を書き込んでから赤面しましたが、
書いてしまったので質問中は統一しました><
17 :
8 :2009/11/19(木) 18:18:22
>>9 いろいろ調べて、敷居を低くしました(涙
・System.Data.SQLiteでデーベース構築
・PupSQLiteで市町村データベースインポート
後は検索するコードをがんばればいけると思っています
まぁすんなりはいかないと思いますが、その時はみなさんのお力を貸して下さい
19 :
デフォルトの名無しさん :2009/11/19(木) 19:24:51
ComboBoxのDatasourceにDataTableをぶち込んだ後に、Datasourceから値を取得したらArrayになります。 ここからLINQで操作したいのですがいい方法ないでしょうか?
datasourceから取り出すときにキャスト
タブコントロールを使ってるんですが デフォルトがだっさくてしょうがない 外見変える方法はないですか?
自分で描画すればー 検索キーワードはオーナードローとカスタムドローでどうぞ
WPFならコード書かずに見た目変え放題
>>24 XAML弄るのはコード書かないとは言えない気がするぜ
ハードル的な意味で
Expression Blendと格闘中 変え放題ねぇ、いつになったらできるようになるんだろう
プログラマならXAMLは手書きから入った方が理解しやすいと思うよ
ありがとうございました
C#のMSDNみても情報量膨大すぎて何からはじめればいいかわからん。 C#初めてなんだけどまずMSDNのどのページを見ればいいの?
将来的な需要を言うとC++とC#だとどっちが良いのかな?
C++じゃねえかなあ 個人的にはC#のが好きだが
だよね・・・C++を学ぶなら先にC#学んでおいた方がいいかな?
設定を効率よく保存する方法ってどんなのがありますか? バイナリやテキスト(.iniなど)などが主流だとは思うんですけどね
将来的な需要ならC#だろ
アプリケーション設定かXmlSeriarizer
>>34 どの観点から見て効率よくなのかが分からない
プログラム的にはシリアライズしてファイルに書き出した方が楽だろうけど
人間がそれを読むのはテキストや設定ファイルに比べれば多少面倒臭い
バイナリとテキストってそれ以外になにがあるっちゅーねんってつっこみはおいといて、
C#でやるならxmlが主流ですよ。
>>31 Windows上でアプリケーション書くだけっていうならC#じゃないのかねぇ。
言語学ぶだけならC#先でもC++先でもどっちでもいいけど
VC++は色々ややこしいからやめといた方がいいと個人的には思う
もうヘッダ眺めただけで拒絶反応でるくらいC++嫌いになった
今のC++は変態的なテンプレートプログラミング言語って感じがするなぁ 大人しくC#から入った方が幸せじゃね?
構造体が嫌いでxmlよりini使ってるんだけど 実際どうなのかな?
構造体とXMLに何の関係があるのかも分からんし どうなの?って何聞いてるんだか意味不明だよ
わかりません
iniはフラットな構造だけど xmlは階層構造してる(=構造体)ってことじゃないかね? どうなのかなって言われても時代遅れですとしか。
>>45 iniも一応階層構造だし、むしろシンプルな構造体はiniに近いでしょ
じゃあマークアップ言語が嫌いってことか WPFとか駄目なんかな
>>10 "@MS ゴシック" を
"MS ゴシック" にする
49 :
デフォルトの名無しさん :2009/11/19(木) 23:47:28
すいません質問させてください。 以下のようなプログラムを動かした場合に、Main()の中の @をAに書き換えても(どちらでも)問題なく動作します。 Func()内部で生成されるインスタンスArrayListのスコープを考えると @の書き方が正しいのでしょうか? そもそもAでは Func()から復帰するときに復帰値をコピーしようとして 復帰値をコピーする受け皿インスタンスが無い。→例外! みたいな動作かと思っていました。 Aにしたとき、al = b.Func();の行で何が起こっているのでしょうか? 解かりにくい説明かもしれませんが、よろしくお願いします。 class aaa { public static void Main() { @ArrayList al = new ArrayList(); //AArrayList al; bbb b = new bbb(); al = b.Func(); foreach (string s in al) Console.WriteLine(s); } } class bbb { public ArrayList Func() { ArrayList al = new ArrayList(); al.Add("111"); al.Add("222"); return al; } }
newされた参照型のオブジェクトはどこかになんとなく存在してて、 常にそのオブジェクトの電話番号でやり取りするの 変数に入ってるのもメソッドの引数も戻り値も全て実体ではなくて電話番号
受け皿インスタンってなんだよw
参照型について勉強しましょう どんな本やサイトにも説明があります ここでちょっと聞いて解るようなものではありません
53 :
49 :2009/11/20(金) 00:22:42
どうも回答ありがとうございます。
>>50 なるほど、newしたインスタンスのスコープを勘違いしていました。
メソッド内で生成したものでも、メソッド復帰時に解放される
わけではないのですね。
null指定したりGCで殺されるまでnewで生成されたインスタンスは生きつづける、
と理解できました。
>>51 いや〜、Cだと関数呼び出しで構造体受け渡すとコピーが発生するじゃないですか?
そういうイメージなのかと勘違いしていました。
>>52 ポインタ参照だと理解しています。
>>53 null指定したり〜〜行き続ける
いくらなんでも使用中に勝手に殺されたら嫌過ぎるだろwwwwwwww
つかいものになんねぇよwwwwwwwww
null代入しても消えません 使われなくなったらそのうちいつのまにか消えてます
int a; double b=2.32; a=(int)b; //a=bはダメ みたいに(int)をつけなきゃいけなくなってるのは int型やdouble型にimplicitだかが定義されていなくて explicitだけオーバーロードされてるから ってあってますか? でもMSDNのdouble構造体ってとこみたら 演算子のオーバーロードにexplicit書いてないけど 何か特殊な方法でやってるわけじゃないよね?
組み込み型とか配列は特殊で、機能がILや言語レベルで実装されていたりする
システムの機能に任意のタイミングで SQL鯖2008のバックアップを出来るようにしてほしいと言われたんだけど どれでいこうか迷ってる @マネージメントスタジオを直で使わせる Aosqlのバッチを用意して使わせる B2のバッチをPGからキック CPGから直でバックアップSQL実行 DSQLDMOを使う 他にもありそうですが、皆さんどのような方法で実装していますか? あと皆トランザクションをある程度の量で切り捨てなければいけないような環境だとどうしてるんだろう・・・
>>60 サンクス
すれ違いごめ
そっちで聞いてきます。
リストビューでカラムを適用したアイテムのtextをカラムの長さに合わせて自動で折り返して 欲しいのですが、これはラベルワープtrueではだめなのでしょうか?。 自分で長さに合わせて改行しないとだめですか?。
改行を入れても改行されませんよ フフンw
高さの計算とかめんどくさいだろうしオーナードロ-とかでやるのも厳しいからやろうとしたこともないが DataGridViewで代用してるなぁ…
ラベルワープって何だよ
ワードラップだろ
67 :
デフォルトの名無しさん :2009/11/20(金) 12:54:43
(Keys.G | Keys.Alt)をXmlSerializerでシリアライズすると <Keys>LButton RButton Cancel MButton XButton1 XButton2 A B C D E F G Alt</Keys> こうなるんですけど、 なんで <Keys>G Alt</Keys> こうならないのか意味がわかりません 誰か助けてください
FlagsAttributeがついてるせいで内部で少しややこしい処理をしている デシリアライズすれば元に戻るから気にするな
69 :
デフォルトの名無しさん :2009/11/20(金) 13:06:59
ありがとうございます!! ファイルの中身がめちゃくちゃになってたからびっくりして質問しちゃいました 助かりました!!
>>57 それはintとdoubleに互換性が無いから。
それぞれ用途が違い内部表現も違うので、相互に変換する場合には明示的に変換処理が必要。
C#の場合はキャストまたはas構文を使う。
intとdoubleに関しては組み込み型なのでキャストで十分。
IEEE754 で調べてごらん。
すいませんListViewで垂直スクロールバーが出ているかどうか知りたいんですが 何か方法はありませんか?
ListViewを継承したクラスを作って protectedなメソッド調べてごらん。
>>21 ありがとです。
だったらスマートフォン買うときはWindowsMobile機にしよっと。
C#の配列って C言語の配列と違って メモリ上に物理的に連続してないの? C言語なら 405FAC40にa[0]があったら 405FAC44にa[1]があって ・・・・AC48にa[2]、というふうに 連続してたけどC#は違う?
違う。 stackalloc使いなさい。
もしくはfixed
へぇ。C#の配列ってめちゃくちゃに並んでるんだ?C言語と比べて効率悪そうだね。
連続してる。だからunsafeでポインタが使える。 ただし配列全体は固定されていない。移動することがある。
それはガベージコレクタが勝手にやってるんでしょ? C#の参照型はポインタ型と違って直接アドレスを表示できないけど 例えば 405FAC40にa[0]があったら 405FAC44にa[1]があって ・・・・AC48にa[2]、というふうにならんでたのがガベージコレクタが勝手にコンパクションを実行して 638AC044にa[0] 638AC048にa[1] ・・・・C04Bにa[2] みたいになっちゃうってことでいいの?
それを知って一体何する気なんだろう・・・・ あ、いや 気になることってあるもんね
効率の観点から言ったら内部では連続してるんじゃねえかなぁ それを前提にしてはいけないんだろうが
おれも連続しているとは思う どうせアドレスなんか使わないけど
データがそこに直接あるのではなくてJPがあるんじゃないの
C#(CLR)の配列は本質的にはgcnewなので、連続はしている。 79のいうように、知らない間にアドレスが変わってる、なんてことはありうる。 そういうことをやってもらうためのガベージコレクションでもあるわけで。
参照は移動しても大丈夫。 ポインタはそうはいかない。 配列全体は連続してる。
そんな事より>>1よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。 昨日、近所のメモリ内行ったんです。メモリ内。 そしたらなんかインスタンスがめちゃくちゃいっぱいで座れないんです。 で、よく見たらなんか垂れ幕下がってて、ジェネレート2、とか書いてあるんです。 もうね、アホかと。馬鹿かと。 お前らな、ジェネレート2如きで普段来てないメモリに来てんじゃねーよ、ボケが。 ジェネレート2だよ、ジェネレート2。 なんかダイナミック変数とかもいるし。ダイナミック配列でメモリか。おめでてーな。 よーしパパ逆参照しちゃうぞー、とか言ってるの。もう見てらんない。 お前らな、ガベージコレクションやるからその席空けろと。 メモリ内ってのはな、もっと殺伐としてるべきなんだよ。 隣のアドレスに座った奴といつ喧嘩が始まってもおかしくない、 刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
garbage collector in real-life
ホームページビルダーみたいなエディタをC#で 作ってみたいなー
ホームページビルダー懐かしいな 今はWikiみたいに簡単に自分のページを作れるけど ページビルダーみたいなのっていまだに売れてるんだろうか
ここはお前の日記帳じゃねえんだ
WPFのRichTextBoxで作ったFlowDocumentをXHTMLに変換すれば楽勝
友達いない奴はみんなGCに回収されるんですね
明示的にDispose()実行するまではまだなんとかなる。早まるな。
つまりガベージコレクションは俺たちの社会の縮図だったわけか・・・
気付かないのか? お前達はusingステートメントで初期化されていたことに…
さてと、米にバルス!
98 :
97 :2009/11/20(金) 23:29:13
ごばく すまそ
ラピュタは2ちゃんの鯖を落とす程度の能力か
ガベージコレクションってメモリの管理だけをする道具 っていう認識でいいの?
>>100 それじゃあメモリアロケーターだ。
ガベージコレクションはインスタンスの寿命を管理するシステムのこと。
じゃあ構造体はインスタンスじゃないから ガベージコレクションに管理されないの?
インスマウス
邪神崇拝者の来る場所じゃないぞ
WinXP Pro SP3、VS2008, .Net 3.5 C#で開発を行っております。 以下のコードを実行したところ、System.Runtime.Remoting.RemotingExceptionが出てきたり、出てこなかったりするケースがあって困っております。 Exceptionのメッセージは以下の通りです。 オブジェクト '○○' が切断されたか、サーバーに存在しません。 どなたかもしよろしければ、原因・対策などご教示いただければ幸いです。 よろしくお願いします。 //コード private HogeHogeHoge x = null; private AppDomain hostedAppDomain = null; //初期化 private void Init() { AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory.ToString(); Evidence evidence = new Evidence(); evidence.AddHost(new Zone(SecurityZone.MyComputer)); hostedAppDomain = AppDomain.CreateDomain("XXX", evidence, setup); x = hostedAppDomain.CreateInstanceAndUnwrap("HogeHoge", "HogeHogeHoge") as HogeHogeHoge; } //終了 private void Exit() { if (x != null) { // xの終了処理 ここでSystem.Runtime.Remoting.RemotingException x.Disose(); } AppDomain.Unload(hostedAppDomain); }
Exitが2回呼ばれているんじゃ?
>>102 構造体はスタックに確保されるからGCで管理はされない。
え?
「え?」とか「は?」とかバカじゃないの、もうちょっと何か書こうよ。 クラスのメンバーに構造体がある場合や、Boxingされたケースとか、 例外はあるが基本的に言ってることは正しいと思うけど。
110 :
デフォルトの名無しさん :2009/11/21(土) 13:47:38
今回初めて印刷のロジックを作ることになりました。 「PageSettings.HardMarginX」と「MarginBounds.X」 のちがいは何でしょうか? 実行して値を表示させたとき、 「MarginBounds.X」 = 100、 「PageSettings.HardMarginX」= 13 となりました。 どちらも印刷可能範囲の左上端を示していると思いきや全く異なる値でした。 どういうちがいがあるのか、 ご存知の方、教えてください…!
マージンは印刷しないサイズ、ハードマージンは印刷できないサイズ ハードマージンは見なくて大丈夫だと思う
112 :
デフォルトの名無しさん :2009/11/21(土) 14:14:08
>>111 さんありがとうございます。
今作成中のアプリケーションは、
全国の何ヵ所かの家庭や店舗で利用してもらおうとしており、
それぞれの家庭や店舗のプリンタの機種が様々なのですが、
どんな機種でも、おおよそ決まった位置に明細を印刷しようと思っています。
この場合もマージンで問題ないでしょうか。
たびたびの質問で恐縮ですが、よろしくお願いします。
>>112 印刷は所詮はアナログの世界なので、どうしても狂うことが出てくる。
オフセット(マージン)、縮尺は、ある程度印刷時に変えられるように作っておいたほうがいいよ。
>>113 だから、前にもこのスレあたりで書いたと思ったが、そんな訳がないだろう、ってw
プリンタの実装がそんないい加減なものならどうして葉書の郵便番号なんか
ちゃんと枠内に印刷できるんだ。
テキトーなこと言う奴が多すぎるな。
つーか、フチなし印刷できるプリンタ、できないプリンタでハードマージンは違うだろよ。 調整機能は必須。
>>115 だから、そういうテキトーなことを言わないこと。
葉書印刷ソフトだけでも世の中にいろいろあるが、そんな「調整機能」が
付いたソフトは見たことがない。
そんな泥臭い作業を人間様に任せるようなダメ設計になってるのなら
windowsもページプリンタもこんなに普及してねえよ。
これがゆとりってやつか・・・。
>>116 ____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ <そんな「調整機能」が
| |r┬-| | 付いたソフトは見たことがない。
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <.だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バ
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) バ
ン
>>118 それは古い精度の悪いプリンタ(現実にはあまりないが)を使っている人を
想定した「念のための機能」であって、
>>115 が主張するように必須の機能なんかじゃない。
通常はそんな馬鹿げたことをしなくても、少なくともmmオーダーの精度で
正確に位置決めされた印刷が行えるようになっている。
っていうか、印刷のコード書いたことがない馬鹿は黙っていた方がいいよ。
で? ユーザーがどんなプリンタを使ってるのか特定できない以上、
>>118 みたいな
調整機能は必須だろ?
というか、.NETだとそのためのプロパティがHardMarginX,HardMarginYなんだよ。 これで用紙の左上とプリンタの印刷可能領域(印刷時のハードウエア座標の原点) のズレが取得できるようになっている。
>そんな「調整機能」が付いたソフトは見たことがない。
124 :
デフォルトの名無しさん :2009/11/21(土) 15:48:17
プリンターの印刷可能領域に左右されずに、 用紙の左上から決まった場所に印刷するには、 例えば(100-ハードマージンX,200-ハードマージンY) とすべきですか?それとも 例えば(100-マージンX,200-マージンY) とすべきですか? マージンはプログラム上で何も設定していません。 よろしくお願いいたします。
>>121 だから、現実問題としてはそんなプリンタは市場にほとんど存在してない。
紙送りの精度が悪いので有名だったHPの10年前の製品だって、そんな機能が
必要になるほどズレたりはしない。
まー、そう思うなら調整機能付けなきゃいいだけだわな。 実際、有名どころの年賀状印刷ソフトにはついてるし、俺もあとで修正するのは面倒だから、 そういう機能を付けるけど。
>>124 用紙の、の場合は、マージンは使わない。
ハードマージンの分を含むか含まないかは、試してみてくれ
HTMLエディタを作る場合の内部的なデータの持ち方は どんなのがいいでしょう?
機能によって違うんじゃね?
データ実体はHTML&CSSだろうな
プリンタによって1ページに収まったり収まらなかったりするんだから、 その手の調整機能は普通いるんじゃないの?
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ <そんな「調整機能」が | |r┬-| | 付いたソフトは見たことがない。 \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
どうでもいいが、幼稚な奴が多いのな。 俺は馬鹿な奴は嫌いじゃないが、幼稚な奴とコミュニケーションができない 真性ヲタはどうしようもないクズだと思ってる。
揚げ足取りで勝った気になる困ったちゃんは少なからずいるものだ
>>133 お前みたいな幼稚なレスしかしない奴もクズだけどな
僕.NEET 喧嘩はやめて
みんなゴメン。
>>133 俺も幼稚な奴は嫌いだけど論理的じゃない奴も嫌い
前2行をどう呼んだら3行目に繋がるんだ?
幼稚な奴は小学校からやり直した方がいいな。 年賀状印刷ソフトに調整機能なんてついてない! とか言い張って、 ソースが提示されてるのに、現実問題としてそんなプリンタはほとんどない! か。 ほんと、テキトーなことを言う奴が多いなw
プリンタはアナログの世界で動く機械であって、 必ずしもアプリ側で指定した内容でずれなく印刷できる保証がどこにもない。 で、プリンタドライバのユーリティーでもある程度調整は効くだろうけど、 それで無理なような突っ込んだ内容はアプリ側でもある程度対応できるようにしておくべきだろう、という話。 必要だと思わないならやらなきゃいいだけさ。 別にスレが荒れるような内容じゃない。
142 :
デフォルトの名無しさん :2009/11/21(土) 17:44:15
マージンは余白で、 ハードマージンは常用プリンターの印刷可能開始位置だよね。 ところで、 マージンの値をページ設定ダイアログから指定していないときは、 C♯上のマージンの初期値はいくらになるの?
>>140-141 無知無能なくせにしつこいなお前さん。
本当にプログラマか?
っていうか、君(ら)は今までプリンタ使ったことないのかね。
1万前後で買えるキャノンやエプソンの最下位グレードのインクジェットだって
位置決めの問題なんかないんだよ。
そんなことは例えばワードで葉書印刷をしたってわかるし、
自分でコードを書いて印刷されたものを物理的に測定したって分かる。
馬鹿な癖に頭の中だけで考えているからそういうとんでもない勘違いをすることになる。
俺、キヤノンiP3100の付属CD印刷ソフト使ってるけど、微調整しなきゃズレるぞ?
>>144 俺もそれ使ってるけど微調整したことない
なんでクエスチョンマークをつけるんだ?
同じプリンタで同じように印刷すれば、そりゃ、位置はズレないだろうよ。 ズレるようなら、それは不良品。 そんな話をしてるんじゃなくて、違うプリンタで位置がズレるか、って話。 印字位置の調整機能を持ったソフトなんて、それほど山のようにあるだろ? もう釣りはいいから、さっさと死ねよ。
>>145 微調整したことない?
妙だな、CDのメーカーによって変更しなきゃいけないのに
ああ、気にしてないってだけか
>>146 だから、プリンタの違いによる物理座標の違いを補正できないような糞設計には、
プリンタ側もウィンドウズ側もなってはいないの。
何度も言うように、.NETでも2.0以降はHardMarginX、HardMarginYプロパティが
ちゃんと容易されていて、必要ならこういう差異をちゃんと補正できるようになっているんだよ。
ウダウダ言ってないで実際コード書いてみれば分かるから。
プリンタぐらい持ってるでしょ。
同人でズレてるのは見かけるな。
フォントなんて3だか9だかの倍数じゃないと、メーカーによって大きさがバラバラだったよね。
なら、年賀状印刷ソフト会社にでも教えてやれよ。「調整機能は不要です!」って。
152 :
デフォルトの名無しさん :2009/11/21(土) 18:27:13
>>142 ですが、ご存知の方、教えてください…
(>_<)。
「同じように印刷すれば、どのプリンタでも印字位置はズレない」 こんな命題が成り立つわけないのは自明だろ。全メーカーの全プリンタで検証して はじめて成り立つわけだし。 俺はそんな検証したくないし、そもそも、位置ズレに悩まされたこともあるから、 調整機能を付けるよ。
万人が使えるUIなら当然微調整機能くらいは付けるわな
このどうでもいい議論いつまで続くんだろう
C#でグローバルIPを取得するにはどうすればいいですか?
>>157 ルータに問い合わせるかリモホを表示するサイトにアクセスして
その結果を利用するか
>>157 なんのグローバルIPをどんなアプリから取得したいんだよ?
LAN 内からルーターのグローバルIPが取りたい、ってことなら、UPnP か、
いったん外部にアクセスしてそっちからもらうか、だな。
>>158 ,159
ルータに問い合わせるって簡単に出来ますか?
リモホを返すページ作ってアクセスさせてみます
あ、SSI使えたので流用しようかと思いましたが、 ありがとうございます。使わさせて頂きます。
デリゲートはメソッドをカプセル化する型
SMTPClientを使ってメールを送るプログラムを作っていたのですが、 WinXPの自分のPCだと問題無く動作するのですが、 Vistaの友人のPCだと、 メールを送信できませんでした。 場所 System.Net.Mail.SmtpClient.Send(MailMessage message) 場所 ConnectForm.Sendmail_DoWork(Object sender, DoWorkEventArgs e)] となり、詰まってます。smtpはVistaで使えないのですか?
>>164 メール送受信関係はWindowsのアキレス腱。
だって、元々SMTPはメールサーバー同士でメールをやり取りするためのプロトコルだぞ。
メールサーバーをローカルに立てているWindows機なんてそこらにはないだろ?
ってことで、メール送信に関しては失敗したときの動作を必ず決めておくべき。
質問の答えだが、別にVistaだから使えないってことはない。
クライアントマシンの環境次第。例えばオレのマシンじゃ動かない。
166 :
164 :2009/11/22(日) 01:34:04
言葉足らずでした。 自分の場合、どの環境からも送信出来るようにと思い、 YahooやGoogleのフリーメールをsmtp経由で送信しているのですが、 それでもそんなものなんでしょうかね?
>>166 だから、クライアントマシンの環境次第だと言ってるじゃないか。察してくれよ。
ちなみに今時SMTPの標準のポートが空いてるプロバイダなんてまずねーよ。
168 :
デフォルトの名無しさん :2009/11/22(日) 07:02:38
FillRectangleメソッドではRectangleFを指定できるのに、 DrawRectangleメソッドではなぜRectangleFが指定できず、Rectangleしか指定できないのでしょうか? floatのX,Y,Width,Heightを直接記述するとデバッグでエラーにならないのだから--- RectangleFが指定できたらいいのですが・・・・・できますでしょうか。 ご存知の方よろしくお願いいたします。
言われてMSDN見てみた。ホントに一貫性無いな・・・なんでだろ。 Graphics..::.DrawRectangle メソッド (Pen, Single, Single, Single, Single) あるから出来ないわけないよね。 Graphics..::.DrawRectangles メソッド (Pen, array<RectangleF>[]()[]) に食わせるか、ラップ関数作って食わせるか。
>>164 とりあえずエラーの場所だけ書かれてもな
C#はCと違って文字列はアドレスはないの? char *P="もじれつれつ"; みたいなことできない?
うん。
そうなんだ。不便だのぉ
ポインタ管理しなくていいから楽でいいじゃん
>>171 ポインタは無いけど、イテレータ(Enumerator)ならあるよ。
ただし、string自体がimmutableなので、読み取り専用になるけど
GCって何ですか
ググレ
エンスーな写真月刊誌
C#は、他プロセスにアタッチして、 そのプロセスが持つフォームのタイトルテキストを変更するような プログラムを作成出来ますか?
うん 大抵はDllImport祭りになるけど
XPでVistaのガジェットのようにデスクトップに表示するアプリを作りたいのですが どのようにすればいいのでしょうか
作ればいいと思うよ
文字列を区切って変数に代入するメソッドはどうすればいい? class Test{ public int x; public int y; public void func(string s){ } } func("132/145")みたいに/で区切ると x=132、y=145が入る ようなことがやりたいんだけど。
string や int の性的メソッドを調べてみるべし
>>183 Splitかければいい。というか、こんなのは基本だろ?
分割できなかったときは、たぶんこの場合はnullを返すよりは例外を出したほうがいいだろうな。
unsafeでポインタ使えるから色々試してみるのも面白いよ splitより簡単にできることはないけど
実はただの分割じゃなく数式の解析が目的でしたとかなー
>>71 で、「ListViewで垂直スクロールバーが出ているかどうか知りたいんですが」ってカキコしたんだが
スルーされてしまったけど、やはり無理?
それが人に物を聞く態度か?
教えてくれたらロリ画像だします・・・
そうしたら通報します・・・
>>189 ClientRectangleの外にItem(かSubItem)が存在するかどうかで判定するとか。
…泥臭いやり方だなw
>>193 どうもです。ListViewをOwnerDrawしている状態で、ヘッダーの長さを水平スクロールバーの出ない長さに調整したいのですが
縦スクロールバーを考慮いてその分ヘッダの長さを短くすると、バーが出ない時に白く残っちゃうんですよね
これを何とか消したいんですが他のアプローチ考えてみます
>>189 ListViewのカスタムコントロール作ったことあるが、そのときはGetScrollBarInfoでやった
表示/非表示を知りたかったわけじゃなく、縦横それぞれのスクロールバーの
自動表示をコントロールしたくて実装した副産物
初心者スレでAPI薦めるってどうよって思ったが、正直ほかの方法は知らない
197 :
デフォルトの名無しさん :2009/11/22(日) 16:32:01
PrintDocumentにて、商品明細書を作成しています。、A4縦の単表に100ほどの項目名称や金額をDrawStringメソッドやDrawRectangleメソッドを併用して記述しているのですが、プレビューが出るのに15秒かかってしまいます (>_<;)。 項目数が多い場合、これくらい時間がかかるものなのでしょうか…。 皆様はどのような工夫をして、レスポンスを上げていますか? よろしくお願いします。
どのようにしているからレスポンスが遅いのかが分かりません。 各処理の区切りごとに時間を計測してどのボトルネックになている部分をまず探してみてはどうでしょう? 例えばDBからデータの取得が遅いとか色々あると思います。
15秒は遅いな 単票なら座標計算に手間取る事は無いだろうから、データ取得あたりで時間掛かってないか見てみた方がいい
200 :
デフォルトの名無しさん :2009/11/22(日) 17:05:30
>>199 ありがとうございます。
データは、今は直接、DrawStringメソッド内に文字列を指定しています。
DrawStringメソッドにて文字列の右揃えや左揃えを細かく指定し、さらに背景にFillRectangleでグレーの網掛けも随所に入れています。
DrawStringメソッドと
DrawRectangleメソッド、
FillRectangleメソッドを
1つの関数に定義して、100項目ほどの文字列の描画について、全てその関数で行う形にしています。
いい方法と思いましたが、項目定義が増えるほど一気に重たくなりました
(T_T;)。
DrawStringメソッドの中でPointのみを指定し、Rectangleを使わないようにした方が軽いかもしるません。
これから随所を削りながら試験してみます。
もし、何かコツなどのご意見がありましたらぜひ教えてくださいっ…!!
>>200 どちらかっつーと、データをレンダリングするのより
データを取ってくるのに時間が掛かってるんじゃないかと思うが。
コードの断片ごとに掛かってる時間を計測して、標準出力に出して眺めてごらんよ。
たかだか100項目程度のそれで15秒もかかるとは思えない 生で書き込んでるんだったら 適当に文字を置換して晒してみれば? 座標計算の所が気になると言えば気になるけど
PDFにしないからだよ
>>200 半分の50項目だったら何秒?
半分コメントアウトして試してみて
ListViewの話ですが、スクロールバーの検出に成功してカラムの調整まで成功しました が、水平スクロールバーの再描画というか消えるところまでは出来ませんでした もう少し頑張ってみます
配列と列挙型ってどう違う? いやまぁ違うところは違うけどさ。 列挙型でできることって配列使っても簡単に同じことできね? 列挙型の存在価値がわからんがなんのためにあるの?
全く違うだろう というかどういうのをして同じことって言うの?
配列だと代入できんじゃん わざわざラップクラス作る? そのほうが無駄な手間だ
>>207 , 209
?????
何を言ってるんだ???
もう一度教科書読むことを勧める
>>206 194を読まずにレスしたからGetScrollBarInfoっていったけど
本来の目的は横スクロールバーの表示抑制なんじゃないの?
そうであるならイベントハンドラでカラムサイズを調整すれば済むと思うけどダメだった?
>>207 列挙型で出来ることを配列で簡単に実現してるケースを知りたいわ
enum Color { Red, Blue, Green };
=
String[] color = {"Red", "Blue", "Green"};
とでも思ってるんだろうか・・・
string[] 時間={"あさ","ひる","よる"} enum 時間 {あさ,ひる,よる} Now=時間[1]; if(ひるなら) ほにゃらら if(Now==時間.ひる) ほにゃらら これは何がどうちがうの?
>>214 カラムサイズ調整までは何の問題もないけど、リストにロード直後だと再描画してくれませんでした
カラム調整は確認したから大丈夫ですよ
>>216 列挙体を関数の引数にした場合、列挙体以外の値以外入ってくる余地無くなるよね
これだけでも全然違うと理解できないかな?
>>216 ぜんぜん違うだろ。
時間[1]っての見てだれが"ひる"だってわかんだよ。
それに Now に "まよなか" ってまちがって入れちゃった場合だれが気付いてくれるんだ?
もし時間の種類に "ひづけへんこうせんをこえるまではよるのつもりでいます" なんて長いパターン入れたら
比較に時間かかるわ無駄なメモリ使うわでもったいないよな。
>>220 突っ込み所はそこなのか?
>>216 は上ではNowに時間[1]ってのを代入してて、下じゃ比較してるだけなんだぞ
enum は定数のラベル 実態は 1 とか 2 とか 3 なわけよ。 プログラムを組むときって状態を管理することが多いんだけど(あさだったらXX、ひるだったらYYとか) 状態の数が3つとか4つなら文字列なんか使うより数字使った方がメモリが無駄にならないし 処理も速いよね。 でも 1 とか 2 とかをプログラム中に直接書くと、書いてる人が混乱しちゃうし間違いやすい。 一人で数百行ぐらいのコード書くならまだしも2人3人ぐらいでやってるとあっというまに破綻する。 で、その 1 とか 2 のマジックナンバーに名前を付けることにしたのが enum なわけだ。 C時代は enum の他に #define なんてのもあったけど。 enum のいいところは変数にあらかじめきめられた数字「しか」代入出来なくしてくれる作用があって、 1 とか 2 で管理してる場合に間違って 9 とかが入っちゃって誤動作するのをコンパイルする段階で 見付けてくれるのよ。
お前ら釣りに優しいなw enum使ってくる時点で初めてではないだろ
経験者があの質問するのは釣りでも無理だろ・・・
時間.ひる == "ひる" だと思ってるのか?もしかすると。
>>205 レスの流れからして、読み込み済みデータで描画して何秒なら分かるが。
>>217 いや、なんというかアプローチの仕方が違うんじゃないかなって思ってさ
最初は縦スクロールの表示判定だったけど、その真意は横いっぱいに
表示したカラムのせいでアイテム数が増えて縦スクロールが出ると
結果的に横スクロールバーも出るっていう話ではないの?
そうであるなら、例えば縦スクロールバーのみ出しっぱなしにすれば
処理はシンプルになると思うし、縦スクロールバー隠しておくつもりなら
横スクロールバーは出ないようにしてしまったほうが、カラム調節で
チラツキの押さえ込みと格闘するより楽なんじゃないかなぁと・・・
enumすら説明出来ないクズスレ
>>226 半分の印刷で、時間が半分になるのか1/4になるのか、まさかの1/9になるのか
と言うことの確認。つまり二重ループ三重ループの疑い。
1/9ってなんだオレ…三重なら1/8だorz
なんでいちいちちょっとしたことするだけなのに Mainを意味のないクラスで囲まなければならないんだ!不便!
232 :
デフォルトの名無しさん :2009/11/22(日) 19:58:46
>>205 50項目のときは5秒でした。
サブルーチンの中で
※背景の塗りつぶしが必要ならFillRectangleを実行する。
※文字列を囲むならばDrawRectangleを実行する。
※文字列については常にRectangle構造体の中で水平垂直位置をパラメーターから与える
…これを150項目分行うようにしています。
項目が増えれば増えるほど、倍以上に遅くなっています。
FontなどのオブジェクトのDisposeが足りないのかなと思って直しましたが、結果はやはり15秒弱です。
Font? 一項目ごとにフォント読み込んだりしてない?
>>231 そこまで考えてるのになんで
ちょっとしたことするだけなのに Main なんて意味のないメソッドで囲まなければならないんだ!不便!
まで発想が飛ばないのかねぇ。
>>229 え、多重ループの疑いがあったとして項目数減らしても計算量は線形でしか減らないキガス・・・
ああ、そもそもルーチンを何回も何回も呼び出している疑いか。あるね、そんな事。
>>227 用途は趣味で作っているメディアプレーヤーだから、1行の時もあれば100行近い場合もあるんですよ
で、曲名のカラムを調整して縦スクロールバーが無い時はいっぱいまでカラムを延ばして
バーが出たらバーの分だけ曲名を縮める。
そうしないと縦スクロールバーが無いとOwnerDrawしたカラムヘッダーの最後が真っ白けになっちまうし、
逆に縦スクロールバーが出ている時に伸ばしたら横スクロールバーが出るのがちょっとウザイ
現状、調整後に横スクロールバーが残っても、縦または横にスクロールした瞬間に消えるんですけどね
一回5secとして三回回って15sec。項目半分に減らして2.5secとして三回回って7.5sec。 減らした比率でしか計算量は減らないから、237は勘違い。
>>235 しかしながらC++とかに慣れてるとは・・・とてもじゃないが思いにくい
不便とかを超えてもう当たり前になっている所だからぶっちゃけどうでもいい
そして、そんな一か所がなんだってんだ もっといろいろあるだろう orz
>>232 1/3だと微妙だけど二重ループの可能性は高いな
ありそうなのは、
項目1つ目の場合は1つ目を描画し、2つ目の時は1つ目と2つ目を描画し…のパターンと
項目1つ描画するつもりが全項目描画している関数を呼び出している…のパターン
>>232 disposeしたところでGCに回収してもらわないと意味がない
そんで強制的に回収させてたら余計に遅くなるんではないかと・・・
メモリがないわけではないんなら
ところで150項目てあるけどループ回数は何回?
単純に150?
それとも違う?
1項目は そのサブルーチンを何回使う?
フォントはでいるだけ使いまわしてる?
(例えば明細用を最初に定義して使いまわす)
描画するデータをその都度どこかから持ってきてるとかかな
スタティック変数使って、何回通ったか数えてみてから考えても良いかも
245 :
241 :2009/11/22(日) 21:12:26
オレ算数できてなかったorz 1/3の数の描画で1/3の時間だったら、1項目の描画の途中で変に遅い部分があると言うだけだな
>>238 それなら、縦スクロールバーは常に出しっぱなしにして、
横スクロールバーは常に非表示にしておけば一番スッキリするんじゃないの?
少なくともカラムの幅に関係なく横スクロールバーは出ないようにしてしまえば
かなり問題は簡単になると思うんだがなぁ
>>232 さっきから埒が明かないな。ソースコードさらしたほうが早いんじゃね?
おそらく相当ひどい実装になってるんじゃないかと予想。
>>246 どうもListViewでは、スクロールバー自動と無ししか選択できないみたいです
ShowScrollBarをテストしてみたんですが、無効化されるようですね
他にやり方有りましたら教えていただけませんか?
249 :
デフォルトの名無しさん :2009/11/22(日) 22:01:17
FontオブジェクトやRectangleオブジェクトを生成するのって そんなに負荷がかかるものなのですか? 明朝体やゴシックが入り混じっているときも、 変更があるときだけ生成し直すのが良策なのかな。
Fontはアンマネージリソース抱えてるので特に生成が重い類 Rectangleは構造体だからほとんどノーコストで作れる
251 :
デフォルトの名無しさん :2009/11/22(日) 22:10:22
>>250 アンマネージリソース…?
はじめて聞いた。
クグルとするか
(>_<;)。
Fontを150回作るだけで何秒もかかるものでもないんだから、気にするだけ無意味
原因でないのは間違いないが普通は避ける
>>232 一度FillRectangle、DrawRectangle、DrawStringを全部外して時間を計測してみて
それで1,2秒になるならそのどれが遅いかをどれか一つだけ描画するようにして試して
さっぱり速くならないなら、描画処理以前の問題と言うことで。
問題の切り分け方から説明しないといけないのか 言語以前の問題では?
form.FormBorderStyle = FormBorderStyle.None; form.ShowInTaskbar = false; はい終わり
>>248 ShowScrollBarするという基本的な方針は間違ってない
俺はこんな感じで制御してる(thisは独自のスクロールバークラス)
どうしても分からなければメアド晒せばソースあげるよ
protected void ShowScrollBar(bool show)
{
if (show != this.Visible){NativeMethods.ShowScrollBar(this.Handle, this.Orientation, show);}
if (show == true)
{
SCROLLINFO info = new SCROLLINFO();
info.cbSize = Marshal.SizeOf(info);
info.fMask = ScrollInfoFlags.RANGE | ScrollInfoFlags.PAGE;
NativeMethods.GetScrollInfo(this.Handle, this.Orientation, ref info);
this.Enabled = (info.nMax >= info.nPage);
}
}
>>255 まぁ初心者スレだから・・・・
荒れているC#相談室では叩かれるかもしれんがw
>>258 それでWin+Dの時はどうなるのか分かる?w
そんな後出し言われてもなぁ・・・。
いやガジェットのようにって書いたじゃん・・・
でも、Win+D のときの話なんてひとつも書いてないじゃん。 ガジェットのように、なら、JavaScript で実装できること、とかも条件になんの?
火病った きもちわるい
>>264 C#スレでJavaScriptとは?
Vistaは使ってなくて、お聞きしたいのですがガジェットはWin+Dでデスクトップから見えなくなる、
つまりWindowStateはMinimizedになるのですか?
ネイティブC++のDLLを作成→C++/CLIでラップ→C#で参照しています。 ネイティブDLLに含まれる列挙型AをC#で変数宣言しようとすると、 "'AI.Schedule' はアクセスできない保護レベルになっています。"とエラーになります。 これを何とかC#上で利用できるようにする方法はないでしょうか?
そのAをどのように宣言しているのか・・・
ネイティブの型はC#では扱えない
>269 enum A{A1,A2,A3...}; このようなかんじです。 >270 やっぱりそうなりますね。C++/CLIで対応する列挙型を宣言し、 キャストして使うことにします。ありがとうございました。
aの文字列の中に、bの文字列が何回入っているか調べて intで回数を返すメソッドはどうやって作るんですか?
string A = "こんにちはああこんにちはあははこんにちは" ; string[] kugiri = { "こんにちは" }; int i = (A.Split(kugiri, StringSplitOptions.None).Length-1); //3 一例
a = "abaababa" b = "aba" の結果は普通に3でいいのか?
>>273 あー、配列で区切って長さを取得してるんですね。
とても参考になりました。ありがとうございます。
>>274 そうですね。
FxCop使ってないと絶対気付かんわな
>>277 デフォルトのIndexOfはなんであんな変な結果になるんだろな
String.ToLowerとかもカレントカルチャで動くから、そうおかしな琴ではないだろう
MS自身がおかしな挙動だと思ってるからFxCopで警告出たりするんだろう
Console.WriteLine( "AA".IndexOf("〇A") ); // 0 Console.WriteLine( "〇A〇A".IndexOf("AA") ); // 1 これは「〇」がなかったことにされるってことなのかね? やっぱりよくわかんない・・・
うおーうおー なんで同じことをするのにいくつもやり方があるんだよおおおおおおおおお
>>283 それはUnicodeの規格がおかしいのを忠実に実装したらそうなってるだけ
>>284 それぞれに顕著な差(状況毎の性能差とか)があればいいんだけど
そんなでもないときは叫びたくもなるわなw
>>285 なるほど。実装がおかしいんじゃなくて規格がおかしいのか。
ありがとう!
これって最初からそろってるものが高性能すぎて自分で文法を覚えたりクラス作る必要ないね。 最初からそろってるフォーム等のクラスや構造体の使い方覚えるだけで十分そうだ。
>>288 いや文法は覚えないと書けないだろw
あと、ポトペタで書く分にはそれでいいかもしれないけど
ちょっと何かしようと思うとすぐクラス書きたくなると思うよ。
>>288 そうでもあるし、そうでもない。
またフォームのような基礎的な部品も時々アーキテクチャーが変わったりするから
(System.Windows.Forms→Windows Presentation Foundation)
いつまでも同じ部品を使い続ける、という方針はあまりお勧めできない。
クラスにせよメソッドにせよコードの仕切りに過ぎないので、
分ける必要のないコード量なら分けなくても別にいいし、
分けるべきだと判断すれば分ければいい。
>>288 やればわかるけどそれで出来ることには限界があるよ
もっとも、教科書に載ってるようなアルゴリズムの実装なんかは
ほとんどしなくてよくなったとは思う
ローカル変数とグローバル変数の中間みたいなのないの? class Test{ private int x; public void func1(){ } public void func2(){ } public void func3(){ } } func1とfunc2でxは共有したいけど func3などそれ以外の部分でxを書き換えられなくない みたいな。
そんなものはありません func3を別のクラスに移してください
同一クラスの中で把握しきれないようなのならクラスの分割を考えた方がいいんじゃないか
>>292 なんでわけたいのかとか設計によるけど
■継承
class Test{
private int x;
public void func1(){}
....
}
class Test2 : Test {
public void func3(){}
}
とか
■移譲
class Test2 {
Test test = new Test();
public void func1() { test.func1();}
...
public void func3(){}
}
実装を見せたく無い場合は普通はクラスをわける設計になるはず
×移譲 ◯委譲 でした・・・
基本的にはない。クロージャ使うとか、そういうテクニックはあるけど。
こういうことか class Test { public readonly Action func1, func2; public Test() { int x; func1 = () => { Console.WriteLine(x); }; func2 = () => { MessageBox.Show(x.ToString()); }; } public void func3(){ /*xは見えない*/ } } 「こういうこともできる」というだけに留めておいてくれ 絶対使うな
委譲の変形パターンだな
それ int x; 大丈夫なのか?と思ったら、ラムダ式における変数のスコープって いう新しい規則で保証されてるのか・・・やっぱラムダ式は敵だ。
クロージャはその場限りのコールバックとして使うだけならきちんと理解して使えば全く問題ない
>>298 みたいにローカル変数の寿命が延びるような使い方はあんまりよろしくない
オブジェクトが生存する限り生存するという、インスタンス変数と たいして変わんないものなんだけどなぁ。
スタックがそのまんま残るとでも思ってるんじゃね
クロージャは、俺にとってはあれば便利だけど、なけりゃないで困らない、 ってレベルだなぁ。
スレッド活用しようとすると無ければ困る。
>>259 色々ありがとうございました。原因がわかりましたので仮の修正で一応動き出しました
原因はItem追加をDrawItemで検出していたんですが、この時はBeginUpdateと
EndUpdateの間である為、数値的にはカラムもクライアント領域の大きさも変更されているのに
描画が更新されないことでした。仮の処理ですがタイマー起動してEndUpdate後にカラムを弄ると
水平スクロールバーを消すことが出来ました
まだ、不具合があるから色々煮詰めないと行けないけど何とかなりそうです
研究室の先輩から引き継いだC#のプログラムがあるんですが、当方はQtでC++しか触ったことがありません。 それでこのプログラムを簡単にC++に変換できるのでしょうか? それとも諦めてC#を覚えた方がいいでしょうか?
あきらめた方がいい。
C++/QtからC#/WinForms or WPF・・・ 簡単にはいかないけど プログラムが綺麗に作られてるならクラス設計とかはそのまんま引っ越せるとは思う。
そういえばQt#ってあったな 今回の話とは一切関係ないだろうけど
研究室ならどうせ中身はほとんどベターCだろ GUI周りだけちょっと練習すれば十分
まて、本人がC++の人でソースはC#だ。
実際、C++はアセンブラ扱いだから、C#のほうが楽だよ。
何を言っているんだ
>>306 よかったね
質問と関係ないけど、タイマー使うよりメッセージ投げた方がスッキリするよ
const int LVEX_COLUMNRESIZE = WM_APP + 1; // 独自のメッセージ定義
PostMessage(this.Handle, LVEX_COLUMNRESIZE, 0, 0);
・研究室の先輩から引き継いだC#のプログラム ・当方はQtでC++しか触ったことがない という状況で A.簡単にC++に変換できるのでしょうか? B.それとも諦めてC#を覚えた方がいいでしょうか? という質問に、 C#を覚えた方が楽と薦めてみたんだが・・・どっか勘違いしてるかな?
C++がアセンブラ扱いってのが問題発言だろ。
C++やっててJavaもやったことあるならすんなりいけるけど C++だけだとちょっとはまるかもね。 移植するにしてもC#の知識は必要になるから、そのままC#覚えたほうが早そう。
319 :
デフォルトの名無しさん :2009/11/23(月) 16:39:36
覚えたほうが早いに1票
>>315 WinForm的にはBeginInvokeだろう
クラスの設計がよくわからなくなってきたので助けてください。 ■前提 複数のミニブログ(例えばTwitterとはてなハイク)のタイムラインを一つのリストにまとめて表示する プログラムを作るとします。 基本的な機能は一緒なので、最大公約数的な抽象クラスを作り、画面の方でも抽象クラスで提供 されているプロパティに従って最大公約数的な画面表示を行なっていました。 例) 名前 - メッセージ - 日付 - システム ----------------------------- 太郎 - ほげほげ - 12 days ago in Twitter 次郎 - ふがふが - 30 days ago in HatenaHaiku ■質問 ここで、各ミニブログ特有の機能も画面上に反映させたくなった場合、画面側の方で 例えば if(message is TwitterMessage)... else if (message is HatenaHaikuMessage)みたいに どのサブクラスのインスタンスか一々調べて処理を書くしかないのでしょうか? 例) HatenaHaiku の場合、キーワードも表示されるようにする 名前 - メッセージ - 日付 - システム ----------------------------- 太郎 - ほげほげ - 12 days ago in Twitter 次郎 - [独り言] ふがふが - 30 days ago in HatenaHaiku
制御のモデルを変える。 メッセージに描画させればいい。
固有メッセージ追加とかカスタマイズ用のメソッドとかインターフェースとか そういうのを追加する。 細かいところのやり方はいろいろだけど。
それが一般的な機能なら、クラス側に機能(インターフェイス)を持たせちゃうな。 で。Twitter 用のクラスでは何もしない、と。 特殊な機能なら、UI 側での判定もありじゃない?
>>320 同期処理かつメインスレッドが所有するListViewを処理するのに
わざわざ非同期のBeginInvokeはねえよw
EndUpdateまで待つためにlockかWaitHandleまで必要になるぞ
>>321 Decorator パターンで考える。
Decorate する必要がない時は空の ConcreteDacorator で代用。
>>322 なるほど、各メッセージ自身が自分自身の描画方法を知っている形にするってわけですね。
そういった場合でモデルと画面描画を分離させたい場合は間にもう1クラスぐらいかませるようなやり方で
良いでしょうか?
[データモデル]
MessageModel
+ Name : string
+ Message : string
TwitterMessageModel → MessageModel
+ HashCode : string
HatenaHaikuMessageModel → MessageModel
+ Keyword : string
[画面表示用のコンポーネント]
MessageComponent
+ Draw() : bool
TwitterMessageComponent → MessageComponent
- model : TwitterMessageComponent
HatenaHaikuComponent → MessageComponent
- model : HatenaHaikuMessageComponent
そういうクラスを考えるのは楽しいんだけどさ。 あんまり役に立たないよね。
329 :
307 :2009/11/23(月) 17:13:43
とりあえずC#をボチボチ勉強します。
>>326 すまん、空の ConcreteDacorator で代用する必要はないか。
ConcreteComponent をそのまま使えばいいんだ。
・・・ってもう解決しそうだから、どうでもいいか
>>323 各システム固有の何かをする、ってメソッドを追加する、みたいな解釈でしょうか?
なるほど・・・
>>324 抽象クラスにメソッドを持たせるということですよね。
この場合、特殊な機能が少ないうちは良さそうなんですが、
増えていくと抽象クラスが煩雑になりそうで・・・
#そもそもそんなに特殊機能がばらばらなのを抽象化して良いのか?って問題もあるけど。
>>326 Decoratorパターンを良く理解していないので調べてみます。
デザインパターンちゃんと勉強しないといけないなぁ・・・
interface IExtraMessageField { public ExtraMessageField Type { get; } // {Name,Message,Date,System} public string Message { get; } } class TwitterMessage{ } class HatenaHaikuMessage: IExtraMessageField { public ExtraMessageField { get{ return ExtraMessageField.Message; } } public string Message { get{ return ''[' +Keyword+ ']; } } }
>>328 switch とか if 連打の方がわかりやすかったり工数少なかったりするよなw
初心者程抽象化したがるからなぁ
そこまで拡張する必要性に迫られたことないし
この場合の正しい解は、画面側で"is"使ってインスタンス判定、固有の処理をするだよ。
仕事がありません 誰か下さい
俺の仕事をあげようか 給料は俺がもらっとくけど
うーん、何が正しいんだかよくわからなくなってきました・・・
設計難しいなぁ。
泥臭く書くだけならいくらでもできるんだけど
綺麗に書くとなるとさーっぱりだ・・・
こういう場合に
>>336 みたいに「こういう場合はこれが正しい」って断言出来るようになるには
どんだけ経験つめばいいんでしょうね。
断言したいだけなら、今すぐにもできるだろw
>>336 は馬鹿すぎだろいくらなんでも。
オブジェクト指向言語使ってる意味ないよ。
Twitterがverupして機能増えた・・・なんて時に改修場所がいたるところにちらばるでしょ、それじゃ。
ちゅーことで断言するやつは疑ってかかった方がいいんじゃないかと思う。
ぶっちゃけ、デザパタ使ったコードは非常に読み辛いからやめて欲しい。
>>325 BeginInvokeはマネージドなPostMessageだよ
BeginInvokeが非同期というならPostMessageも非同期になる
問題はEndUpdateが必ず呼ばれるとは限らないことだな 一行追加修正で呼ばないって選択肢もある
巷で手に入るTwitter実装のソース見る限り オブジェクト指向なんてこれっぽっちも考慮していない件 もし仕事じゃないなら、 どう綺麗に設計するかなんかより素早く楽しいものを作れるようにしたほうがいいよ マジで
素人の多いスレだなぁ
仕事だと保守の問題があるからなるべく見やすいほうが好まれるからな 趣味のコードだとひたすら速度を追求したりする
単純に表示とデータをバインドするクラスにやらせりゃいいだけ
初心者みたいにデータを表示側で加工判定とかもうね
設計の基礎中の基礎でしょうが
>>332 あとこれもおかしい
interfaceは主に汎用性のある振る舞いの定義に使う物
採用度の低い(このケースは一つのデータクラスだけ)ものにinterface作ってどうすんの
いったい何に怯えて定義したのさ?
あ、ちなみに俺、
>>346 じゃないよ
ただの無職だよ(∀`*ゞ)テヘッ
でも、問題無ければマジックナンバーだって使うのが玄人だよな
>>350 その流れでいくと
「本物のプログラマ」文章に行きつくw
ttp://www.genpaku.org/realprogrammerj.html >本物のプログラマは、GOTO を恐れずに使う。
>本物のプログラマは、5ページにわたる長い DO ループを混乱せずに書ける。
>本物のプログラマは 算術 IF ステートメントを好む -- こうするとコードがもっと面白くなる。
>本物のプログラマは自己拡張コードを書く。とりわけ、タイトなループの途中で 20 ナノセカンドを節約できる場合には。
>本物のプログラマにコメントは不要である -- コードは一目瞭然なのだ。
>FORTRAN では IF 文や REPEAT...UNTIL、や CASE 文が構造化されていないので、本物のプログラマはこれらを使わないことを気に病む必要はない。そのうえ、これらの文は GOTO 指定で必要に応じて代替可能である。
352 :
デフォルトの名無しさん :2009/11/23(月) 17:58:05
各事業所に配布する、帳票印刷プログラムを作成しているのですが、 Fontサイズについて、 13.5F、10F、9.5F、8.5F のパターンのflort値を指定しています。 そこでお聞きしたいのですが、 (1) パソコンによっては13.5Fなどのフォントサイズがないかもしれないですが、 できるだけ整数のフォントサイズを指定した方がいいのでしょうか。 皆さんは一般的に、 フォントサイズをどの範囲で選択されているのでしょうか。 (2) 極端なケースになりますが、 例えば13.1Fとか、7.3Fなどの端数を含めたフォントサイズの指定をすると どういう扱いになるのでしょうか。 よろしくお願いします。
>>349 表示とデータをバインドするクラスで
switchしたりif ... is ... するわけですね、わかります。
>自己拡張コードを書く 今だとOSたんが許してくれません>< ところで、(意味を理解はしたんだけど)自己拡張って何だ? self extending code か?と思って原文みたら >self-modifying code 訳が違うよなぁ
本物って言葉にオナニー以外の意味がないことがよく分かる名文
>>353 えぇそうです
良くできました(´д`)エエコヤノ- ←これかわいくね?
表示フォーマットにあわせてそのクラスを作りそれにデータクラスをマップします
プログラム出来ても設計出来ない人に多いのが表示フォーマット=実データフォーマットとするパターン
もう目も当てられません
(C#なら属性使ってリフレクションでやっちまう方法もあるけどな(∀`*ゞ)テヘッ)
>>351 後半の本物のプログラマは仕様書を書かないってのもおもしろいな
> 本物のプログラマは仕様書を書かない。ユーザーはどんなプログラムも手に入る身の上を幸運と思い、ありがたくおしいただくべきである。
だといいなあ
>>356 それって今流行り(?)のM-V-VMってやつじゃね??
MVVMはWPFに特化した構造だよ
WPFがMVVMに特化のマチガイじゃねーの?
違うよ MVVMはWPFにあわせてMSの社員が考案したもの コマンドバインディングっていうWPFの概念を活用する
MVCとたいして違わんしな
WPFのバインディングが強力だからというので ViewをViewModelになんでもかんでもバインドするんだっけ
MVVMは書かなきゃいけないことがたくさんになってわけわからん うまくモデル化出来ないことも結構多くて不完全な気がする
掲示板プログラムなんかで 投稿に失敗した場合、戻り値で失敗を知らせるのと 例外で失敗を知らせるのはどちらが正しい処理なんでしょうか。 失敗にバリエーションがある場合は例外の方がスマートかなと思ったんですが 使っていいのか今一わかりません。
掲示板プログラムだったら成功したにせよ失敗したにせよいろんな情報が返ってくるだろうから 結果をまとめたオブジェクトを返すのがいいんじゃないか
367 :
デフォルトの名無しさん :2009/11/23(月) 19:56:51
>>352 ですが、どなたか、アドバイスをよろしくお願いします…
(>_<)。
(M) V_V (M) ヽ(・ω・)ノ フォッフォッフォッ / / ノ ̄ゝ
エラー起こした呼び出し元が直接エラー処理するならエラー返した方が良いが 更に上とかその上で纏めてなら例外だな
>>367 それはC#じゃなくてWindowsの仕様とか各種プリンタのドライバに関する話だからスレチ気味だと思う
まずOSごとに挙動が違うし(ここで聞いてるって事は対象はWindowsだろうけど)
後者は多分、内部的には切り上げなり切り捨てなりやってるとは思うけど
ドライバに端数ありでもノーチェックで投げてるのか、プログラム側でPCにあるサイズに対応させてドライバに投げてるのかはどうなんだろう
おそらくあんまりそういうことする人居ないから自分で試してみる方が早いかもしれん
373 :
372 :2009/11/23(月) 20:25:38
374 :
デフォルトの名無しさん :2009/11/23(月) 20:33:24
>>373 なるほど…いいリンクありがとうです。
俺も勉強になりました。
ところで、エクセルで8.25とかのフォントが指定できないのは、
ただ、エクセルがフォントを限定しているだけだからかな。
Cをある程度かじって、本当につい最近 C#(vc2008)をはじめました。 初心者サイトを見ながら System.Console.Write みたいなのでいじっている程度です。 そこで、突然こういった行が出て来ました。 System.Console.Write(2.ToString().PadLeft(10, '.')); お聞きしたいのは 2.ToString().PadLeft(10, '.') の考え方についてです。 いろいろと調べてみると、System.Console.Write を Systemという名前空間のConsoleというクラスのWriteというメソッドに ドット演算子でアクセス(Cの構造体みたいな?)しているような感覚で 考えることができそうです。 その流れでいくと、2.ToString().PadLeft(10, '.') を理解することができません。 int型整数 2 のToStringメソッドの戻り値のPadLeftメソッドの戻り値? intのメソッド?メソッドのメソッド? どのように捉えたらいいのか何卒お教えください。
それぞれのメソッドの返り値の型を見れば分かる
string s = 2.ToString(); string ss = s.PadLeft(10, '.'); Console.WriteLine(ss);
C言語を知ってるみたいなので細かいことは省略するが メソッドは戻り値があるよな? 2.ToStringも戻り値がある。この場合はString型を戻り値にしてる。 "2"が返ってくるわけだ。 で、string型にもメソッドがあり、 PadLeftというメソッドがある。 これは文字を右寄せにするというメソッドだ。もちろん戻り値はString型
皆様、迅速なお答えありがとうございます。 重ね重ねで申し訳ありませんが、 int型の整数(この場合は 2 )自体がメソッドをもっていて、 クラス(?) 2 のメソッドToString の戻り値が string型(例えば)"s"で、 string型の文字列(この場合は例えば"s")自体がメソッドをもっていて、 クラス(?) ”s”のメソッドPadLeftの戻り値がstring型例えば(”ss”)で、 それをConsole.Writeしてその戻り値が出力された・・・といった感じに 捉えてよろしいでしょうか?(冗長表現で申し訳ありません) int や stringといった「型」がメソッドを持つというのが感覚的に捉えづらいのですが、 これはもうオブジェクト指向(?)プログラミングの本質を理解しない現状では 当然のことなのでしょうか…?
型にその型自身に対する処理を含める考え方はオブジェクト指向の出発点だ
C#ではint型もstring型みたいな基本的な型でもメソッドを持つ。 string型はそのままじゃintにならない string s="2345"; int i; i=s; //エラー これは i=int.Parse(S); でok。 int自体がメソッドをもつってのはCから来たら新鮮(?)かもね
>>379 難しいかな?
「型がメソッドを持つ」なんて言ったって、
要は構造体へのポインタを引数にとってその構造体をいじる関数ってだけだよ。
ただ第一引数の「構造体へのポインタ」がシンタックスシュガーで省略できるようになってるだけ。
なーんにも難しくない。
int の実態は Int32 string も実態は String
ありがとうございました。 かなりのことが理解できるようになり、今日一日唸っていたことが解決できました。 本当にありがとうございました!
例えば、FormにTextBoxをはりつけて そのTextBoxのなかになにかしらのコードを書くことによって 実行時にForm上のコントロールをいじりたい場合、どうやったらいいんでしょうか? 2008Expressを使ってます
>>385 できないと思った方がいい。
CodeDOM使って実行時にコードをコンパイルすればできなくはないけど
一度読み込んだコードは解放できないので
>>385 のような使い方をするとメモリリークする。
C#でなくてよければIronPythonやIronRubyを組み込むのが簡単。
VisualStudioのC#の新規作成で Windows フォーム アプリケーションを新規作成したとき デフォルトの名前空間のusingが using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; これだけなんだけど、System.IOもよく使うから いちいち新規作成するたびにusing System.IOって書くより最初から using System.IOが入ってるようにしたいんだ。 どうやればいい?
>>388 そんな余計なことは考えるな。
お前にとってはそうかもしれんが、世の中全体ではSystem.IOを使わないソースコードのほうが大半だ。
>>387 無理なんですか、残念
IronPython、Expressでいけます?
>>388 プロジェクトテンプレートを弄るしかないような気がする。
作ったことないけど
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\VCSExpress\ProjectTemplates\1041
の中に
WindowsApplication.zip
ってのがあって、
それ解凍して出てくる Program.cs だの form1.cs ってのの頭にいれるしかないのかなぁ。
デフォルトの壊したくなければユーザテンプレートのフォルダにコピーしてから編集だと思う。
たぶん。
IronPythonは.NETさえ入っていればVisualStudio無くてもいい。
>>389 System.IOを使わないと
ファイルの保存とかができないorz
もっと簡単にファイルに保存とかできる?
アフォ言うやつがアフォ System.IO なんか普通使わない
>>389 System.IOそんなに使わないだろってのには同意するけど
使ってないやつはIDEでまとめて除去できるんで、好きなようにやりゃいいと思う。
過剰反応しすぎじゃね。何か嫌なことでもあって機嫌悪いのか?
>>394 おお、めっちゃわかりやすいz!
ありがとう!すげー、こんな便利な機能あったのか
そんなことよりも、usingディレクティブをわざわざ自分で書くことなんてないと思うんだが
まぁないな。使い初めにでてこないのが「ん?」ってのが いやだといえばいやなんだがとりあえずすぐに Ctrl + . で 終わりだな。
>>400-401 Ctrl + . で勝手に追加されるんですか??
やっても上手くいかない・・・どうやるんでしょう??
>>402 StreamReaderって打ってからおもむろに「Ctrl+.」
難点はStreamReader部分だけはIntellisenseが効かないから
そのパッケージの良く使うクラス名しっかり覚えとかなきゃいけない点。
>>402 スマートタグのショートカットだよ。
using されてなくて見つからないクラス名書いたらその部分の
右下あたりになんか四角いの出るだろ。
そのときに using かフルネームか選んで完了。
スマートタグ自体はインターフェイスの実装とか名前の変更とか
色々他にもあるけども。
406 :
デフォルトの名無しさん :2009/11/23(月) 23:46:00
入門書にならって、自分なりにclassとか書いてるんですが、どこまで細分化するか悩んでいます。 例えば、銀行口座クラス class Bank { public string Name; //銀行名 public string Number; //口座番号(数学的計算対象にならないのでstringでok?) } というclassを作るとすると、銀行口座は最低でも店番、普通/当座、口座番号の3つに細分化出来るので class Account { public string StoreNumbar; //店番 public int Type; //0と1で区別 public string Number; //口座番号 } というclassを作ったほうがよいのでしょうか?
System.Messaging.dll への参照を追加する必要があります。 とヘルプに書いてるんですが これって参照設定を右クリックして参照の追加でSystem.Messagingを追加するという意味なんでしょうか? dllの追加、参照の追加、usingの違いがよくわかりません
>>406 どう使うかによるんじゃないかな。
銀行名と口座番号だけ必要なら上でいいし、
銀行コード/店舗コードや口座の種類で処理わけるんだったら下だろうし。
必要な機能だけモデルに盛り込めばいいと思うよ。
>>406 口座番号は string で良いけど、数字以外が設定された場合の処理を書いといたほうがいいよ。
あと普通/当座の区分け用の public int Type は enum にした方がよいかと。
410 :
406 :2009/11/24(火) 00:07:22
ありがとうございます。
>>408 確かに、必要に応じて必要な機能のみ実装しないと、どんなモデルも果てしなく巨大化しますよね。
事前にしっかり設計を考えるようにします。
>>409 enumは初めて知りましたorz
機能を知らないと余計な迷いや曖昧さが残ってしまいますね。
まず機能を把握出来るよう頑張ります。
>>406 まあ、何が聞きたいのかよくわからないけど、とりあえず銀行クラスが口座番号の
情報を持つのはかなり奇妙に見える。
ひょっとしてこういうことが聞きたいのかな?
銀行口座を表すクラスAccountがあるとして、その中に全ての情報を平坦に並べるか、
それとも契約者氏名や口座番号といった口座情報を表すAccountInfoクラスと、
取引の履歴を表すTradeHistoryクラスを用意して、Accountクラスはそれらのインスタンスの
フィールドを持つようにすべきか、みたいなことを聞きたいんだろうか。
412 :
406 :2009/11/24(火) 00:16:17
>>411 おっしゃるとおりです。
ぼんやりと考えたまま書き込んでしまいました。
>>407 > これって参照設定を右クリックして参照の追加でSystem.Messagingを追加するという意味なんでしょうか?
うん
> dllの追加、参照の追加、usingの違いがよくわかりません
dllの追加って表現はMSDNにあったっけ?
dllへの参照を追加って感じの文言じゃない?
ソースファイル冒頭にずらずら書くusingは
コードでその名前空間を書くのは省略していきなりクラス名書きますから
コンパイラさんは適当に補ってくださいねって意味
dllとは関係ない
コンソールアプリケーションを新規作成して実行したらメモリが20MBもあるんですが、こっからどうやって削るんですか?
あきらめろ。
>>414 [DllImport("Kernel32")]
static extern bool SetProcessWorkingSetSize(IntPtr handle, uint min, uint max);
static void Main(string[] args) {
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, 0xFFFFFFFFU, 0xFFFFFFFFU);
Console.ReadKey();
}
>>387 >一度読み込んだコードは解放できないので
んあこたあない
またそういうことをw
>>416 コンパイルできました。
20MBから2MBに減りました
コンソールアプリのテンプレートを書き換えて使うことにします。ありがとうございました。
staticなクラス作っちゃうと object型を継承してるから インスタンス作成できず無意味なToString()が残っちゃうね。 あるのに使えないって気持ち悪いね。変な仕様にするなよなー。
423 :
デフォルトの名無しさん :2009/11/24(火) 03:35:46
バイナリファイルを読み込んで中身を検索したいです。 filestreamからバイト配列に読み込んで、 Array.IndexOfとやったのですが、1バイトしか 検索出来ないみたいで詰まってます。 1バイトずつ確認するしか方法は無いのでしょうか。 バイナリエディタのように、たとえば16進数で[00 4B 16]が あるかを確認したいです。
パソコンは魔法の箱じゃないよ
どうみてもパソコンは魔法の箱です。 こんな小さな箱にすげー膨大な情報が入ってて、無線で遠距離通信が可能で 超高速で計算ができるなんてどうみても魔法。
黙ってろよ魔法使い
まじょっこメグ!
>>432 0x00 で検索、あったら次が 0x4B か確認、あったら次が 0x16 か確認ってことかなぁ。
部分配列を検索するメソッドはたぶん無いから自分でメソッド作るしかなさそう。
普通に一個づつ検索する他にBM法とかKMP法とかのアルゴリズムがあるから
がんばって!
ショートパスだな
430 :
デフォルトの名無しさん :2009/11/24(火) 14:49:56
>>428 >BM法とかKMP法
ありがとうございます!知りませんでした。
理解するまで時間がかかりそうですが、頑張ってみます!
こんなエラーが出ました。これは一体、どういうことなのでしょうか?(´・ω・`) エラー 1 ResX ファイル 行 171、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません: GDI+ で汎用エラーが発生しました。 が無効です。 エラー 2 TargetInvocationException: 行 171、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません: GDI+ で汎用エラーが発生しました。 場所 System.Resources.ResXResourceReader.ParseXml(XmlTextReader reader) 場所 System.Resources.ResXResourceReader.EnsureResData() 場所 System.Resources.ResXResourceReader.GetEnumerator() 場所 Microsoft.Build.Tasks.ProcessResourceFiles.ReadResources(IResourceReader reader, String fileName) 場所 Microsoft.Build.Tasks.ProcessResourceFiles.ReadResources(String filename, Boolean shouldUseSourcePath) 場所 Microsoft.Build.Tasks.ProcessResourceFiles.ProcessFile(String inFile, String outFile) XmlException: 行 171、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません: GDI+ で汎用エラーが発生しました。 行 171、位置 5 です。
なにやってる最中のエラーかぐらい書けよ。 見た感じコンパイル中にリソースのファイルが ぶっ壊れてて続行できなかったといった感じだが。
ひょっとしてプログラムの実行中ではなく、デザイナの画面にそのメッセージが出てるのか? そのプログラムはXMLを使ってる?
Visual StudioでC#つくるとき 名前ってのと ソリューションディレクトリを作成ってあるけど ソリューションディレクトリってただプロジェクトのファイルの階層がちょっと変わるだけ? 作ったプログラム自体には何も影響なし?
うん
436 :
431 :2009/11/24(火) 19:20:01
すまん。 ビルドしている時に出るの。 リソースの中にxml使っているけど、もらい物だから分からない。 どうしたら良いんだろう?(´・ω・`)
437 :
デフォルトの名無しさん :2009/11/24(火) 19:23:29
まずそのもらい物を理解してから 質問したらどうだろうか
理解するくらいなら自分で作り直した方が早い
やった!クラスの継承ができた! オーバーライドとかとかめんどくさいなぁ。 同じ名前なのに全く別の処理すんな!まぎらわしいだろ!
面白くない
int x=132*58; printf("%d\n", x);
>>434 初心者にとってはアプリはプロジェクト一個に納まるものという認識。
しかし熟練してくると一つのアプリでもDLLとEXEに分けるようになる。(例えば単体テストのため)
つまり、アプリ≠プロジェクト。
そうすると、関連するプロジェクトを纏めて管理できる機能が非常に有り難く感じてくる。
C++で作ったDLLをC#でコールできるのでしょうか?
優先度順 ・関数をC向けにエクスポートしてC#からDllImport ・C++/CLI ・COM
>>442 テストプロジェクトなんかは良く作るよな
ラムダ式ってなんですか?派閥メンのことですか?
ぐぐれよ
こういうのでboolより小さいのってあります? public struct abc { public bool name; }
ない 勘違いしてそうだけどboolは1バイトだからbyteと同じ大きさ
>>449 それはしりませんでした
(*- -)(*_ _)
boolは4バイトじゃないの?
sizeof(bool)してみればわかるだろ
調べてかけよ。1byteだよ。 それに絡んだすっごい雑談だがそのせいで bool は blittable ではない(マーシャリング後は 4 byte)。
boolはboolだから実際のデータ表現に依存したコードは書くなってことんなんだろ MSDN見てもSystem.Booleanのサイズはなかなか載ってない
まあでもサイズが大きいか小さいかぐらいは気にしたくはなるわなぁ。
GetType()ってめちゃくちゃ重くないですか
こういう重いメソッドってデバッグ用と割り切って使わないとだめですよね? なんでソフトが遅いのか調べるのに苦労するんですが、こういう本番では使わない方がいいメソッドって区別する方法ないんですか?
そのメソッドが遅いか遅くないかというのは相対的なものだからそういう考え方は意味がない。 たとえば,GetTypeはたいていリフレクションに使われるけど, 後に続くリフレクションの処理の方がずっと重いと考えられるからGetType自体のコストはほとんど無視できる。
あーでもたとえば「リフレクションは重い処理だ」ってのはどういうとこ調べたらわかるのか、 とかは知りたいわな。
言われてみると例外発生は高コストだ、とかも一体どこで覚えたのか忘れちゃったぜ
リフレクションは重い処理だといってもそんなに頻繁に使わなければ問題ない。 普通に作って遅い所を直すのが正解。
バインディングなんかは陰の方でリフレクション大活躍だしな
何が高コストなのかおさえとくのは必要だと思うけどね。 実装のしやすさとコストを天秤にかけらんないじゃんね。
全メソッドを抜き出して、処理時間を計測して、一覧表にするソフトを作れ
**こういう本番では使わない方がいいメソッドって区別する方法ないんですか?** わかんないならわかんないっていえばいいのに。 明後日の方向いた回答しか出来ないんだったら黙ってればいいのに。 なんでリフレクションは必要ですみたいな話になってんのよ。
>>465 >わかんないならわかんないっていえばいいのに。
>明後日の方向いた回答しか出来ないんだったら黙ってればいいのに。
わかんないなら黙ってろよwwwww
VTune がもう少し安かったらいいんだがなぁ…
他のクラスから参照渡ししたいのですがthisに入れててしまうと参照渡しにならないようです。 どのように書けば良いのでしょうか?。 public FormName( ref int count) { InitializeComponent(); this.count= count; }
FxCopあたりもパフォーマンス警告出してくれるよね ところで普通のプログラム書いてる時ってそんなにリフレクション使うか??
471 :
デフォルトの名無しさん :2009/11/24(火) 23:41:38
事務処理システムを作成しています。 大量の項目のテキストデータを読み込む処理なのですが、項目数が420程あり、accessではテストデータの作成ができません。 皆さんは、この項目数のテキスト型のテストデータを作成されるとき、どのように編集されていますか?
>>489 int の参照をクラス内に保持したいってことなんだろうけど
それは出来無い相談だぜ
>>471 CSVみたいなのだったら perl だの ruby だのでテストデータを生成するプログラム書くことが多いなぁ。
>>472 やはりそうですか、参照元に通知したい事があったので試みたのですが上手く動きませんでした。
他の手を考えてみようと思います。
>>474 int なんかじゃなくイベントで通知したらいいんじゃないかと思います。
>>470 まともに設計してるなら使わんよ
開発ツールなら使いまくり
enum 評価 {良い, 普通, 悪い} 評価 このスレ評価 = 評価.良い;
>>470 誰かも言ってるがバインド処理系にはよく使う
使わないと100ステップ〜数万ステップ以上かかないといけなくなる
10万ステップいかない小さなプログラムを作ったり、分業でちまちま作ってる人達には無縁の代物かもね
>>471 仕事にけちをつけるつもりはないが、420項目が並列に並んでいることはまずありえないので、
まずはデータベースを正規化することから考える。
趣味で書いてる時はリフレクション多用して遊ぶけど、仕事でやってる時は滅多に使わないな。
リフレクションってアセンブリがどうこうするやつだっけ 知らんけど
値型 メソッドにぶちこんでも変わらないやつ 参照型 メソッドにつっこむとかわっちゃうやつ でおk? func(int x){ x=3; } ってやっても、funcにint変数つっこんでも3にならないけど func(class X){ X.abc=4; } ってやったら4にかわっちゃう みたいな?
そういういい加減な覚え方をすると嵌まります C# 値型 参照型 でググって出てきたのを片っぱしから読んできなさい
無料でC#できるっつーから無料のExpressをなんとなくDLしたけど 基本的なことはだいたい勉強した。 配列の宣言のほうほうとかif文とかdo〜whileを使うときはwhileのうしろに;をつけるとか。 次なにやればいい?
やりたいことやれよw ゲームでもツールでも、何かしら作りたいものがあるんじゃないの?
入門者向けの手ごろな課題…GUIの勉強でラーメンタイマーとか?
class A{ public readonly int x=20; } class B{ public const int y=20; } この場合、readonlyとconstの違いはインスタンスを作成しなくても使えるかどうかってだけですか?
489 :
デフォルトの名無しさん :2009/11/25(水) 06:46:08
>>479 420項目ほどを打ち出す単票の帳票を作成するプログラムを作成していているのですが、
その帳票を後で再印刷するかもしれないんです。
なので、420項目のデータを考えています。
Perlなどの技術を知らないので、Excelしかないでしょうか…。
accessは項目数が超過してしまうと思います。
>>485 まあ、作る前にクラスを勉強するべきだな
デリゲートってどういう時によく使うんですか? デリゲートなんかわざわざ作らないで呼び出される側のコードを書き換えた方が早いと思うんですが、 一人でソフト作ってる時にデリゲート使う事ってありえなくないですか?
お前はそれでいいよ。
2つのクラスをまたいでデリゲートと使うにはどう書けばいいんですか? DTでアクセシビリティに一貫性がありませんというエラーが出てしまいます。 class delegateTest { delegate void call(); public void DT( call test ) { test(); } } class Program { static void Main(string[] args) { delegateTest b = new delegateTest(); b.DT(A); } void A(){} }
>>493 とりあえずそのソースでは、classやdelegateがpublicじゃないため
>>493 デリゲートは型だからクラスの外で宣言していい
publicで呼び出せました。ありがとうございます で、これはどう使えばいいんですか?
デリゲートって関数ポインタか
>>489 そんな設計ありえねーから頭冷やしてよく考え直せ。
>>471 ID, 項目ID, 値
っていうテーブルを作って420行にすればいいじゃん
>>489 420項目を単票に印刷するとしても単純に420項目並べないでしょ?
見やすい様にグループ分けするでしょ?
そうやってテーブルも作ればいいじゃない
配列ってint a[1000];とかやったら1000まで確保されちゃうよね。 そうじゃなくて都合上 a[0]="aaa"; a[1]="bbb"; a[2]="ccc"; a[4]="ddd"; a[8]="eee"; //a[5]〜a[7]は存在しない みたいにしたいんだが 2の累乗しかとれないようにするにはどうやればいい?
Dictionaryで
>>502 a[0]="aaa";
a[1]="bbb";
a[2]="ccc";
a[3]="ddd";
a[4]="eee";
で適当にインデックス変換すればいいだろ
HashTableで
厳密に制限するなら、クラス作ってインデクサで判断するべきだよな 内部管理はディクショナリが適当
すみません質問です 匿名関数を使用した場合、実装されているスコープのデータにアクセスできますが ThreadStart等に匿名関数を指定して別スレッドで実行した場合、呼び出し元の関数が抜けても スレッド内からは安全に呼び出し元のスコープ内の変数にアクセスできますか?
うん
デリゲートって Aさんが大雑把なクラスの設計をして Bさんがそのクラスの細かい動作を使うときに役に立つのか。 たった一人で全部作る場合いらないのかなぁ
なんでやねん
えっ?
デリゲートの使い方の一例だが、ほんの少しだけ違う処理がある時 サブクラスを数揃える手もあるが、デリゲートを使った方がスマートに設計できる時もある 道具の機能は使う人の能力次第だわ
取り敢えずはList<T>.Exists(Predicate<T>)やRegex.Replace(String,String,MatchEvaluator) 辺りでイベント以外のデリゲートの使い方を実感しておくと 後々「デリゲート使えば便利じゃね?」的な発想ができるようになると思う
>>516 たしかにその人の能力しだいだが
能力のない人でも
道具の機能を有用に使える方法を集めたデザインパターンみたいのがもっとあればいいな
519 :
509 :2009/11/25(水) 17:12:58
ありがとう! これで安心して使えます
C#ですごい発見した switch 〜case使う必要ない。 switch (a){ case 0:「あさです」と表示 壊れる case 1:「ひるです」と表示 壊れる case 2:「よるです」と表示 壊れる } これやるより readonly string[] a={"あさです","ひるです","よるです"}; a[x]を表示 このほうが簡潔にできる。
>>520 どう考えても最初から後者を考えるのだが( ・ω・)y─┛〜〜
???何いってんだ??? enumいらないって言ってたやつと同一人物か??
>>520 >>216 と同じ空気を感じるwww
壊れるって何かと思ったらbreakのことか。
まあその例ではそれでいいんじゃね?
>>520 そうだね。そういう場合は switch - case 使わなくていいね。
そもそも012ってどうなんだ
たぶん教科書みたいなのの例題がそうなってるんだろ。
意外とウルフラムの作者かも知れん!
enumの存在価値を教えれ。 enum 時間{ 朝, 昼, 夜} Now=時間.朝とかやるより abstract class 時間{ } class 朝 : 時間{ } class 昼 : 時間{ } class 夜 : 時間{ } 時間 Now=new 朝(); ってやったほうがenum使うより細かい制御できね?
>>528 細かい制御する必要ないときに enum 使うんだよ。
実際 Java とかで enum なかったころは似たようなことしてた。
それに
>>528 のケースだと、一々インスタンス作ることになって無駄だよね。
以下が定石。
public class 時間 {
private 時間() {}
public static readonly 時間 朝 = new 時間();
public static readonly 時間 昼 = new 時間();
public static readonly 時間 夜 = new 時間();
}
時間 Now = 時間.朝;
>>528 多分
>>216 と同一人物なんだろうけど・・・
君の場合は四の五の言わずに一度通しでプログラム書いてみた方がいいと思うよ。
煽りでもなんでもなく。その方が教科書に書いてあることも実感をともなって理解出来ると思う。
存在価値がわからないなら使わなきゃいいじゃない。 他の方法で実現出来るならそれで実現すればいい。
より細かい制御が出来る方だけでよいというなら foreachも不要(直接IEnumerator操作) クラスの継承もデリゲートも不要(インターフェイス)
そもそも制御構造とかいらなくね? GOTOさえあればより細かい制御ができてなんでもできるよね。 ってことですね!
>>532 真面目な話、クラスの継承不要説ってたまに出るよね。
インターフェースのみ存在してて、実装の継承は委譲で賄えってやつ。
どっかの言語がそんな風だった記憶がある。
>>528 >>222 ちなみに細かい制御が必要な時すら enum と switch 使うのは悪い使い方。
>>529 おー その方法がいちいちインスタンス作らなくてよさそうだ。なんて素晴らしい方法だ。
もうenumつかわんでその方法使うわ。
そしてswichで判定出来ないと憤怒して列挙型を使う
>>536 であった
>>528 細かい制御が必要ならそうするけど
普段はそんな制御要らん
スーパーに買い物に行くのに自家用ジェット使うかお前は?
例えが意味不明w
用途を考えろって事でしょ。
541 :
デフォルトの名無しさん :2009/11/25(水) 18:11:24
用途を適切に判断するって実は物凄く高度なんだぞ
自家用ジェットは制御しづらいだろー 普通に歩くのは遅いけど細かい動作が可能 自家用ジェットは早いけど細かい制御が不可能 そうか!enumは自家用ジェットか。
せめてローラースルーとセグウェイくらいにしとけw
>>542 飛行許可とらないと違法だから気をつけろよ
ジェネリックのときに T を使うことが一般的ですが、この”T”は何の略ですか?
Type だと思うよ
>>543 ローラースルーって何ぞやと思ってぐぐったら、もの自体は見覚えあった
WebClientクラスとWebRequest/WebResponseクラスの使い分けがよくわかりません。 何でもかんでもWebRequestじゃまずいんでしょうか?
別に構わない ちょっとWebClientの方が細かいことできない分簡単ってだけ
ジェネリックなコレクションクラスを定義しようとしたところ、 インターフェイス未定義エラーがでました。しかし、すでに同じ名前のメソッドを定義しており、 修正の仕方が分かりません。やり方をご存知の方、よろしくお願いします。 public class ToolStripRadioGroup<T> : IEnumerable<T> where T : ToolStripMenuItem { List<T> list; public void Add(T item) { list.Add(item); } public IEnumerator<T> GetEnumerator() { foreach (var l in list) { yield return l; } } } エラー CS0738: 'ToolStripRadioGroup<T>' はインターフェイス メンバ 'System.Collections.IEnumerable.GetEnumerator()' を実装しません。 'ToolStripRadioGroup<T>.GetEnumerator()' は、一致する 'System.Collections.IEnumerator' の戻り値の型を 持たないため、'System.Collections.IEnumerable.GetEnumerator()' を実装できません。
T l in list
>>553 そういう問題じゃねーよ馬鹿。
低脳は引っ込んでろ。
IEnumerable<T>に非ジェネリック版のSystem.Collections.IEnumeratorを含んでいて それを実装する必要がある。 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); }
あることをしたい場合 クラス設計が複数考えられる場合 どんなクラス設計にすればいいのかな?
好きにしろよ。
>>557 エスパーを期待しすぎだwwww
保守性が高くて速度性能が良くてメモリ効率が良いクラス設計にすればいいんじゃね?
よく アップデートを確認する とか、自動アップデートがついてるソフトがありますが あれはどうやって実装してるんですか? ちょっと考えてみたのが Updata.txtというファイルと アップデートするファイルをサーバー上に置いておいて Updata.txtにアクセス Upload.txtにはバージョンとダウンロードするファイルを記載 もし、バージョンが今より新しければアップデートするファイルをダウンロード 今あるものを削除して置き換え という方法なのですが 起動してる状態で削除できないし みなさんはどういった方法で自動アップデートを実装していますか?
>>557 設計の善し悪しを測る客観的で一般的な評価基準はたぶん無い。
色々な本やサイトで人それぞれが色々なこと言ってるから
そういうの拾い集めて自分なりの考えもつしかないんじゃないかねぇ。
>>559 で言ってるように
実際に全部の方法試してメンテしやすさだの性能だので評価するのもいいかもね。
冗談でもなんでもなく、でかいプロジェクト作る前にはプロトタイピングだの
パイロット版だのでよく行われる行為ではある。
>>560 Update用の小さなプログラムを別に用意しておいて、
アップデート可能な状態だったらそっちを起動、自身は終了って流れにする。
C#だと構造体つかうよりクラス定義するのが普通なんでしょうか?
そりゃそうだ
そうですか。じゃあそうします。
C++でも構造体なんてつかわんよ
構造体を使わないってのは、関数の途中でリターンしないって言うのと同種のものを感じる
>既に表示されているフォームをモーダル ダイアログ ボックスとして表示できません。 >Show を呼び出す前に、フォームの Visible プロパティを false にしてください。 と怒られるのですが同じフォームを2つ以上表示できないのでしょうか?
プロパティで受け渡しするようなデータ主体の型なら構造体の方が 余計なこと考えなくていいし、フールプルールだしねえ
・・・フールプルール・・・?
>>568 一度に1個しか表示しないからモーダルダイアログっていうんだ。
複数同時に表示したモードレスダイアログじゃねぇか。絶対おかしいだろ。
>>572 −573
new Form().Showとしてありますし同じ系統のほかのフォームは普通に開けるのです。
>>570 犬が尾を振る ワンダフル・・・
ごめんfool proofね
576 :
574 :2009/11/25(水) 22:36:21
あ、大歩危かましてました お騒がせしました
iniファイルから情報を読み込ませたいんだけど、Win32APIを使わないとできないの?
>>577 素直にSettingsをつかっとけ
プロバイダも実装すれば好きな場所に初期化ファイルを配置できる
>>577 普通にテキストファイルとして読めばいいんだけど、API 使った方が楽。
581 :
デフォルトの名無しさん :2009/11/25(水) 22:47:03
>>580 言って無いけど、そういう意味だと解釈するのが当然。
当然ではないわな。
stringをintに変換する際って try〜catchでチェックするのと tryParseでチェックするのとどっちがいい?
外部のアプリのiniを読んだりする事も当然ある
>>583 TryParse
絶対に失敗しない確信があるならParseでもいいけどそれなら例外をキャッチしないようにするべき
もしくは上の方でまとめてキャッチしたい場合
visualstudio2008使ってます。 ユーザーコントロールのdll作って、 他のプロジェクトでコントロール貼ってデバッグしたら、 ソースコードが丸見えになるんだけど、MS社製のコントロールみたいに 中身完全防護することできないのかな?
pdbファイルを消す
無理。
>>588 ありがとう。助かったわ。
pdbファイルの意味が分かった。
・デバッグでソースコードが丸見えなのはそもそもソースコードがそこにあるから。 pdbファイルを消せばデバッグでステップインできなくなる。 ・そもそも.NETのアセンブリは中間ファイルなのでいくらでも逆アセンブル・逆コンパイルできる。 .NETの標準ライブラリでも普通にできる(ただしほんとにやったらライセンス違反のはず)。
.NET Frameworkのライブラリはソース公開されてるからライセンス違反もクソもない
>>587 C#だとソース丸見えなのはどうしょうもない
そのために難読化ツールなんて言うものが沢山ある
というか、dllだけコピーして使ってないのか。 2005以降は適当なdllをディレクトリに置いてプロジェクトに追加して、 プロパティグリッドで「ビルド時にbinディレクトリにコピー」の設定ができるのに。
C#プログラムから、他のC#プログラム内の特定のメソッドに引数を与えて実行し、戻り値を得る方法を教えてください。 たとえば、C#プログラムaaa.exe内にあるメソッド「public string method(string1,string2);//2つの文字列を結合するメソッド」を、 aaa.exe /method aaa bbb といった形式で呼び出し、「aaabbb」という戻り値を得たいんです。
別にズレちゃいないだろ。
>>596 アセンブリをロードしてリフレクションで。
cmdを投げ捨てて、PowerShell使うほうがいいと思うのだけど
>>596 そのaaa.exeとやらを参照設定に追加して、method()とやらを普通に呼び出してやればいい。
コマンドラインいらね。
テキストファイルを読み込んでコントロールに値を格納する処理を書いていますが、 次の一文だけでも4つの例外が発生する可能性があります。 (controlObject as NumericUpDown).Value = decimal.Parse(valueString); この場合、4つを個別にcatchしないといけないのでしょうか。 昔Javaを使っていたとき、ExceptionやThrowable等の基本クラスをcatchしてはいけないと習いました。 理由は失念しましたが、想定外の実行時例外までcatchしてしまうからでしょうか。 C#でもExceptionをcatchすべきではないのでしょうか。catchの羅列が鬱陶しくなりますが・・・。
解決したいなら思想書く前に例外書こうよ
まずできる限り例外が出ないようにする as キャストしてんだから null チェックは当然 valueStringのnull/空文字列チェックも事前にしてておかしくない Parseは代わりにTryParseを使う Valueに代入する前にMaximum/Minimumで範囲チェック なんだそもそも例外出る余地ないじゃん
回答ありがとうございます。
>>602 Valueへの代入時にArgumentOutOfRangeException
ParseでArgumentNull、Format、OverFlowの3つを想定していました。
adキャストのnullついては、上位コントロールのControlsから取得するため想定してませんでした。
>>603 値の事前チェックをちゃんとすれば良かったのですね。
.Netにはそもそも検査例外は存在しないし、今回想定してた例外の内容自体も
Javaでは実行時例外であるものばかりですし・・・。
どうも、C#の例外の取り扱いと、「Javaでは検査例外をcatchしなければならない」という事がごっちゃになっていたようです。
なんでVisual Stdioでプログラミングするときは using 〜〜っていう名前空間つかうときに ソリューションエクスプロラーだかにいちいち参照設定追加しなきゃならないんだ 普通にコマンドプロンプトで csc 〜〜ってやってコンパイルしたら参照設定だのいらないのに。不便だなぁ
public GClass[] gC; gC[2] = { new GClass[](0), new GClass[](1) }; クラスの配列を初期化したいのですがコンパイルが通りません
int[] x = {1[],2[],5[]}; ってやるのか?おまいは
public GClass[] gC; gC[2] = { new GClass(0), new GClass(1) }; これが通らないんです。
配列の初期化方法くらい覚えれ int[] x={1,2,5} これはOK int[3] x={1,2,5} これはNG int[] x; x[3]={1,2,5}; これもNG おまいのやってることは int[] x; x[3]={1,2,5} って同じことしてる。
>>609 C#の{ }の表現はAdd()メソッドの省略表現なんだよ。
じゃあ何にAdd()してるんだ? 説明してみろ。
配列もオブジェクトなんだからnewしなきゃいけないんだよう。
すいませんこれも通りません。 public GClass[] gC; gC = { new GClass(0), new GClass(1) };
助けてくださいお願いします。 int[] a; main(){ a={1, 2} } も通らないんです。
本当は int[]x = new int[] {1,2,5}; この書き方が「正しい」 ただいちいちnew書くのはめんどくせーから int[] x = {1,2,5};みたいに 「宣言と同時に限り」このような省略した書き方が可能 ここまでいってもまだわからんねーなら残念ながら手遅れ
ありがとうございます。出来ないことはわかりました。 これを実現するにはどうかけばいいでしょうか
public GClass[] gC; main(){ GClass[] gC = { new GClass(0), new GClass(1) }; this.gC = gC; }
それです!ありがとうございました。!
いやいやいや・・・
C#でゲームつくるとなると SlimDX YaneuraGameSDK DXライブラリ ManagedDirectx XNA などが思い浮かびますが DXライブラリは実行ファイルが肥大化してしまう(コンパイルするだけで1MBを超す) XNAは古いXPやノートPCでは重すぎて使い物にならない ManagedDirectXは既にMicroSoftが放り投げている YaneuraSDKはマルチプラットフォームを重要視しているためOpenGLを使っている&SDK自体にバグが多い(らしい) ということでSlimDXが一番いいのかなーと思ったのですが SlimDXにはなにか欠点などはありますか? とりあえず日本語の文献が少ないということは感じました
>>616 わかりました。宣言と同時じゃない場合は省略しなければ通りました。完璧ですありがとうございました。
public GClass[] gC;
gC = new GClass[] { new GClass(0), new GClass(1) };
このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 と、書いてあったので書き込んでみましたが どこに書けばいいのでしょうか
>>621 PMDエディタがSlimDXを採用したということは
SlimDXが良いということです。
書き方の省略ってある程度慣れてくると楽でいいんだけど 623みたいな無能にとっては本当は何をやってるかわからないまま進んじゃって 逆に混乱の原因になるな。 public GClass[] gC; gC[2] = { new GClass[](0), new GClass[](1) }; こんな書き方何をどう考えてもおかしいし。
>>626 まァ落ちつけよ
納品前でイライラしてるのもわかるが初心者板なんだ
生温かい目で見守ろうじゃないか
>>621 基本的にはユーザーの数、DirectXの移植度(C++が基準だから移植になる)、サポートしてるDirectXのバージョンとなる。
その他のサポートははっきり言って邪魔。
自分で実装すればいい話なので。
オレからすれば、DirectX 9,10ならSlimDX。
DirectX 10以降ならWindows API Code Pack for Microsoft .NET Frameworkだな。
XNAはXBox360をサポートする必要性を感じないので却下。
DirectXするならVC++だよねJK
>>631 勝手にどうぞ
そして板違いなのでお帰りください
>>631 このスレだから敢えて言ってやろう。
その考えは古い、と!
いまどきの女子高生はVC++なのか。。
XNAやってみたけど 普通にC#でやるより、アクションゲームとか作るのに向いてることはなんとなくわかったけど RPGとかはどうなのかね。ボタンとかtimerコントロールをはっつけて プロパティウィンドウでButton1Click(object sender,EnentArgs e)とかなんかやって そういうやつのほうが簡単にできていいね
思ったんですがクラッキング技術ってありますよね? たとえば不特定多数のPCを破壊したいという願望があったとしますよね? そういうときに、たとえばディスクフォーマットするソフトつくって最もらしく別の内容(たとえばインターネットブラウザです)とかいって相手に使わせてしまえばクラッキング技術など必要なしに相手のPC破壊できるんじゃないですかね? それともセキュリティそふとっていうのは使う人がEXEなどを使ってもそういう悪質なものも判定して防ぐことができるんですか? まあこれだと狙った人のPCを破壊できませんが不特定多数の人がPCを使うようにうまく宣伝とかして情報操作すれば誤って使う人もでてくると思うんですがどうですか?
637 :
636 :2009/11/26(木) 12:06:43
自己解決しました
WPFでええやん
>>636 だからVistaとかは署名のないexeは実行するとき許可を求めるし
formatみたいなシステム領域にアクセスするときはUACがブロックしてくれるし
それなのにXP厨ときたらUACうざいとか言ってるしアホとしか言いようが無い
宗教戦争はよそでやれ
C#ってVisual StudioをDLしなくても作れますか? コンパイラだけ手に入れたいんだけど・・・
まだいたのかXp厨
>>645 同梱されているんだから素直にVisual Studioをダウンロード
>>645 .NET Framework 再頒布可能パッケージにはコンパイラも入ってるが
VSを使わないデメリットは大きいぜ
コマンドプロントでコンパイルすればいいじゃないか
>>642 ローカルのEXEに対してUACでどうにかなると思ってるとかおめでたいな
インターネットブラウザと称してSetup.exeとして管理者インストールされたら
あとは好き放題できるっつうのw
WPFを使うメリット、デメリットはなんなのさ?(´・ω・`)
まだ非生産的なテキストエディタでソース書いてるバカがいるのか?
配列に入れたクラスを入れ替えたい場合、元からあるクラスが大きいのですぐに消滅させたいのですが、 classA[] CA = new classA[] { new classA(a), new classA(a) } CA[0] = null; CA[0] = new classA(a); とすればいいんでしょうか?
>>654 それならいちいち書き込むなよバーーーカ
ここはひねくれたやつも多いからな いちいち反応するな
>>654 反論出来なきゃ、そんな言い方するしかないわなw
ワンパターンだな
殺 伐 と し て ま い り ま し た
他の事に尽力した方が有意義だぞ
abstract classってインスタンスを生成できないってだけで そのほかは全部普通のクラス?
>>653 そのnull代入は全く意味がない
そんなこと気にする前に基礎をちゃんとやったほうがいいよ
>>662 そうです
>>653 .netのメモリ解放の仕組みはわかっている?
ガベージコレクションを利用して解放したい場合は、もう参照されることがない状態にすればいいんですよね?
インデクサってのはなんとなくわかった。 class Test{ int a[]; int b[]; } こういう風にクラスの中に二つ以上の配列がある場合 this[int index] //getとset だと、aかbの一方にしか入れられないよね? 中に二つ以上の配列がある場合インデクサ使うことはできない?
class hoge{ int a; int b; } 構造によるがこのhogeをいんでくさでかえせばいいんじゃまいか?
>>667 おいおい。a,b自体をプロパティにしたらいいじゃないか。
それで何が問題なんだ?
なんの制限もなくシステム破壊できるのとは全然違うだろ。
>>666 そうだがnull代入はほとんどの場合意味がない
もしGC.Collectを明示的に呼ぶならその前にnullを代入して
参照を切っておく必要があるけど、通常はGC.Collectを明示的に呼ぶと
余計にパフォーマンスが落ちる
>>669 プロパティの配列ってどうやるの?
int a;
public int A{
get{
return a;
}
set{
a=value;
}
}
int a[];
public int A[]{
こうやるの?でも他プログラムから要素決定できないよね。
get(a,int index)
みたいにやるのもちょっとかっこわるい。
aを処理するためのコレクション実装してそいつを返すようにすれば 各要素のget setを自分で定義できる getだけ実装したいなら読み取り専用コレクションを実装すればいい 効率のいいやり方は分からん
>>672 クラスの中に配列を作るんじゃなくて、クラスの配列を作ればいいと思うよ
動けばいいのだよ動けば
皆、デザイナのある帳票で(例えばアクティブレポートとかクリレポでもいい) ラベルやテキストには名前をちゃんとつけてると思うけど、線を配置した時にその線にもちゃんと名前を付けてる?
動けばいいのだよ動けば
>>651 メリット
凝った見た目を作るのが簡単。アニメーションも自由自在。
M-V-VM パターンでコードが綺麗に分離できる。
デメリット
簡単って言えるまでに覚えなきゃいけないことが沢山。
XPだと重い。
>>671 ローカル変数ならnull代入もいらないな。
まあデバッグ実行のことを考えるならやっといた方がいいが。
TabControlを使う代わりに ListBox or TreeViewを使ってサブフォームをページ状に切り替えられるようにするには どういう風に作ればいいんでしょうか? TabControlをカスタマイズしてみようと思ったんですが、タブ部分だけを非表示にすることができないようです。 また、サブフォームをFormとして定義していると、デザイナーにコントロールとして登録できません。 (TopLevelプロパティの問題。手作業で) 参考にできるような記事を紹介いただけるようだとよりありがたいです。
JANEまで高機能じゃなくていいので読み込んで表示するぐらいの機能で、2ちゃんブラウザ作ってみたいんですが何すればいいかわかる方いますか? できれば作り方紹介してるHPなど教えていただけたらありがたいです。 今一通り基本を抑えたような段階です
すれ違いも多少の縁です 教えてください
袖すり合うも多生の縁のこと言いたいの? 専ブラ 2ch C#でぐぐってみそ オープンソースでいくつかあったから
ユーザーコントロール
WPFのXAMLって動的なことしようとするととたんに面倒になるよね 例えばプロパティ値が実行前に決まってるならいいけど、実行時に決めるような場合じゃ コード書いたほうが楽っていう。 実際はそういう動的に代入するケースが頻出するからコードに依存する部分がほとんどなんてことに
>>688 サブフォームについてはそのとおりですね。
>また、サブフォームをFormとして定義していると、デザイナーにコントロールとして登録できません。
>(TopLevelプロパティの問題。手作業でfalseにすれば登録できることは確認したが、デザイナ−でいじるとダメになる)
という文章の予定だったのが、推敲前に投稿してしまった次第です。
ただこの場合686の場合にUserControlのサブクラスとしたほうがよさそうです。
で、質問の重要なほうはTabControlの代替です。
よろしくお願いします。
継承に関して質問 プログラムみると overrideのほうがnewするメソッドよりはるかに使われてるみたいだけど newってなんで使われないの?
>>690 そもそもvirtual methodはoverrideさせるために作るから。
しかしわざわざ new を使わなきゃいけない状況がぱっと思いつかないな・・・
>>693 Windows Formのコントロールを継承で拡張する時にはわりと必要になるけどね。
>>694 なるほど・・・
やったことないのでよくわからないんですけど、
継承元の機能を残さなきゃいけない理由があったりするんですか?
exeにbitmapとかwavを埋め込む方法ないの? 大量の画像ファイル用フォルダとか作らずexeだけで配布したいんだが。
リソース
>>695 いや、オーバーライド不可のメソッドの動作を変えたり、BrowsableAttrivite付けて
プロパティグリッドから見えなくしたりとか、そういう使い方だね。
はっきりいって邪道だけどそれ以外方法がないから・・・
>>695 例えばListViewの継承やる時に、基本Ditailしか想定していなけれな
それ以外に変わっちゃ不味いでしょ
AttriviteとかDitailとか誤字の多いインターネットですね
>>698 なるほど・・・
>>699 それと new の関連性がよくわかんないです。
不勉強で申し訳ない・・・
なんなんだこのVisualStdioってのは? objとbinとcontentっていうフォルダあって その中にさらにdebugとrereaseわかれてるとか意味不明。 どのフォルダにちゃんとしたファイル入ってるか探すのも大変だな。 Visual StudioよりもっとマシなC#の開発環境ないかなー。 こんなわかりづらいフォルダにすんな!
>>702 VSの長い歴史と絶え間ない改良によって編み出されたプロジェクト管理手法を一言で切り捨てるわけだな。
若いねぇ。
釣られんなよ
あるテキストファイルを解析する処理を作成したのですが、ファイルが30個程度あります。 これを1つずつ実行した場合、10分近くかかったため、 各ファイルを並列に処理させたいのですが、どのようなやり方がよいでしょうか。 試しにBackgroundWorkerをファイルと同じ数だけNewすることで対応したのですが、 Joinの仕組みがないようなので、BackgroundWorkerをListに詰めて 終了イベントですべてがIsBusyでないことを確認したりという風に行っています。 やはり無茶苦茶な方法でしょうか…
706 :
デフォルトの名無しさん :2009/11/26(木) 21:41:54
>>687 代入元のデータは全部クラス側にプロパティとして持たせて
XAML側はバインディングとデータトリガーで表示させるだけってのが流行りだけど、
まあ確かに突っ込んだことやろうとするとコードビハインドに頼ることが多くなるのは実感だなあ
それで速くなると思ってんのか? 各ファイルのサイズはどの程度で? 解析ってのはどんな処理なんだ?
一行読んで解析してまた一行読んで…みたいにしてるなら並列にしたら速くなるでしょ
>>706 MVVM の VM 書くのって結構面倒だよな。
>>703 何も入ってないフォルダorどうでもいいファイルが3個入っただけのくだらないフォルダを4つも5つも無駄に作り出すことが
「長い歴史による改良」ですかw俺みたいな混乱させるための十分な改良ですねw
>>707 にわか。
IOとCPU演算がからんでる場合に並列処理を検討するのは定石だよ。
>>710 そうだね。
eclipseでもC#書けるらしいからそっち使ったら?
eclipseでももちろん開発できるが、やはり生産性で言えばVS以外あり得ない
いやいやいや・・・そこでマジレスしてどうするんだ・・・
なぁ・・・ Visual C#でXNAでためしにほんのちょっとしたプログラム (キーボードの矢印キーを押すと画像が移動するだけのシンプルなもの) 作ってみたんだが、他のPCじゃ動かないみたいなんだ。 XNAってXPとかでも動かないの?
え!XNAってランタイムいるのかよ かなり作り込んでしまった
XNAスレでやれ
>>715 動くけど動作環境嫁
必要な Direct3D のバージョン(でた時の時期で示されるやつ、
月年のやつな)と CRT と XNA Framework Redist が要る。
あとはハード的にも PS 1.1 以上が要るかな確か
ちなみにこういうの入れるインストーラ作らないといけないのは
たいていのアプリでも同じ。
ダメなのか・・・orz XNAで作られたゲーム自体マイナーだしそのためだけに ランタイムいれろってのもうざいしこりゃ使えないな・・・ どうもありがとう
System.Diagnostics.Process.Startを非同期で行うことは出来ませんか?
MSが標準で提供してるランタイムなんだし、 ユーザに入れさせても良いと思うけど。 それよりXNAの最大の問題点はXBoxゲームパッド以外に対応していない点だと個人的に思う。
>>720 C++で直接DirectX使うにしても最近はバージョンがややこしいから配布の際はインストーラ必須だよ
>>721 もともと非同期
ひにけにも更新されなくなったしXNAはもう終わるんだろう
<xml> <A>あ</A> <B> <A>い</A> </B> <B> <A>う</A> </B> </xml> 上のようなxmlファイルがあったときに、Linq to XMLで Bの要素の中のAの要素だけを取り出したいです。「い」と「う」 どういったクエリを書けばよいでしょうか
>>723 あぁ、もともと非同期ですね。言葉が悪かったです。
GUIのスレッドで、process.startを呼び出すと、
ほんの一時的にGUIスレッドが固まってしまいます。
それをどうにか出来ないかと思いまして・・・
UIスレッド以外でProcess.Startを呼べば良いじゃん てか、そこまで書いてて何故分からんのか不思議
>>725 var root = XElement.Load("hoge.xml");
var a = root.Elements("B").Select(b => (string)b.Element("A"));
>>727 1つのプロセスだとそうするのですが、
2つボタンを設置して、連続的にクリックしたとき、
別プロセスを実行させたいのです。
アプリケーションショートカットのようなものでしょうか。
この場合だと、2つスレッドを作れば解決なのでしょうが、
実行するプロセスの数だけスレッドを作るのは効率的にどうかと思いまして。。
>>728 ありがとうございます
参考にさせていただきます
プロセス生成に比べたらスレッド生成なんてゴミみたいなもんだから気にするな どうしても気になるならThreadPool使えば
>>731 ThreadPoolで解決しました!ありがとうございます!
どういたしまして
フォーム1にラベルを貼り付けました。 フォーム1とは別のクラスのLabelSetterクラスを作ってみたんですが 別のクラスからフォーム1のラベルを変える方法が できません。どうやれば別のクラスでできますか? public partial class Form1 : Form { //コンストラクタ等 } public Static class LabelSet{ public void func(){ Form1.Label1.Text="がんばれ"; } }
単純に質問に回答すると、Label1をpublicにすればいい でも、普通はそんな腐った設計にはしない
サンキュー、と思ったらLabel1 privateになってるじゃねぇか! コードザイナで編集されてます、勝手に編集しないでくださいだと? うぜぇしるか。public と。できた。
VB6だとよくその手のコード書く奴いたけど、どういう発想してるのかね。 依存性云々みたいな理論的な話は知らなくても、普通のセンスしてれば そういう書き方したら後々自分が困るって直感的に分かるとおもうんだが
こんなことやりはしないが まぁせめてやるにしても void func(Label target) とかだよなぁ・・・・ クラスの意味がないではないか
なんで困るんだよw Label1 = ・・・ と直接書き換えるのと メソッドなどを利用して間接的に書き換えるのなら 直接書きかえるほうが手間かからないだろ。 プロパティも特別な理由がなきゃ使わなくていい。 class A{ public int x; public string s;; //なんかメソッドとか } class B{ static void Main(){ A a=new A(); //ここでなんかいろいろやってる } たとえばこれでわざわざx等をprivateにしてプロパティを使うメリットが思い浮かばない。 めんどくさいだけ。
「Label1のテキストを書き換えるためのプロパティ」は確かに意味がない
たとえば
>>734 の例に合わせるなら「応援メッセージ」プロパティであれば意味がある
>>739 面倒くささは、自動プロパティ構文で問題ないでしょ。prop[Tab][Tab]で作れるし。
public int x { get; set; }
public string s { get; set; }
結局、nullを弾きたいとかで後に普通のプロパティに変えることもあるけど。
Form1.Label1.Text="まさにVBだな。がんばれ";
>>739 それやるとプログラムの見通しが悪くなるのは確かだな
そもそも文字を書き換えるのにオブジェクト丸ごと晒す必要ないでしょw
ただ、この場合Label1をプロパティにする/しない以前に、Label1の文字だけ
外部から書き換えるということ自体に疑問を感じる
他のメンバーと矛盾した状態になることはないのかとか
そもそもフォーム全体を特定の状態にするための細々とした処理の
1つなら状態を表すenumでもセットしてフォーム側でやったほうがよくね?とか
要するに外部からLabel1のオブジェクトが欲しくなるということ自体が
きちんと設計出来てないだけという可能性が濃厚
「オブジェクト指向」や「プロパティ」 のありがたみを体で感じられるようなプログラムはないかね。 ボタンを押したらpictureboxにキャラが現れて「がんばれー!」って表示するだけみたいな 簡単なプログラムしか作らんからオブジェクト指向なんてどうでもいいわ!
まあ実用上Label1をpublicにしても、プログラムが汚くなる以上の実害って滅多にないけどな でも、せめてLabel1にちゃんとした名前を付けて使って欲しいわ
class[] C = new class[]{ new class(a), new class(b) } C[0] = C[1]; class D = new class(e); C[1] = D; とした場合、C[0]の中身はDですか?それともclass(b)ですか? 参照ではなくコピーが渡されてるのか、それともすべてに参照が入っているだけだからclass(b)の参照がC[1]に入っていただけであって Dをいれてもclass(b)は消滅しないのかを聞きたいんです。
消滅とか言う考え方は止め 「参照できるかどうか」つまりそのオブジェクトを誰かが触ることができるかを考えて
>>734 むしろ、LabelSetterがフォームの外に出てるのはどうなんだろうな
オブジェクト施行の「オブジェクト」とは具体的な「もの」です とかウソ書いてる本をどうにかしろ! C#でやったらファイルストリームだのグラフィックマネージャだのキーボードイベントだの明らかに「具体的な物」じゃないものも オブジェクトになってるじゃねぇか! うそ書いてる本の作者どもくたばれや!
こうすると自然だ。 module LabelSet sub func() Form1.Label1.Text="がんばれ" end sub end module
>>711 いやいやIOとCPU処理が絡むときに並列処理を考えるのは分かるけどな。
>>705 の書きこみ見てそれで速くなると思うのかい?
解析とファイルIOの負荷の割合も分からんからまずどんな程度の処理か聞いてみたんだが、
ともかくこの内容で言える範囲なら、複数ファイルを並列じゃなくて
まずファイルIOと解析を並列にっていうのが普通だ。
解析が非常に重いなら、解析部分はコア数分並列化ってのはもちろん考えるけどな、
>>705 の書きこみではその辺分かってやってるとは思えんよ。
分かってるならもう少し具体的な書き方になるはずだ。
そうしないとアドバイスのしようがないのは明らかだからな。
そうだな
スレッドをきれいに自分で処理して・・・
ってレベルでもなさそうだし
>>751 に1票
一応現時点で言えることを書いとくなら、 ・ファイルIOが遅い →IOと解析を別スレッドでやる(複数ファイルを別スレッドではない)。 ただし解析が非常に軽いならほとんど効果がない可能性が高い。 解析がそれなりに重い場合やファイルが小さい場合は効果が期待できる ・解析が重い →マルチコアの場合に限り、ファイルIOは順に行うままで、解析を複数スレッドで行う。 ただしファイルが大きい場合は一つのファイルでの解析が複数スレッド化できるほうが望ましい。 ファイルが小さいなら、読み込み終わったファイルから順に別スレッドで実行するようにする。 ただし同時に実行させるスレッド数はプロセッサ数かそれプラス1程度に抑える。 まあ、10スレッド以内程度なら極端に遅くなったりはしないが、30は明らかにやりすぎ。 スレッドプールのスケジューリングでうまくスレッド数が抑えられるならそれでもいいが。 ファイルIOを非同期でって意見が出てくるかも知れんが、 多分それでパフォーマンスを出すのは難度が高いと思うよ。
ファンクションキーを押したときにイベントを起こすようにしてるんですが、全く反応してくれないんです。 どうしたら良いんでしょうか…
KeyPreviewとエスパー
コントロールがキーを拾ってる
>>755 の言うとおり、FormのKeyPreviewをtrueにすればFormで一括管理できる
WebBroeserControl使ってるなら
WebBrowserのKeyPreviewイベントを使うか
ProcessCmdKeyで書く方が楽
>>753 ただ、テキストの解析程度でI/Oに比べて処理が重いとしたら、処理自体に問題があるんじゃないかな
実際にボトルネックになってるのはIOじゃねーんだろーな
>>744 プロパティの一番の利点は後からの修正に強いことだからなぁ。
完成品なプログラムじゃありがたみわかんない。
多すぎるインターフェースによる継承の爆発・・・! リストの追加の柔軟性のなさ・・・!
先カンブリア紀のように爆発的にいろんな手法が開発されてもいづれ淘汰されるんだろう。
デザインパターンってのにシングルトンとやらがあるらしいが C#でいうstatic classとは機能面で違うのか?
シングルトン…常に1インスタンスしか作らない static class…インスタンス作らない
インスタンス作るかどうかは構造面の違いであって、機能面の違いじゃないだろ
>>749 この書籍はなかなかいいぞ
↓
オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
tp://www.amazon.co.jp/dp/4822281957
C#難しい・・VCと同じように使うこともできるんだろうけど、 デレゲートとラムダ式でぶわっと膨らんだ部分でもって、ソースを見ても理解できない状態。 みんな頭いいね〜。
>>767 C#出来てC++出来ない奴も同じことを言うかもしれんな
結局慣れろ だろ
高卒や専門卒の土方だって使ってるだろ 頭のよさなんて関係ない
だれかIronC#とか作ってください
モリブデンC#とかタングステンC#とか? レアメタル最高とか言っちゃうの?
数学関数を使う場合、 System.Math.〜 って書かないといけないけど、System.Mathを省略する方法は無いのでしょうか?
System名前空間は最初から省略できるようになってるだろ
ちがうだろw
int a = Abs(-3);
って書きたいんだろ。
>>776 できません。
諦めてVB使ってなさい。
そうですか。 何だかセンス無い仕様ですね(´・ω・`)
そらそうよ
一応Systemだけは省略できるけどね int a = Math.Abs(-3);
センス
クラスの概念がない人はセンス無く感じるのかもよん
できるだろ? static void Abs(int x){ Math.Abs(x); } これでいいじゃん。
>>784 それ売れると思う( ・ω・)y─┛〜〜
あえてvoidなのがセンスあるね
うぉ・・・スレ間違って相談室に投げてしまった・・・
お前ら仕事しろよ
誰だって最初 Console.WriteLine書くのめんどくせーから static void Main(){ W("aaaaaaa"); } static void W(string s){ Console.WrieLine(s); } これで動く。Console.WriteLineとかいう糞長いメソッドを書かなくてもよくなる。便利!
>>789 残念だが俺はなかったようだ
君の中では特殊な部類にはいるようだ
>>779 数学関数が長ったらしくて嫌なのはわかる
でも、それやったら標準ライブラリの静的メソッドが
全部予約語になっちゃうようなもんだよね
かえって自分が困るのはすぐに想像付くでしょ
求めるなら名前空間・クラス名の省略じゃなくて
数学関数を演算子として言語に組み込んでくれ〜って
MSにお願いして奇跡が起これば対応してくれるかもね
とりあえず好き放題出来るようにパーサでも作りなよ
関数の頭にstaticが付いているけど、つけるとどうなるの?
たぶん君が考えてる期待通りの動作をするのがstatic ためしに消してみればわかる
意味がわからない言葉 イベント デリゲート オーバーライド 参照型 継承 静的 演算子 メソッド ポリモーズム オーバーロード インスタンス ラムダ式 クエリ式 プロパティ 意味がわかる言葉 コンストラクタ 変数 文字列 クラス 戻り値 構造体 配列 for if while switch case
>>794 ググったらどれもそれなりに解説があるだろうに
dynamic math = new TypeObject(typeof(System.Math)); math.Abs(x); C#4.0で自分でDynamicMetaObject作ればこういうのも可能だなw
うわぁ・・・・いらねぇ・・・・
>>795 ぐぐったらぐぐったでさらに意味不明用語の羅列で余計わけわからなくなるんだよ
せめて何がどうわからないかくらい書いてみろよwwww どうせ皆、意味不明な言葉に一度や二度くらい悩んで解釈見つけ出してるんだし 同じような判らない なら判りやすい解釈出してくれるかもしれないぞ
>>798 そのタマネギ目にしみるかもしれないけど、最後まで剥けば中にタネ入ってるよ
がんばって!
意味がわからない言葉 バグのないプログラム 納期厳守 お前のコードにはキレがない うちの上司のお言葉( ・ω・)y─┛〜〜
>>801 >お前のコードにはキレがない
ワロタw
たぶん「オレ好みの書き方じゃない」って意味だよ
>>801 バグのないプログラム→ねぇよ
納期厳守→工程がちゃんと組めるならな
お前のコードにはキレがない→はぁ?お前のションベンと同じだろうが
俺なりの解釈
継承って二個までならいいけど3個以上になるとつかいづらいな。 ミクロソフトが最初から作ってるクラス(Formとか)を除き インターフェースや中小クラスだけ継承して通常のクラスはオーバーラオドしないほうがいいな! class a{ vartul func(); } class b : a{ overide func(); } class c : b{ overide func(); } こんなだったらいちいちどのメソッドが引き継いでるとか考えなきゃいけなくてわかりづらいな!
>>804 ものによるなあ
コントロール作るのは継承でないとやってられんw
すいません、特定のビットだけ0にするにはどうすればいいですか?
特定のビットだけ0の値と論理積を取る 特定のビットだけ0の値は論理否定を使うと楽
ビット演算か。 昔、8086のファームやっていた時には良くやったけどなー。 そんな関数無かったっけ? ベタなやり方は、一旦、2進にして特定ビットだけ0マスクしたものとのANDをとる。
今でもFAでは重宝してる インデクサ使うのもいいよね
今日、研究職の奴等が書くコードをみたがスパゲティにも程があるな… コードは書けても設計出来ない マクロな事はわかっても全体をみわたせない 技術大国日本は過去の話と実感しますた(´・ω・`)
>>807 すいません、その特定のビットだけ論理積とれたらいいんですがやり方がわからなかったのです
>>808 なるほど!できましたありがとうございます!
807と808の間にどれほどの情報量の差があったんだろう……?
研究職はコード書くのが仕事じゃないから
お前らスレタイ復唱してから仕事しろ
>>810 研究職のやつらのほうが実用的なコードすらすら書けちゃったら
そっちのほうが技術大国とは程遠いだろ
土方頑張れよ
99%の研究職は結果の出せない社会のゴミだからねぇ 低賃金なのを理系は優遇されないとかいっちゃうお花畑な脳内じゃ日本も先はないさ
まともな研究してる奴ならC#使って無いだろw
C#ってXNA使えるらしいけど Direct Xとやらは使えないの?
XNAスレ行け
研究職がものっそ綺麗なコード書いてたら うちら仕事なくなるっす
研究職って頭いいの?
特定分野の雑学を知ってるを頭良いというのであればいいんじゃね? 企業にとっては税金対策の駒
じゃあ俺のほうが頭いいな
まぁ研究職についてるやつで頭いいとかいえるのは一握りだろうな 使えないのはそれなりにいて 残りは普通 PGも一緒じゃね
>>804 .Netのクラスライブラリを全否定するお前は何者だよ
大学の教授は研究職といえますか?
いちいち ファイル→すべてを保存とかやるより CTRL+Sキーを押したほうが入力が速いな! プログラミング作業にマウスは必要ねーな。作業遅くなるだけでウンコ
>>829 そんなの俺がMac SE/30を手に入れた1990年6月の時点で常識だ。
意味がわからない言葉 コンストラクタ デリゲート オーバーライド 参照型 構造体 クラス ポリモーズム オーバーロード ラムダ式 クエリ式 意味がわかる言葉 イベント 変数 文字列 インスタンス 戻り値 配列 継承 for if while switch case 静的 演算子 プロパティ メソッド
下のソースの3行目、"xxx"のところを"h"、"H"にするとFormatExceptionになってしまうのはなぜでしょうか? もちろん"hh"、"HH"他、フォーマット文字列は基本的に問題ないんです。"h"と"H"だけがダメ。 12時間制ないし24時間制で、ゼロパディングしない時間表記が得られる事を期待して射るんですが。 System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("ja-JP"); DateTime dt = DateTime.ParseExact("2009/03/05 19:11:12", "yyyy/MM/dd HH:mm:ss", cultureInfo); MessageBox.Show(dt.ToString("xxx", cultureInfo));
>>832 カスタムの日付と時刻の書式指定文字列
のページの一番下
834 :
832 :2009/11/27(金) 19:22:28
>>833 ありがとうございます!
"%h"とか"%H"って書く必要があったということですね。標準日時指定子なんてまったく知らなかった。
調べたつもりになってたんですが、リファレンスマニュアルは隅々まで読まないとダメですね。
他の1文字指定子は使ってなかったので気づきませんでした。
C#がむずかしすぎるからRubyってのやってみたらC#よりもっと難しかった。 やっぱりC#に戻ってきたよ。
そうですか
なんでジェネリックってのは 汎用型ならa>bくらいできるようにしろよ! a>bが判定できないなんてクソだよ!ファック!
bool型の比較演算子も許容されちゃうよお><
840 :
デフォルトの名無しさん :2009/11/27(金) 20:44:49
listBoxの項目を選択しないで取得する方法が分かりません。 下記のように、単純に全部を保存したいだけなんですが、 選択された項目を取得する方法しか見つかりませんでした。 for (int i = listBox1.Length -1; i >= 0; i--) { File.AppendAllText(filepath, item[i], enc); }
staticな変数とかメソッドて なんかクラスから半分飛び出してるみたいで気持ち悪いね。
imre[i] に GetType() つかうなりデバッグで止めるなりして型見ればいいと思う
>>841 フレームワークを否定する気かよwwwww
int.MaxValueとかどうすんのよ
最初のMainとかどうすんのよ
そういえば気持ち悪いも何も当たり前すぎてそんな感覚なかったなぁ
でも、何かするのにいちいちインスタンス作らないといけないのも問題だと思うけど・・・
845 :
デフォルトの名無しさん :2009/11/27(金) 21:17:47
>>842 すみません。型を見るってのがよくわからないです。
書きかたが悪かったでしょうか。
ループしてlistBoxのテキストを逆順に取得して保存したいです。
for (int i = listBox1.Count -1; i >= 0; i--)
{
File.AppendAllText(ファイルのパス, ?[i], エンコード);
}
この?の部分に何を入れたら良いのかわかりません。
listBox1.textだと選択されている項目しか取得できませんでした。
変数aと変数bがあって aとbの符号が違うことを調べる関数はどうやるんですか? bool 正負判定(int x,int y) a=5、b=2なら 正負判定(a,b)はtrue a=-3,b=-4でもtrue a=3,b=-5ならfalse みたいな感じです!よろしくお願いします!
思った通り書くだけだと思うけど ゼロの場合どうすんの?
>>845 言い方が悪かった
そのItemの中身の方にキャストしてから文字列にすれば?と思って言っただけなんだ
listBox1Items[i]
じゃないかな?
オブジェクトだから中身は多分文字列なんだろうから .ToString()でもつけりゃいいと思う
listBox1Items[i] .ToString()
違ってたらごめんよ
>>847 a>0 && b>0 return true; a>0 && b<0 return true; ifつけてこんな感じですか? でもifがいっぱいついてかっこわるいです。もっとスマートな書き方ないですか? 一文でできるような。
ごめんよ(´・ω・`)
>>844 正しいわけがないだろw
むしろこういう、馬鹿なくせに自分を疑うことを知らない奴の方が気持ち悪いよ。
クラスはインスタンス(オブジェクト)の元であると同時に、
クラス自身もオブジェクトだって考えることができれば、staticなメンバの存在は
少しも違和感ない。
852 :
デフォルトの名無しさん :2009/11/27(金) 21:34:15
>>848 ありがとうございます!
listBox1.Items[i].ToString() で出来ました。
>>849 基本は
return a * b >0 若しくは return a * b >=0
0の扱いをどうするかで色々変わるね
854 :
デフォルトの名無しさん :2009/11/27(金) 21:44:52
>>853 849じゃないけどなるほどなぁ。
こういう人が向いてるんだろうな……。
掛けちゃうとオーバーフローの問題が出てくることになる
C:\Users\KENZO\Documents\Visual Studio 2008\Projects\PasswordTrap\PasswordTrap\obj\Debug\Setup.pdb 初心者プログラマが新種のキンタマ作って大暴れしてるみたいだなw
857 :
デフォルトの名無しさん :2009/11/27(金) 21:55:01
return ((a > 0 && b > 0) || (a < 0 && b < 0)); 我ながらかっこ悪いw
>>856 お?どっからその情報みつけたの?俺も教えてくれ
これは香ばしい・・・・
>>855 気になるならdoubleでキャストしてから掛けたら大概大丈夫だ
んな事するより比較演算の方がどう考えてもコスト安いだろ。
コスト(笑)
つうか掛け算してオーバーフローの心配がある数扱うのなら 元々double使っているよな だから return a * b >0 で問題になることは、まず起こらないよ
変数を、メモリ内の特定の先頭アドレスを指定して宣言 → 別プロセスで不要かどうか判断し、不要になった場合に削除 したい場合には、どうしたらいいでしょうか?
・・・排他的論理和
>>862 どんな理屈だよ。
return (a >> 31) & (b >> 31) != 0
未確認
まあ
>>857 が一番いいだろうな。
あごめん大ボケしたわw
return (a >> 31) ^ (b >> 31) == 0 かな?
>>869 考えすぎ
a ^ b < 0
でいい。
あ、判別逆かも
すみません教えてください for文 { 関数A(); } 関数B(); このように、for文の中で関数Aを実行し、それが終わり次第関数Bを実行してほしいのですが、 関数Aの処理が終わらないうちに関数Bが実行されてしまいます なにかうまい方法はありませんか
ムリ
エスパー頼む
875 :
デフォルトの名無しさん :2009/11/27(金) 23:46:02
非同期処理を同期処理にかえればいい
>>870 1の1乗=1
1の-1乗=1
-1の1乗=-1
-1の-1乗-1
なのになんでa^b で判断できるんだ?
>>872 エスパーすると、Formアプリで
関数Aでlabel.TextとかForm.Textを変更してるのに
更新されないとかじゃないのか。
this.Reflesh() (この場合thisはFormね)とかしてみれば?
>>876 おまえはいっぺんC言語から見直したほうがいい
>>867 オーバーフローにケチ付ける割に、整数型以外考えていないのなw
じゃなかったint32のみか byte、short、long、int64でも破綻とかw
Math.Signっていうそのまんまなのがあるんだが
列挙型をそのまんまの形で代入できないかな enum 難易度 {簡単,普通,難しい} 難易度 難易度2; 難易度2=難易度.簡単 みたいになってでてこなくていい最初の型名がでてくるのがうざい 難易度=簡単 みたいにできないの?
>>883 enum 定期試験の難易度 {簡単,普通,難しい}
enum 受験の難易度 {難しい,普通,簡単}
があって 簡単 だけを指定した時どっちになるんだ?
>>883 難易度 簡単{get{return 難易度.簡単}}
は冗談として、出来ない。
確かに、代入する変数の型が確定している時はenumの型を指定するのは冗長ではあるし、
省略できても文法的に破綻はしない気がする。
でも、心配しなくてもそのうちそんなこと「出来てもむしろしたくない」
と思うようになるから。
つまりenumは同じものをなんらかの方法で二つつくらないとダメってことか enum 型名 {1,2,3} 型名 型名2 =型名.1 みたいにやるか。わざわざ型名と型名2とほぼ同じ名前を二つ作るところがあれだが、そういう仕様なら仕方ない。
と思ったらまったく同じ名前つくれるのか。 難易度 難易度 =難易度.簡単 ができた。これならまだいいな
>>881 byteで破綻しない方法を教えてくれw
まあint32ですら破綻するよりはましなんじゃね?
>>846 return ((a < 0) == (b < 0));
return ((a > 0) == (b > 0));
return ((a <= 0) == (b <= 0));
return ((a >= 0) == (b >= 0));
C#ではポインタ型やポインタ型の変数はオブジェクトですらないのかな。
public interface ISomething { ISomething GetSomething(); } public class A : ISomething { public A GetSomething(){ return this; } //実装 } みたいなのが実装しているとみなされれば楽なのになーと思う時がある。 ファクトリ作ってる時とか。
よくわからん
自分自身作ってどうすんだよ…
b = a; を b = a.GetSomething(); と書きたいのか
usingで使ってるDLLって ビルドしてできたexeと同じファイルにおいておけば別のPCでも起動できるの? 自作のDLLやMSが最近だした新しいDLLで作ったのを配布する際は ZIPにDLLとEXE両方うめこめばいい?
簡単のために省略したつもりが余計分かりづらかったな。すまん。 あるインタフェースAを返すメソッドmethodが、別のあるインタフェースBに定義されているとする。 ここでインタフェースBを実装するクラスB'のmethodにおいて、インタフェースAではなく インタフェースAを実装するクラスA'を返すことを許容してほしいということ。
明示的実装は知ってるよな確認するけど
>>896 わざわざコード書かなくても、そういうのは「共変な戻り値型」と言えばすぐに伝わるよ
それじゃ俺に伝わらないからだめだね
共変って言葉が同じだけで関係ないし
>>883 それを認めてしまうと、名前が衝突しまくって困るんだよ。
C++ の enum がそうかけてしまって、冗談抜きで困ったから。
あと、C# みたいにインテリセンス前提の言語だと、
型名. って打った時点で候補が出てくる方が都合がいい。
>>890 ポインターは値。アドレスを格納した単なる数値。
int とか long とかもオブジェクトといえばオブジェクトだし、
その理屈で行くとポインターもオブジェクト。
>>891 A Method() { return new A(); }
ISomeThing ISomeThing.Method() { return this.Method(); }
スレタイにある「ふらっと」ってなんですか? #なのに…
>>904 そういう意味じゃない。
A : IHoge なら
メソッドシグネチャが
IHoge Method() な場合でも
A Method()での実装を許して欲しいなって話。
そいつはあまりにも無茶苦茶すぎでしょw 整合性すらとれないぞw
>>895 基本的にはそう
> MSが最近だした新しいDLL
MS が頒布するのって大抵インストーラつかわね?
あとusingはdllとは関係ない
>>907 何故?
どういう時に整合性がとれなくなる?
デリゲートとかでは許容されてるんだよ?
>>907 そうでもない。
実際にJavaやDでは実装されてる。
>>906 CLIが共変な戻り値型によるオーバーライドを認めてないから、
言語レベルで実装する場合
>>904 のシンタックスシュガーにするしかないだろうな
ISomeThing.Methodのほうはsealしておく必要があるな
それが出来たとしてどういうメリットがあるわけ?
ファクトリクラスに便利とあるけどそれは違うと思う
ジェネリクスでも共変使えたほうがいいよねってことで 4.0からは実際に実装されるわけなんだよな。 通常のメソッドで許可しないのはメリットが少ないからなのかね。
>>916 メリット少ない割に実装が大変だったり混乱招く機能は C# にはまず入らない。
>>917 え?一緒だよ?
むしろ
>>900 ちゃんと読め。
A : ISomeThing な時に
ISomething GetSomething() なシグネチャーに
A GetSomething() な実装を許せって話だよ。
デリゲートの場合は
A: ISomeThing の場合、
delegate ISomething GetSomething() に
A GetSomethingImpl() の代入を許可してる。
なんでジェネリックスでは実装されたんだろ。
俺は
>>900 読んで混乱してしまった。
ジェネリックやデリゲートとは違って、 できたからといって特に便利になるわけじゃないからな デリゲートが共変反変使えるようになってるのは使い回せるから ジェネリックはほとんどIEnumerable<out T>専用だけどよけいなCast<T>やOfType<T>を減らせる
あーなるほど理解 たとえば List<ISomething> を処理する何かに List<A> をそのまんまわたせるようになるってことか。 つかそれ今迄出来なかったんだな
List<T>はダメ Tの使い方を読み取りか書き込みに限定しないとタイプセーフが保たれない だからoutとinなの
読み取り専用インターフェースとか書き込み専用インターフェースじゃないと 旨みがない=ジェネリックはほとんどIEnumerable<out T>専用ってことかぁ。
>>918 >混乱招く機能
dynamic は正直どうかと思う
ほかにもIComparer<T>はIComparer<in T>になってるので IComparer<MyDerived>を引数に取るメソッドにIComparer<MyBase>を渡せたりする (MyDerivedはMyBaseを継承しているとする)
>>925 ドキュメントが頼りになりそうだな。
// !!CAUTION!! x はAddメソッドとResultプロパティを持つ必要があります
void doSomething(dynamic x);
わけわかめ
まとめると
>>900 はC#4.0ではどうけるようになるのさ
>>927 さすがにそういう使い方する奴は「そんなには」出ないと思う・・・
ちょっと分かりにくいかもしれないけどJavaの悪名高いワイルドカードに比べたら遥かにマシ
間違えた
>>891 はC#4.0ではどう実装するの?
だったw
共変性と反変性が実装されるただけで書ける?
933 :
931 :2009/11/28(土) 11:04:35
ジェネリックって何
>>932 ジェネリックやデリゲートとはまったく別の話
たぶんインターフェイスメソッドを実装するときや
基底クラスのメソッドをオーバーライドする際の共変反変はたぶん未来永劫サポートされない
メリットがほとんど無いからね
>>932 ジェネリクスでの共変性と反変性が導入されるだけだから
>>891 は今のところ実装されないよ。
現状デレゲート(と4.0ジェネリクス)だけそういう書き方が出来る。
なんでJavaとかDでは採用しちゃったんだろう メリットより直交性を取ったのかね
そりゃ普通に考えればできるのが自然だからだろ C#はバージョン管理に異常に気を使ってる言語だからそういう関係もあるんだと思う
>>939 なるほど。
実装の都合ってのもあるわけだしね。
Javaはどうなってるのか色々見てみたけど
ジェネリックスでの共変実現のためにあっちはワイルドカードを使うのか・・・
in out で制限しつつのC#のやり方は結構スマートなんだな。
>>895 できるけどMSのdllを勝手にローカルコピーで配布したらライセンス違反だ
Javaの例見ててメソッドの戻り値に共変を許可した場合のメリット一つだけ見つけた。 ICloneable を実装して使うときに一々キャストしなくて良くなるわ。 あとはわからん・・・
>>937 ダウンキャストを減らすことができるからバグ混入の可能性が減る
ICloneableなんかどうせ使い物にならん 広く使われてるからさすがに本家の.NETでObsolete指定されることは無いだろうが Silverlightでは消えた 理由は「仕様が不明で役に立たないから」らしい
ICloneable<out T>を…
なんとなくわかってきたぞ。 普段は不要だけどいざ必要になったときにヤキモキするタイプの仕様だ、これは。
ジェネリックにしたって同じでしょ せめてディープコピーかシャローコピーかくらいは仕様で決めてもらわないと 使いようがない
>>946 それだ!
interface ICloneable<out T> {
T clone();
}
class Hoge : ICloneable<Hoge> {
Hoge clone();
}
こういうこと??
>>946 考えてみろよ。それ実装するの物凄くうざいぞwww
ICloneableが使い物にならないのと戻り値の共変の話は別もんだろうと。
>>937 ,942
C# の場合は
>>904 みたいな書き方推奨だから。
ICloneable も、
>>904 の書き方すれば、静的に Clone 呼ぶ分にはキャスト不要。
C#は「バージョン管理重視」が基本だからな 考え方の問題だからそれを面倒とかどうとか言っても仕方がない
>>953 バージョン管理重視っていうのは何のことを指しているんでしょうか?
言語仕様の話??
適当にWebで拾い食いしてるだけじゃやっぱ色々わかんないままになるな・・・
共変反変の概念も今日はじめてしったよ・・・
共変戻り値サポートしないのはリフレクションで弄るときに厄介だからだろう
>>949 それやりたいだけならout無しでもいけるぞ。
ICloneable<Hoge>とIClonenable<Huga>だのをICloneable<Object>(の配列とか)につっこみたければ
out が必要になるが。
そう考えると Hogehoge<out T> と Hogehoge<Object> を使えばメソッド戻り値の共変性はサポートされたも
同然ってことじゃない?
>>956 何か色々間違ってそうな気がするんだけど頭がグルグルしてわからん
>>956 の書き方で
>>891 を実装するとこうなるのか
public interface ISomething<out T> where T : ISomething<out T> {
ISomething<out T> GetSomething();
}
public class A : ISomething<A> {
public A GetSomething() { return this; }
}
一応これで実現可能になったってことじゃね?
>>959 いやだめだろそれじゃ。
結局最初の問題にもどってるw
public override int meth(string s);
なんでそんなありえねーファクトリー関数を執拗に作ろうとしてるんだか。 大体それ、C#じゃコンパイルできないんだろ? ファクトリー関数はそのクラスごとにstatic methodで作っていくのが常道。 別にこれでほとんど困らん。
>>959 A の方は public ISomething<A> GetSomething() { return this; } が正解。
どっちにしても A bar = (A)foo.GetSomething(); みたいにダウンキャストしないと駄目。
やろうと思えばISomething<object>とISomething<string>を両方実装することもできるわけで JavaやDにはできない芸当だ
なんにせよC#の考え方としては
>>904 が正解だ
それが気に入らないなら不便なのは仕方ない
>>964 Dはちょっと前に明示的実装の文法話し合ってたから、そのうちできるようになるんじゃね
c#ってexeの内部にdllって埋め込める? //add.cs namespace add{ //足し算クラス } これをadd.dllって名前にして //MySample.cs using add //addを使ったプログラム これをTest.exeって名前にしてコンパイルしたとき Testにadd自体を埋め込みたいんだけど。
ILMergeというのを使えばできるけどなんか勘違いしてない? 名前空間とDLLは全く関係ないよ add.csとMySample.csを一緒にコンパイルすれば一つになる
ILMergeってスマートじゃないよなあ そういうアプローチじゃなくても、MSBuildにかけるときに 単に2つのプロジェクトをマージすればいいだけだと思うんだけど 作ってみようかな
>>970 そうなんだ。
ありがとう。
ILmergeって便利なソフトがあったんだね。
>>971 そもそもDLLにしないなら1つのプロジェクトで作るべき
>>970 それじゃあ質問に対する答えになってないだろ。
>>969 ほぼ同じ質問があってすでにオレが答えてる。
このスレ内にあるから調べろ。
それじゃあ質問に対する答えになってないだろ。
dll自体が単体で存在してなきゃいけないのはWindowsの仕様ですか? exeに埋め込みたくいろいろしらべたのですが方法がでてきません
ILMerge使えつってんだろうがヴォケ!
>>977 dllが単体で存在するって何だ?
exeに埋め込みたいって何をだ?
DLLの意味分かってるのか?
dll埋め込みは1スレに1回ぐらいは見るネタだが なんでそんなにdllをいやがるのか理解できない <これもお約束
980か 建てられるかな
配布をexe1個で済ませたい気持ちは分からんでもない
Readme.txtだって必要だし、ヘルプだってあったほうがいいし、 exe.configが必要になるアプリだってあるし、 実行プログラム1個だけでOKなんて幻想に過ぎないよ。
スレ立て乙
dllに計算アルゴリズムだけ梱包して、こいつだけ取り替えたらいろんなことが出来ると普通だろ。
日本語でおk
MEFみたいなことかと
exe 内で全部できればいいじゃない
exeには夢が詰まってる
そんなに同じがいいなら、よそ(のプロジェクト)の子(コード)になっちゃいなさい!!!
プログラマに限らず、客観的には無価値としか思えないことにこだわる人っていうのは、 センス(の欠如)の問題ってこともあるけど、何かからの逃避(代償行動ってやつ) なんじゃないのかなって気がするね。
強迫性障害ってやつか 頭ではもう大丈夫ってわかってるのに不必要に手を洗ったり ああいうやつか。
靴下は白じゃないと嫌なの!!
客観的に無価値って判断は誰がしているんだろう? 本当に客観か?
ビルゲイツと蓮舫だろう( ・ω・)y─┛〜〜
アセンブリっていう単語の意味がよくわからんのだが なんとか.exeとかなんとか.dllってのが「アセンブリ」?
端的にはそう 持ち運べる最小単位がアセンブリ
ソリューションエクスプローラで参照の設定をしたら 自動的にusingに書き加えてくれよ。不親切だなあ。
参照とusingはなんの関係もないと何度言えば
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。