- 1 名前:デフォルトの名無しさん [2009/01/20(火) 21:47:33 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
- 2 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 21:57:46 ]
- C#, C♯, C#相談室 Part50
pc11.2ch.net/test/read.cgi/tech/1229661915/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング pc11.2ch.net/test/read.cgi/tech/1211453941/ 初心者のためのプログラミング言語ガイド Part13 pc11.2ch.net/test/read.cgi/tech/1232286278/
- 3 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:00:22 ]
- 参考サイト。まずはここで検索してから。
www.google.co.jp/ msdn.microsoft.com/ja-jp/library/default.aspx homepage3.nifty.com/midori_no_bike/CS/ www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html dobon.net/vb/dotnet/ jeanne.wankuma.com/tips/ www.labasp.net/CsharpNote/ 前スレ ふらっとC#,C♯,C#(初心者用) Part35 pc11.2ch.net/test/read.cgi/tech/1229519838/
- 4 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:59:45 ]
- ComImportを使って自作のDLLを読み込むのってどうやるの?
- 5 名前:デフォルトの名無しさん [2009/01/20(火) 23:11:00 ]
- リモートのファイルサイズ取得方法について質問です
HttpWebResponse.ContentLengthでContent-Lengthヘッダ情報を取得できますが Content-Lengthが設定されていない場合にリモートファイルサイズをHTTPで取得する方法はありますか? フリーのダウンローダー(Irvine等)などはHTTPでファイルサイズを取得してるようなのですが 解決方法をご存知の方お願いします。
- 6 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:19:35 ]
- >>4
その自作のDLLとやらはどうやって作った何者? >>5 HTTPだと一般的なのはContent-Lengthしかないよ IrvineもContent-Lengthが存在しない場合サイズは0って表示してるだろ
- 7 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:27:36 ]
- bandObjectを使ってタスクバーに表示するツールバーを作成しました。
しかしcodeprojectのコードのままでは表示/非表示状態を記憶してくれません。 ログオンする度に毎度毎度タスクバーを右クリックして、 ツールバーを表示させなければいけません。 これをなんとかしたいです。 ttp://blog.mutantbunny.com/2006/03/ideskband-problems.html ttp://www.eggheadcafe.com/forumarchives/platformsdkshell/Oct2005/post24484805.asp このへんを見るとIPersistStreamというのを使って状態を保存しなければならないみたいですが、 LoadやSaveがいつ呼ばれているのかさっぱりわかりません。 どなたか、教えて下さい・・・
- 8 名前:4 mailto:sage [2009/01/20(火) 23:51:27 ]
- >>6
Visual C++で、WindowsSDKのSampVidサンプルを改造して作った DirectShowのレンダラーフィルタ 2つか3つぐらいメソッドが追加されている。そのメソッドも使いたい。 ComImportではGUIDを指定するみたいだけど、DLLの名前 指定してもいないのにどうやってDLLに定義してあるGUIDがわかるの?? その辺りがちんぷんかんぷん。
- 9 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:54:23 ]
- C++/CLIで作ればいいのに
- 10 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:58:02 ]
- そもそもCOMの仕組みをわかってないんじゃないか。
- 11 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:01:55 ]
- >>8
ComImport は印みたいなものであまり意味はないよ。 基本としてとりあえず2つ。 まずインターフェイスはこんな感じ [ComImport] [Guid("IID をここに")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] // ↑DirectShow らしいのでたぶんこう。違ったら変えて interface IHoge { // ヘッダ見て「同じ順番で」メソッドを並べる // IUnknown メンバは必要なし [PreserveSig] // ←戻り HRESULT がほしいときはこれを付ける。 // エラー時例外でいいならいらない HRESULT Foo(); } で、生成のコクラス [ComImport] [Guid("CLSID をここに")] [CoClass] class Hoge {} これでこうやって使う。 IHoge hoge = (IHoge)new Hoge(); 後は適当にスレッドモデルに気をつけて
- 12 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:02:22 ]
- >>8
そのDLLがCOMとして公開されてなきゃ使えないよ?
- 13 名前:7 mailto:sage [2009/01/21(水) 00:07:00 ]
- https://secure.codeproject.com/KB/shell/dotnetbandobjects.aspx?fid=3788&df=90&select=1486506
こちらで解決してました。
- 14 名前:デフォルトの名無しさん [2009/01/21(水) 00:30:03 ]
- データアダプターについて質問です。
データアダプターの使い方がわかりません。普通にSQLを記述するのと違うのでしょうか?
- 15 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:29:13 ]
- //
/ / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
- 16 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:12:18 ]
- 2008ExpressEditionSP1
ヘルプの一部が中国語になっているんですけどこれは直りませんか? 自分が確認できている範囲では以下の部分だけです 開発ツールと開発言語→Visual Studio→Visual C#→C# プログラミング ガイドの下の 「コレクション クラス」と「ファイル システムとレジストリ」の間にある項目です ヘルプの左側のツリー表示してる目次部分と右側のタイトル部分が中国語になっています
- 17 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:16:05 ]
- 前スレで既出
- 18 名前:デフォルトの名無しさん [2009/01/21(水) 22:43:33 ]
- C#の質問なんですが、button2を押したときにpictureboxに描画するようにしたいのですがやりかたがよくわかりません。googleなどでも調べてみましたが、検索ワードが悪いのか思っていたようなものが引っかかりませんでした。超初心者ですいませんがお願いします。
- 19 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:53:48 ]
- //コンストラクタかどこかに追加
this.Button2.Click += new System.EventHandler(Button2_Click); //メソッドを追加 private void Button2_Click(System.Object sender, System.EventArgs e) { //pictureboxに描画するコード }
- 20 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:55:48 ]
- そして再描画で消えますって返ってくると
- 21 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:04:21 ]
- >>19ありがとうございます。
>>20はどういう意味なんでしょうか?
- 22 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:06:21 ]
- いいから先ずはやってみなされ
- 23 名前:デフォルトの名無しさん [2009/01/21(水) 23:14:04 ]
- おい! 俺こそは超絶C#プログラマーだ!!っていうやつ出て来い!
俺とメールでソース交換して、どっちがすげえか白黒つけようじゃねえか!
- 24 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:16:28 ]
- いいよ。じゃ、まずお前から送れ。
- 25 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:19:26 ]
- >>23
うpすればいいじゃん 俺よりすごそうだったらちゃんとすごいって認めてやるから 正当な評価をする事を保証するよ
- 26 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 23:41:11 ]
- / PictureBoxに直接描画することはできないので、
// コンストラクタかどこかでPictureBox.Imageに適当なImageオブジェクトをセットしておき、 pictureBox1.Image = new Bitmap(400, 400, PixelFormat.Format32bppArgb); // イベントハンドラで、PictureBox.Imageに描画を行う using (Graphics g = Graphics.FromImage(pictureBox1.Image)) { }
- 27 名前:26 mailto:sage [2009/01/21(水) 23:42:35 ]
- すまん、途中で書き込んでしまった。
// PictureBoxに直接描画することはできないので、 // コンストラクタかどこかでPictureBox.Imageに適当なImageオブジェクトをセットしておき、 pictureBox1.Image = new Bitmap(400, 400, PixelFormat.Format32bppArgb); // イベントハンドラで、PictureBox.Imageに対して描画を行う using (Graphics g = Graphics.FromImage(pictureBox1.Image)) { // ここで描画 } pictureBox1.Invalidate();
- 28 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:12:56 ]
- 揚げ足とるようでなんだが、
>// PictureBoxに直接描画することはできないので、 これは違うというかミスリード過ぎだろう。 描画できないんじゃなくて描画した画像を保持できないだけ。
- 29 名前:デフォルトの名無しさん [2009/01/22(木) 01:32:29 ]
- ド初心者です。
はずかしい質問です。 オライリーとかを買ってきて勉強してるんだけど、純粋に言語の話ばかりで 初心者なのに、いきなりここまで必要かなあと思うんだけど。 C#を使う場合って、ほとんど、VisualStudio上じゃないの?だったら「VSの使い方」っていう コンセプトの本が普通だと思うんだけど、そうでもないの? 自動生成されるコードもたくさんあるのに、初心者のうちからそういう仕組みをまったく度外視して 純粋に言語仕様の本を「初めてのC#」として売ってるから怖いんだけど。 そこそこ使う人はIDEに依存しないで使ってるんですか? 初心者にもIDEの使い方より言語そのものの仕様の方が重要だというのは常識なの?
- 30 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:37:15 ]
- >>29
C# がはじめての人対象であってプログラミング初心者対象ではないんだろ。 VS の使い方を目的にした本はいくらでもあるのにそういう本を選ばなかったのが悪いんだろ。 オライリーなんて初心者から見ていかにも難しそうなのによく買ったな。
- 31 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:51:16 ]
- >>30
べつに理解できないわけじゃないし 内容じたいは全然難しくないんだけど、 これをすぐに応用する機会ってあるのかなあ、 というのが疑問で。。
- 32 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:52:50 ]
- www
- 33 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 02:06:40 ]
- VSというよりそもそもWinに縛られてるような……
- 34 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 03:33:57 ]
- >>29
オライリーの初心者向けは「プログラミングC#」だが
- 35 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 03:55:30 ]
- >>31
www.amazon.co.jp/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AEC-%E3%82%B8%E3%82%A7%E3%82%B7%E3%83%BC-%E3%83%AA%E3%83%90%E3%83%86%E3%82%A3/dp/487311294X/ref=sr_1_1?ie=UTF8&s=books&qid=1232563660&sr=8-1 目次見る限り、基礎の基礎しか書いてないんだから応用する機会しかないような気がするが www.amazon.co.jp/Visual-2005%E9%80%86%E5%BC%95%E3%81%8D%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-Windows-XP-Vista%E5%AF%BE%E5%BF%9C/dp/4839924872/ref=sr_1_37?ie=UTF8&s=books&qid=1232563844&sr=8-37 はじめからこういうの買えば良かったのにチョイス間違えただけだと思われる
- 36 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 04:51:09 ]
- ToString("むしろ、言語仕様のみに限定する事である程度慣れてからも手に取りやすくしてるんじゃ中廊下");
- 37 名前:デフォルトの名無しさん [2009/01/22(木) 04:53:47 ]
- 質問です。VS2008EEです。
UTF8エンコードのbyte列を文字列に変換し、string型変数(var1)に代入しました。 その文字列はXMLのデータです。これをXmlLoadし、UN要素のN0属性の値を取得したいのですが、できませんでした。 しかし、var1をTextBoxに表示させ、そのTextBox.TextをXmlLoadすると、値を取得できました。 何故このようになるかがわかりません。また、どのようにすればTextBoxを介さずに解決するのでしょうか。 var1 = Encoding.UTF8.GetString(mStream.ToArray()); XmlDocument doc = new XmlDocument(); doc.LoadXml(var1); XmlElement root = doc.DocumentElement; XmlNodeList nodelist = root.GetElementsByTagName("UN"); XmlElement UN = (XmlElement)nodelist.Item(0); textBox2.Text = UN.GetAttribute("N0"); ↑がうまくいかないパターンで、 途中に(たとえば1行目直後)textBox1.Text = var1;を挟み、doc.LoadXml(textBo1.Text)とすると値を取得できました。
- 38 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 06:58:57 ]
- >>37
doc.Load(var1) か doc.Load(mStream); でどう?
- 39 名前:37 mailto:sage [2009/01/22(木) 07:21:07 ]
- >>38
レスありがとうございます。 Loadメソッドは XmlDocument.Load(string filename) なので、やはり使うのはLoadXmlメソッドだと考えています 今回の場合、XMLデータがgzipで圧縮されているファイルがあり、その中身を見るプログラムを書いています。 なので、ファイルを一度gzip解凍してからXMLとして読み込まないといけないので、ファイルの直接指定ができないのです。
- 40 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 07:23:35 ]
- zipならともかくgzipならGZipStreamで十分だが
Load(Stream)もあるだろ というかうまくいかないってのは実行できるけどどこかでnullが返るのか 例外が出るのか出るのならどんな例外がどこで出るのか
- 41 名前:プログラム歴2週間 [2009/01/22(木) 12:25:09 ]
- @キャンセルボタンを押す
Aダイアログを出力して確認 OKかキャンセル Bキャンセルなら本処理終了 OKなら引数を渡して画面遷移する プログラムを書きたいのですが、わかりません。よろしくお願いします。
- 42 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 12:28:56 ]
- 何が分からないのかが分からない
- 43 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 12:29:51 ]
- >>42
いや自己紹介だよ。 >>41 こちらこそよろしくお願いします。
- 44 名前:プログラム歴2週間 [2009/01/22(木) 12:39:49 ]
- むしろわかっているのが
protected void ButtonCancel_Click(object sender, EventArgs e) //キャンセルボタン押すとき { Response.Redirect("遷移先のページ名"); //飛びたいページ } だけです。Visual Studio2005を使ってボタンとか配置しました
- 45 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 12:46:16 ]
- >>42-43
こういうくだらない皮肉をすぐにレスする奴って 何が原因でここまで卑屈になったのか疑問。
- 46 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 12:50:50 ]
- どっちが卑屈かな?
- 47 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:00:05 ]
- >>45
こういうくだらない皮肉をすぐにレスする奴って 何が原因でここまで卑屈になったのか疑問。
- 48 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:03:11 ]
- >>41
引数ってなんだ?
- 49 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:27:50 ]
- い・・・、引数
- 50 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:28:36 ]
- if (MessageBox.Show("キャンセルしますか?", "今やってることをやめる", MessageBoxButtons.OKCancel) == DialogResult.OK)
{ Response.Redirect("遷移先のページ名"); }
- 51 名前:プログラム歴2週間 [2009/01/22(木) 13:29:54 ]
- >>48 企業用アプリケーションなので、うまく説明できないのだけど
とあるコードを渡してそのコードを選択する画面に戻る 編集画面ABCDE→Bを選択した(Bを編集したい)→Bの詳細画面 そこで編集ボタン押すと→B編集画面→B編集画面でキャンセルボタンを押すとBというコードを引数としてB詳細画面に戻りたい 初プログラミングで何がなんだかって感じなのですが。
- 52 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:38:41 ]
- 引数でなければならない理由がわからない
どこぞの変数にでも放り込んでおけ
- 53 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:41:32 ]
- ManagedDirectXでもクラスはクラスで参照型ですよね?
{ Texture tex=null; SetTexture(tex); (ブレークポイント) } SetTexture(tex) { tex = new Texture(Static.device, w, h, 0, Usage.Dynamic, Format.A8R8G8B8, Pool.Default); 〜 } (ブレークポイント)のところで止めてもtexがnullになります。 SetTexture内ではその値を保持していますが…
- 54 名前:プログラム歴2週間 [2009/01/22(木) 13:47:08 ]
- >>50 ありがとう。埋め込んでデバックしてみます。
- 55 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:47:19 ]
- SetTexture(out Texture tex)
じゃないか?
- 56 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:52:46 ]
- >>55
これで出来たテクスチャを色々なところで使い回したいのです。 なので Texture getTexture(){ retrun tex } として引っ張ってきたテクスチャをtex.Dispose()とした方が良いのか 全部描画後にtex.Dispose()とした方が良いのか… tex1=getTexture(); (tex1描画) tex1.Dispose(); tex2=getTexture(); (tex2描画) tex2.Dispose(); とした方が良いのか tex1=getTexture(); (tex1描画) tex2=getTexture(); (tex2描画) tex2.Dispose(); とした方が良いのか
- 57 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 13:56:06 ]
- おまえは何を言ってるんだ?
内容がさっきと全然違うじゃないか。
- 58 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:00:35 ]
- >>53で作ったテクスチャ(tex)を保持しておいて
そのテクスチャを>>56でgetTexture()で引っ張ってきて(tex1)描画した直後にDispose();すると 最初に作ったテクスチャ(tex)の方が消えてしまうのでしょうか?
- 59 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:02:40 ]
- tex = が入った時点でインスタンスは別のものになってるよ。
- 60 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:04:59 ]
- ということはtex1.Dispose()としても元のtexの方は生きていろということで良いのですか?
- 61 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:07:17 ]
- ソース見てないから順番がよくわからん、、、
疑問ならメッセージ出力するようにしておいて観察してみるといい。
- 62 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:10:03 ]
- 分かりましたTraceで頑張ってみます。
- 63 名前:デフォルトの名無しさん [2009/01/22(木) 18:55:40 ]
- VC#2008EEでメソッドにかかった時間が表示できるいい感じのプロファイラはないですか?
- 64 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 19:40:20 ]
- チームエディシオン買えよ。
- 65 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 20:31:41 ]
- >>49
それも合ってるんだけどね
- 66 名前:デフォルトの名無しさん [2009/01/22(木) 21:00:21 ]
- C#最強だな・・今までの中で最強だ・・
- 67 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:02:02 ]
- 立ち上がりの速さとかS級だよな
- 68 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:04:20 ]
- これで.netがUNIXで動けば・・・
- 69 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:06:25 ]
- つ mono
- 70 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:05:04 ]
-
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33131&forum=7&7 ここに、Bitmapの内容を読み書きするときは Bitmap.LockBits Marshal.Copy 処理 Marshal.Copy Bitmap.UnlockBits とするのが基本と書かれていますが、コピーしないで処理するのは無理でしょうか?
- 71 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:08:57 ]
- >>70
自分で張ったリンク先くらい全部読んでから来い。
- 72 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:09:44 ]
- Marshal.ReadInt32とか使えばコピーしなくて済むけどコピーするよりも大幅に遅くなる
コピーせずに速いのはunsafeでポインタ使う方法
- 73 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:32:32 ]
- unsafe スコープで
T* p = (T*)bitmapData.Scan0.ToPointer(); T は好きな blittable な型で。
- 74 名前:70 mailto:sage [2009/01/22(木) 22:55:51 ]
- >>71
すいません、読んでいませんでした・・ >>72-73 回答ありがとうございました。 NiVEのサンプルのプラグイン、 Marshal.Copy使っているのをunsafe使ったコードに変えたら速くなるかな
- 75 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 23:04:37 ]
- 処理自体はポインタ使った方が遅くなるよ
コピーのコストが無視できるような重い画像処理なら一回マネージ配列にコピーした方が速い
- 76 名前:デフォルトの名無しさん [2009/01/22(木) 23:09:57 ]
- buttonを押すとちゃんとと舞踊になりました。ご教授ありがとうございました。
- 77 名前:デフォルトの名無しさん [2009/01/23(金) 04:17:17 ]
- 見よう見まねでやっと一つ自分なりの小さなアプリを作ったんだけど、
できあがったファイルに、わけわからんのがあるんだけど。 メインのexeファイルの他に、--.vshost.exeとかいうexeファイルもできてるし --exe.configとかいうファイルが二つも出来ちゃった。 こんなの全部まとめて一つのexeファイルにするのが本当なんじゃないの? 一応アプリは正常に動作してるみたいだけど、何か気に入らない。 将来もっとスキルがあがってちょい立派なソフトを作って人に使ってもらうときに なんかこういうのは格好悪い気がするんだけど。 ベクターのソフトとかは、exe以外だとbinとか、なんかいろいろ意味がありそうなファイル ばかりじゃん。 どうして俺の場合はへんなファイルばかりなの? 何かやり方が間違ってる可能性はない?
- 78 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:22:47 ]
- ない
- 79 名前:デフォルトの名無しさん [2009/01/23(金) 04:54:54 ]
- 以下のコードにおいて、Triangleオブジェクトを参照するt1を作った上で、その参照変数をTriangleクラスの同クラス
のオブジェクトを受け取るコンストラクタに渡して、Triangleオブジェクトt2を作成しているのですが、その際 t2を作る過程で、コンストラクタ内で、t1の“private”なはずのstyleにアクセスできてしまうの理由が分からず 悩んでいます。 同じクラスから生成されたインスタンス同士なら、privateな部分も見れるってことなのでしょうか・・・。 ご教授お願いします。 (独習C#第2版という本の抽象クラスの部分を読んでいるときに出くわした疑問ですが、抽象クラスには関係ないので、 370-373ページのコードを参考に短いコードを書きました。) class Triangle { string style; public Triangle(string s) { style = s; } public Triangle(Triangle ob) { style = ob.style; //t2のインスタンスを作っているとき、t1のprivateなメンバにアクセスできてしまう! } } class Demo { public static void Main() { Triangle t1 = new Triangle("right"); Triangle t2 = new Triangle(t1); } }
- 80 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:15:24 ]
- >同じクラスから生成されたインスタンス同士なら、privateな部分も見れる
うん
- 81 名前:77 [2009/01/23(金) 05:20:26 ]
- 読み返してみてあまりにバカっぽいので、
少しバカ度を下げて質問しなおします。 ビルドによって--.vshost.exeというようなファイルができるのは正常なんですか? あと、初心者から脱した人には、生成される各ファイルがどんな働きをするものなのか たいてい想像できるもんなのですか? --.vshost.exeとか--exe.configはどういうファイルなんでしょうか? 申し訳ありませんが、できるだけ長い回答をお願いします。
- 82 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:26:36 ]
- >>79
privateはクラスプライベートであってインスタンスプライベートではないから
- 83 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:33:43 ]
- >>81
質問する手間でなぜぐぐらない・・
- 84 名前:79 mailto:sage [2009/01/23(金) 05:34:10 ]
- >>80
>>82 なるほど、クラスプライベートですか。お二方、どうもありがとうございました。
- 85 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:39:45 ]
- >>81
VSホスト・プロセス(*.vshost.exe)とは何か? ttp://www.atmarkit.co.jp/fdotnet/dotnettips/410vshost/vshost.html 難しいことは他の人にまかせる。 誰かレスよろ。
- 86 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:58:23 ]
- exe.configはアプリケーション設定のデフォルト設定だったかな
- 87 名前:デフォルトの名無しさん [2009/01/23(金) 10:59:06 ]
- public partial class ページ名: System.Web.UI.Page
って何をやっているんですか?
- 88 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:05:01 ]
- class ページ名 … ページ名 という名前のクラスを宣言します
public … クラスがアセンブリ外から参照できます partial … クラスの定義が複数のファイルにまたがっています : System.Web.UI.Page … クラスはSystem.Web.UI.Pageクラスを継承します
- 89 名前:デフォルトの名無しさん [2009/01/23(金) 11:12:19 ]
- ありがとうございます。おおぉ・・・クラスとかアセンブリとか定義、継承 全部わからない・・・;;
適当にぐぐったのを翻訳すると、 「ページ名という名前のデータと処理を宣言して、コンパイル済みのコード群外から参照でき、複数のファイルのデータと処理を扱い、System.Web.UI.Pageのデータと処理を使えるようにする」 ???????頭が壊れる。これがないと何ができなくなるのでしょう?
- 90 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:15:27 ]
- C#ではすべてのコードはクラス(というか型)の中に書かないといけないので
クラス定義がないと何もできない
- 91 名前:デフォルトの名無しさん [2009/01/23(金) 11:21:03 ]
- そのページ処理すべて=クラス ということなんですかね?
すみません、「クラス定義」すら理解できていません・・・
- 92 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:26:18 ]
- それくらいは理解できてないとC#は使えないので
入門サイトや入門書読んで勉強しましょう
- 93 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:02:03 ]
- Firefoxのオプションダイアログのようなもの(上部のボタンでウィンドウの中身を
切り替える形のもの)を作成したいのですが、 その実装方法がわからず悩んでいます。 MDIにして子フォームのFormBorderStyleをnoneに設定し 切り替える方法でやってみたところ、ちらつきが出てしまいダメでした。 Firefoxのオプションダイアログにかぎらず、ウィンドウがひとつで中の描画だけ 切り替えるようなアプリの実装方法には、MDIの他にどういったものがありますでしょうか? 長文ですみませんが、よろしくお願いいたします。
- 94 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:10:41 ]
- そんな長文でもないと思うよ
・TabControlを使う ・Panelを重ねて置いて、ボタンを押したら該当Panel.BringToFrontで最前面にもってくる とか
- 95 名前:デフォルトの名無しさん [2009/01/23(金) 12:11:30 ]
- public partial class ページ名: System.Web.UI.Page
{ なんらかの処理 } これがクラスで合ってますか?C#ではこれが必要だと。 publicは他のページでこのページの処理を使えるようにしている。 partialの意味がよくわからないのですが、1つのクラスを2つのファイルに分けると何かいいことあるのですか? あと、System.Web.UI.Pageってなんでしょう?ぐぐってもよくわからなかったのですが、そういう処理名ですか?
- 96 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:20:52 ]
- >publicは他のページでこのページの処理を使えるようにしている。
これは違う。クラスの前に付くpublicについては今は気にしなくてもいい。 クラスライブラリを作ったりするときに重要になる。 >1つのクラスを2つのファイルに分けると何かいいことあるのですか? VisualStudioのデザイナが自動生成したコードを分離できる。 >System.Web.UI.Pageってなんでしょう? あらかじめ用意されてるクラスの名前。継承元として指定してる。 こんなところでいちいち聞いててもキリないでしょ? まとめて勉強した方が早いよ
- 97 名前:デフォルトの名無しさん [2009/01/23(金) 12:42:20 ]
- ありがとうございます。キリがなくてもいまいち入門サイトとか本見ても理解できないもので・・・
partialを使う事によって「ページ名.aspx.designer.cs」が生成されるって事ですかね? System.Web.UI.PageはASP.NETが用意していて、それを基盤に動かしたいと。
- 98 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:17:34 ]
- >>97
partialを付けなくても「ページ名.aspx.designer.cs」は生成されるが、 その場合、「同じクラスが2つもあるぞゴルァ!!」と怒られてしまう。 partialを付けることで、二つのファイルに分かれたクラス定義を1つにまとめることが可能になる。 > 1つのクラスを2つのファイルに分けると何かいいことあるのですか コードジェネレータが生成するコードと、ユーザーが編集するコードを分けることで、 ユーザーが編集したコードがコードジェネレータに上書きされてしまう危険性が無くなるし、 ユーザーが編集するコードに余計なものが混じらないので、コードも見やすくなる。 ところで、本見ても理解できないって、どんな本を読んでるんだ?
- 99 名前:デフォルトの名無しさん [2009/01/23(金) 13:28:56 ]
- 知り合いの人が、「これからはC#の時代だから一番つぶしがきくのはC#だよ」
と言ってたのですが、同じ人が、「いつまでもWindowsの時代ではない。他の OSがたくさんでてくるから誰もWindowsなんて使わなくなる」とも言ってました。 これ矛盾してないですか? C#はWindows上でしかコンパイル(というの?作ること)できないできないですよね?
- 100 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:33:21 ]
- LinuxでもOK
- 101 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:33:52 ]
- 全く矛盾してません
|

|