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


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

C#, C♯, C#相談室 Part51



1 名前:デフォルトの名無しさん [2009/02/04(水) 23:26:55 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part50
pc11.2ch.net/test/read.cgi/tech/1229661915/l50

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい

684 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:24:21 ]
usingといえば、StreamReaderが元のStreamまで根こそぎ閉じるの勘弁して欲しいな

685 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:46:42 ]
複数のオブジェクト間で受け渡したりするときはTextReaderを通すことが多いからな

686 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:53:39 ]
>>684
なんで合理的な仕様じゃん。
そう思えないなら、ふらっとスレの議論じゃないけどDispoeのそもそもの意義が
わかってないんでしょ。

687 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:52:53 ]
実際のとこスコープ外れたオブジェクトって即時消去されずに残ってるもんなの?
例えばこういう場合に明示的にDisposeするべきなのか、しなくてもいいのか迷う

private void hogehoge(string fname)
{
  Bitmap bmp = new Bitmap(fname);
  this.pictureBox0.Image = (Image)bmp.Clone();
  //bmp.Dispose();
}


688 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:54:48 ]
そんなに頻繁に呼ばれないのならしなくても問題にはならないだろうけど
できるのにわざわざしない意味がない

689 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:01:27 ]
>>688
できるのにしないのは、C#ってそもそもそういう部分を気にせずにコーディングできるのが強みだから
使わなくなった変数やオブジェクトはGCで自動的に開放してくれるからC++みたいにメモリ管理で苦労しなくていいって触れ込みだった気がする


690 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:10:08 ]
GCはオブジェクトの生存範囲が分からない場合には有効だけど
>>687ではusingを書くか書かないかだけの違いだろ

691 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:10:13 ]
using!using!

692 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:54:24 ]
メモリで大きな画像を持ってると大変なことになりそうだしな 特にサーバなんかでは
必要無くなったら破棄するのが良いよ



693 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:08:44 ]
>>687
.NETのBitmapは参照用途のつもりでもファイルをロックしてしまう
この例では pictureBox0 にクローンしたものを
わたしているから bmp は不要なんだが、Disposeしないと
GCが動くタイミングまで(いつかは不明)ファイルがロックされたままとなり、
結果、ファイルを削除あるいは移動しようと失敗してしまうことがありうる
よって、Disposeしとくべき


694 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:38:22 ]
質問です。

開発上、とあるライブラリを仕様せよとの指令が下りました。

APIマニュアルはそれなりに整備されています。

しかしメソッドはプロパティーにアクセスした時に、
発行しうるExceptionの記述がまったく無いマニュアルでした。

そこでどのようなExceptionが発生するのか調査したいのですが、
ソースを直接参照できないため行き詰っております。

このような場合は、どのような調査を行ったほうが良いでしょうか・・・


695 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:42:46 ]
逆コンパイル

696 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:47:10 ]
C#をC++に変換してくれるツールないっすか?

697 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:47:44 ]
ないよ

698 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:54:11 ]
C#からC++/CLIへの変換なら簡単なのだけどねぇ

Instant C++ (C# Edition) ってのがあるけど、どの程度使える代物なのかは知らん

699 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:26:12 ]
>>695
アドバイスありがとうございます。

C# 逆コンパイルで引っかかったものに Reflector というものがあるのですが、
こちらはこの手の会席で使う定番ツールみたいですね。

700 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:39:19 ]
このサイトってどうなの?

++C++;// 未確認飛行 C
ttp://ufcpp.net/

701 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:46:02 ]
普通に良いサイト

702 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 11:23:56 ]
>>693
.NET3.5はその辺大丈夫みたいよ
3.0からなのか3.5からなのかはわからないけどロックされることがなくなったっぽい




703 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:19:06 ]
一度MemoryStreamにコピーすれば問題ない。

704 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:32:35 ]
>>702
むしろロックしない仕様の方に問題があると思うんだが。。
ロックしない仕様の方を大丈夫と表現する感覚が理解できない。

705 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:37:50 ]
本来,メモリに読み込むときにしかファイルアクセスはいらないだろ

706 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:42:25 ]
メモリを占有するのが嫌だからファイルをロックするんだよw
何言ってんだか。

707 名前:デフォルトの名無しさん [2009/03/13(金) 09:16:06 ]
質問です
メンバ変数hogeとコンストラクタやメソッドhoge()があるとき
this.a = foo;
とやると曖昧と言われてエラーが出るのですが
名称変更せずにこれを解決する方法はないでしょうか?

708 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:31:12 ]
hogeはどこいった
どこに何があるのか分からん
曖昧と言われてエラーって台詞そのものが曖昧

709 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:36:47 ]
707
なにがなんだかわからない

710 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 09:47:16 ]
>>707
ぐだぐだ言わずにソースコード出せよ
お前の稚拙な説明では意味不明だ

711 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 10:19:15 ]
>>707
吹いたwww

712 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 11:14:40 ]
>>707
ワロタ
赤くしとこ



713 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:31:09 ]
うわー恥ずかしい

class hoge
{
int hoge;

public hoge()
{
}
public void hoge()
{
}

public void hoge(int foo)
{
this.hoge = foo;//エラー
}

}

こんな感じなのですが

714 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:35:31 ]
それthis.hoge = foo;の行がなくてもコンパイルエラーになる
名前変える以外にない

715 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:43:43 ]
・メンバ名と型名を同じにはできない
・メソッドのオーバーロード以外で同じ名前のメンバが複数存在することはできない

716 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:50:35 ]
サンクス

717 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:59:09 ]
それを眺めていてふと思ったんだが
class Hogeで、
public static implicit operator Hoge(int intValue)
 return new Hoge(intValue);
でHoge hoge = 1;みたいにしてインスタンスの生成が可能で、

public static implicit operator int(Hoge hoge)
 return hoge.IntValue;
で、int a = hoge;みたいな定義型変換ができるけど、

インスタンスを生成しないで代入するhoge = 1;ってできたっけ
代入演算子はオーバーロードできないから無理なんだっけ?

718 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:05:27 ]
hogeにインスタンスが入ってるかどうかにかかわらず
hoge = new Hoge { intValue = 1; };と同じ
新しくインスタンスを作らずにintValueだけ変えるのは無理

719 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:10:19 ]
さんくす。なら
hoge.IntValue = 1;
とか
hoge.SetInt(1);
とかしかないのか。
どっちかというこ後者かな?


720 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:07:25 ]
public void this(int hoge)

721 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:15:09 ]
あれ?そうだっけ?

public static implicit operator Hoge(int value)

じゃなかったっけ?

Hoge a = 1;

こう使いたいんでしょ?
XNamespace かなんかで使ってるように

722 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:18:11 ]
あごめん、勘違いしてた。生成しないでか。



723 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 22:23:47 ]
ようはseal型にどれだけ近づけるかと、
ポインタ的な操作(delegate等)をどう簡単に実装するかのジレンマだな

724 名前:デフォルトの名無しさん [2009/03/14(土) 08:16:03 ]
TextBox1に入力された数字をInt型のRAMに取り込むにはどうすればいいんでしょうか?

725 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:51:16 ]
int n = Convert.ToInt32(TextBox1.Text);

726 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 08:52:52 ]
ありり

727 名前:デフォルトの名無しさん [2009/03/14(土) 17:27:22 ]
Textboxに数字のみ入力させようと思い、以下のイベントハンドラーとプログラムを用意しました。
するとコンパイルエラーが発生し困っています。
エラーメッセージも以下に用意しました。
私が用意した文のどこがおかしいのでしょうか?



this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

private void textBox2_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
}

デリゲート 'System.EventHandler' に一致する 'textBox2_KeyPress' のオーバーロードはありません。 (CS0123) - C:\Users\masamune\Documents\SharpDevelop Projects\Hello\MainForm.Designer.cs:74,30


728 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:32:39 ]
>>727
KeyPressEventArgs

EventArgs

729 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:34:20 ]
> this.textBox2.KeyPress += new System.EventHandler(this.textBox2_KeyPress);

ここがおかしい。

普通に KeyPress イベント作って、Designer.cs の中身を確認してみれば
いいと思うよ。

730 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:38:49 ]
エラーメッセージの通り。
 
そういうエラーメッセージが出たら、とりあえずMSDNで
System.EventHandlerを検索する。
 
msdn.microsoft.com/ja-jp/library/system.eventhandler(VS.80).aspx
 
デリゲートのシグネチャが
public delegate void EventHandler (
    Object sender,
    EventArgs e
)
であると書いてある。で、textBox2_KeyPressメソッドはこの
シグネチャと一致していない(第二引数の型が一致しない)。
 
そこを直すとまたエラーメッセージが出ると思うので、そのエラー
に関連すると思われるトピックをMSDNで調べる。これを繰り返す。

731 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:43:26 ]
>>728
>>729

即レスあざーす。
早速試してみます。

Cを数年かじっている経験から感覚的に進めてたら急に壁が出来てしまってw

732 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 17:44:04 ]
>>730

あざーす



733 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:44:09 ]
あざーす、って何?

734 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:47:32 ]
Azure の開発コード名

735 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:55:34 ]
アザトースのことだろ

736 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 20:56:34 ]
ASUSだろ

737 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:03:28 ]
パチンコのCMでもりゆきの格好してる奴だよ

738 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 21:10:01 ]
others
つまり(お前の意見じゃあてにならないから)他の意見くれってことだろ

739 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:32:44 ]
>>734-738
ボケのレベルが低い。
俺様がまぢレスしてやる。







安産です。



740 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:34:28 ]
一番レベル低い奴が満を持して登場

741 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:34:49 ]
うん?

742 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 01:35:59 ]
安産ですとか勝訴ですとかこの手のギャグに弱い



743 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 03:38:24 ]
それってギャグなの?

744 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 09:20:26 ]
最近VB.NETからC#に移行しようとしているものですが質問です

C# の public static class というのはVBで言うところの public shared class みたいなもので
ほぼVB.NETのモジュール的な考え方でいいんでしょうか?

745 名前:デフォルトの名無しさん [2009/03/15(日) 09:45:37 ]
SQL SERVER 2005 とか2008のDB作成するときにでてくるパスの変更部分

テキストボックスの横にボタンがあって、1つのセルに組み合わさったようなものをC#で作成したいんですが
何か簡単な方法はありませんか?

Cellを継承して自作するしかないんでしょうか?

746 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:18:35 ]
>>744
たとえば、System.Mathクラスは
public static class なんだけど、じゃあMathクラスはVB.NETのモジュール的なもの?
君のいうところのVB.NETのモジュールが何を指すのか分からんので答えようがないが。
普通に"静的クラス C#"でググったほうが早いよ

747 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:28:01 ]
>>746
VBとC#の両方知ってる人なんて山ほどいるんだから、知らなければ
黙ってればいいと思うんだが。

おれは、ぐぐって
www.rocksthoughts.com/blog/archive/2008/03/11/extension-method-implementation-differences-between-c-and-vb.net.aspx
これ見て、ふうんと思ったが、<Extension()>なんてアトリビュート
知らないから、コメントしなかった。

748 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:33:18 ]
>>747
偉い偉い立派だよ君
レスしなければもっと偉かったのにね!

749 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 11:52:28 ]
>>747
おいおい、2つのコードやページのタイトルを見ればExtensionが属性がなんなのか想像がつくだろうに。

750 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:07:30 ]
>>748,749
746さん、ちーす


751 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:10:50 ]
何このスレ・・・

752 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:13:27 ]
>>749
そりゃ想像はできるさ。ぐぐって見つけて概要を想像したのを、
そのままここに書いたらただの知ったか妄想じゃないか。
要するに、ちゃんとした回答ができればいいけど、
できないから書かなかったということ。

その次にこのスレに来たら、変な回答しかついてなかったから、
あえて留保(=言い訳)付でリンクを提示した。
リンクは提示したんだから、質問者が読みたければ、それを読んで
自分で判断すればいい。



753 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 13:21:39 ]
ExtentionAttributeなんかC#しかやってない奴はあんまり知らんだろうな

754 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:30:03 ]
>>752
というかそもそも元の質問が拡張メソッドの話でないのだから、
蛇足になる拡張メソッドについて言及しているところは避けようよ。

>>744
少なくとも構文上は、ほぼVB.NETのモジュールのような存在という考え方でいい。
細かい話をすれば、C#の視点から見たVB.NETのModuleとは、
単にStandardModule属性付きの静的クラス。

そもそもVB.NETでClassにSharedは付けられない気がするけど。

755 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:33:43 ]
>>752
ごちゃごちゃ言わずに、
黙ってればいいのに

756 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:51:03 ]
オマエモナー

757 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:11:22 ]
まぁまぁ、ぬるぽぬるぽ

758 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 19:18:01 ]
がっ

759 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:29:10 ]
Type 型のインスタンスからその型のデフォルト値を取りたいんだがどうすればいい?
つまり default(T) みたいなことをしたいんだが。

760 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 00:48:09 ]
Assembly.GetAssembly(typeof(T)).CreateInstanceで行けるかな。試してないけど。

761 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:13:14 ]
>>760
それだとインスタンスを生成するのでだめなんだ。

762 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:16:05 ]
intとかstringとかdatetimeでもデフォルト値ってとれたっけ



763 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:18:46 ]
>>762
数値や列挙型だと0、参照型だと null、構造体 T だと new T() と同じになる。

764 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:24:40 ]
インターフェースの場合とか、列挙体の場合とか考えると、結構ややこしいな。

765 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:26:49 ]
これでいけるんじゃまいか。
object o = t.IsValueType ? Activator.CreateInstance(t) : null;

766 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:27:37 ]
Nullable<T>は?

767 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:39:06 ]
>>766
Activator.CreateInstance()がnullを返す。

768 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 01:42:27 ]
>>765でいけたよ。サンクス。

769 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:47:55 ]
SortedList<double, int> 型でデータがあるとして、
入ってるキーのうち「X以下で最大の数」ってのを
2分法で求めたいんだが自分で書くしかない?
そういう関数があってもよさそうなもんだが。

770 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:57:34 ]
そんな関数大量に作られても邪魔だろ。

771 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:35:23 ]
>>769
ttp://msdn.microsoft.com/ja-jp/library/system.array.binarysearch(VS.80).aspx

772 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:51:44 ]
>>771
あんがと



773 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:33:53 ]
>>771
特定の値を探すんならそれでいいだろうけど、
X以下で最大の数 みたいに特殊な条件で検索するには向かないのでは

Array.BinarySearchでなくとも、List.BinarySearchやSortedList.ContainsもO(log n)

774 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:50:51 ]
じゃあどうすればいいの

775 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 01:58:37 ]
自分で書けばいいじゃないか

776 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:41:16 ]
>>773
汎用性を求めているわけじゃないんだから、
Xのインデックスを求めてそこから範囲指定BinarySearchじゃないかな

777 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:55:39 ]
ちょっとC#ってくくりじゃない質問なんですけど、
ブログとかに使われるWEB認証の歪んだ数字の画像なんだけど
あれってそのURLにアクセスする度に表示される画像変わるじゃん。

サーバー側はどうやって自分が出力した画像に書いてあるナンバーと
クライアントが打ち込んだ数字のナンバーが合致しているかを認証するんだろう。

この仕組みご存じの方居ますか?

778 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:02:28 ]
データベースに保存しとくだけ。

779 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:12:10 ]
データベースに保存(笑)

780 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:18:26 ]
すれち

781 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:29:27 ]
>>777
usernameごとに認証ナンバーを発行してるだけ

782 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:36:11 ]
大体はセッションに保存じゃね?
詳細はCAPTCHAでググるよろし



783 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 14:48:42 ]
>>781
あー、なるほど。
納得!

じゃあ認証されないって事は
やっぱりリクエスト2回投げちゃってるのかなー。

>>782
有益な情報ありがとう。
調べてみます。

784 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 20:17:52 ]
PHPのpreg_replace_callback()みたいな実装ってある?
正規表現で複雑な処理がしたくて・・・






[ 続きを読む ] / [ 携帯版 ]

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

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