ふらっとVisual C#,C♯,C#(初心者用) Part109
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/11/28(木) 11:27:54.20他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part108
http://toro.2ch.net/test/read.cgi/tech/1383867970/
■関連スレ
C#, C♯, C#相談室 Part81
http://toro.2ch.net/test/read.cgi/tech/1381134494/
■コード貼るなら↓使ってください
http://ideone.com/
0002デフォルトの名無しさん
2013/11/28(木) 11:41:32.050003デフォルトの名無しさん
2013/11/28(木) 19:09:04.85Close()とDispose()についてのお話大歓迎です!
0004デフォルトの名無しさん
2013/11/28(木) 19:15:24.71そろそろ自動荒らしbot止めないか?
0005デフォルトの名無しさん
2013/11/28(木) 19:17:27.62そろそろ自動荒らしbot止めないか?
0006デフォルトの名無しさん
2013/11/28(木) 19:20:21.610007デフォルトの名無しさん
2013/11/28(木) 19:46:51.310008デフォルトの名無しさん
2013/11/28(木) 20:37:47.45どっちにしろアンマネージドなクラスインスタンスを生成するから最後はDispose(Close)しろよって制約なだけじゃん
この認識じゃおまえはまだまだ半人前以下だなプギャーなの?
0009デフォルトの名無しさん
2013/11/28(木) 20:41:36.850010デフォルトの名無しさん
2013/11/28(木) 20:57:24.700011デフォルトの名無しさん
2013/11/28(木) 20:59:51.26Stream系 dispose == close
MSでも分かれてるのだし、クラスやライブラリの設計次第ってことで
0012デフォルトの名無しさん
2013/11/28(木) 21:34:57.77もはやrefだけでなく構造体とかローレベルな機能のほとんどを使わなくなってしまった
0013デフォルトの名無しさん
2013/11/28(木) 21:37:37.630014デフォルトの名無しさん
2013/11/28(木) 21:45:14.26よく考えれば妥当なんだけど
便利なc#の世界観にひたってるとびっくりするよね
0015デフォルトの名無しさん
2013/11/28(木) 21:48:15.40実際はテンポラリの変数にプロパティの値をコピーして関数をコール
関数の呼び出しが終わったら、
テンポラリの変数からプロパティに書き戻しと泥臭いことをやってる
0016デフォルトの名無しさん
2013/11/28(木) 21:51:52.890017デフォルトの名無しさん
2013/11/28(木) 21:56:08.420018デフォルトの名無しさん
2013/11/28(木) 22:18:18.90class MyClassB : MyClassA { }
class MyClassC : MyClassB { }
class MyClassD : MyClassC { }
void Hoge(MyClassA a) { }
void Hoge(MyClassB b) { }
void Hoge(MyClassC c) { }
今こういう書き方してるんですがHogeメソッドって一つにまとめられませんか?
派生クラスならABCDどれでも呼べるような
0019デフォルトの名無しさん
2013/11/28(木) 22:21:41.39これにMyClassBとかMyClassCのインスタンス指定してみた?
0020デフォルトの名無しさん
2013/11/28(木) 22:25:29.87なんでジェネリックなのにいちいち継承かインターフェース使わなならんねん
0021デフォルトの名無しさん
2013/11/28(木) 22:27:25.960022デフォルトの名無しさん
2013/11/28(木) 22:28:53.47void Hoge(dynamic a) { a.SomeMethod(); }
0023デフォルトの名無しさん
2013/11/28(木) 22:30:42.48左様
0024デフォルトの名無しさん
2013/11/28(木) 22:36:38.050025デフォルトの名無しさん
2013/11/28(木) 22:36:49.73それは void Hoge(MyClassB b) { } を書かなくてもAにぶち込めるはずって事ですか?
今テスト用に書いたコードでは行けたっぽくて
元々詰まってたのは「オーバーロードメソッドには無効な引数がいくつか含まれます」って
出てきて絶賛大混乱中なんですが
0026デフォルトの名無しさん
2013/11/28(木) 22:45:38.230027デフォルトの名無しさん
2013/11/28(木) 22:53:52.32多分それです
>>22
それも>>25と同じエラーが出ます
そしてどこに躓いてるか今わかりました
static void Hoge(MyClassA a) {}
static void Hoge(List<MyClassA> a) { }
Hoge(new MyClassD()); ←これは通る
Hoge(new List<MyClassD>()); ←これが通らない
Listの方をしたいんですがどうにかなりませんか
0028デフォルトの名無しさん
2013/11/28(木) 22:58:47.130029デフォルトの名無しさん
2013/11/28(木) 22:59:02.04IList<T>とparams T[]のオーバーロードを併用するとかか
0030デフォルトの名無しさん
2013/11/28(木) 23:10:24.89ググったけどよく分かりませんでした
>>29
paramsの使いドコロが分かりません
結論としてはListではそのままだと無理だから
工夫できないなら諦めろってことですか?
0031デフォルトの名無しさん
2013/11/28(木) 23:12:26.350032デフォルトの名無しさん
2013/11/28(木) 23:16:18.540033デフォルトの名無しさん
2013/11/28(木) 23:24:06.86実際動作するコードで教えてほしいです
0034デフォルトの名無しさん
2013/11/28(木) 23:28:39.54list.ForEach(myClass => Foo.Hoge(myClass));
0035デフォルトの名無しさん
2013/11/28(木) 23:30:07.86Hoge((IEnumerable<MyClassA>)a);
}
void Hoge(IEnumerable<MyClassA> a) {
// 処理
}
0036デフォルトの名無しさん
2013/11/28(木) 23:40:43.89名前 'Foo' は現在のコンテキスト内に存在しません。
>>35
class MyClassA { public string str = "kumaaaaa";}
static void Hoge(MyClassA a) { Console.WriteLine(a.str); } ←出来る
static void Hoge(IEnumerable<MyClassA> a)
{
// 処理
Console.WriteLine(a.str); ←出来ない
}
たすけて
0037デフォルトの名無しさん
2013/11/28(木) 23:44:20.78{
Console.WriteLine(b.str);
}
0038デフォルトの名無しさん
2013/11/28(木) 23:53:24.070039デフォルトの名無しさん
2013/11/29(金) 02:27:11.270040デフォルトの名無しさん
2013/11/29(金) 07:33:51.32static readonly 型 定数名 = [インスタンス生成、基本的な設定]
みたいな感じで
0041デフォルトの名無しさん
2013/11/29(金) 09:33:46.290042デフォルトの名無しさん
2013/11/29(金) 12:33:34.73実行して返すメソッドを定義するって手もあるけど、
型推論が効かなくなるので使いやすくはない。
0043デフォルトの名無しさん
2013/11/29(金) 12:35:56.73Application.Run(new Form() { Text = "simple form", Width=200, Height=100 });
0044デフォルトの名無しさん
2013/11/29(金) 17:04:04.88標準のレポート機能の情報がMSのマニュアル以外はネット上にほとんどないんですが
これって使ってる人少ないんでしょうか?
0045デフォルトの名無しさん
2013/11/29(金) 23:44:24.31アドインが全然ない
ソースソートしてくれるやつほしいのにな
早く対応してくれよ
0046デフォルトの名無しさん
2013/11/29(金) 23:45:01.100047デフォルトの名無しさん
2013/11/30(土) 00:39:36.880048デフォルトの名無しさん
2013/11/30(土) 01:45:16.19あれ便利だったのになー
0049デフォルトの名無しさん
2013/11/30(土) 01:46:11.330050デフォルトの名無しさん
2013/11/30(土) 03:28:25.660051デフォルトの名無しさん
2013/11/30(土) 08:19:47.54CodeSorter is highly customizable extension that allows it's users to sort C# code by various conditions such as names, types (method, class, struct, ...),
visibility modifiers (private, public, ...), constness modifiers (const, static, readonly) and virtuality modifiers (virtual, override, new, ...).
http://visualstudiogallery.msdn.microsoft.com/3482faf3-5519-4df9-afb1-c66f184766ac
たしかに便利そうだが2010で打ち止めか
0052デフォルトの名無しさん
2013/11/30(土) 11:25:55.11brから一気にバイト列を読み込みたいんです。
ReadBytes()だとサイズ指定がありますが
元のストリームがHTMLの為上手くサイズが取得出来ないんですがどのようなやり方があるでしょうか?
・ReadBytes()の代わりに一気に読み込めるメソッドはあるか?
・ReadBytes()に指定するHTMLサイズを取得する為の方法は何か?
どちらかが分かれば解決するのですが。
0053デフォルトの名無しさん
2013/11/30(土) 11:29:24.79無ければMemoryStreamにでもCopyToしてToArrayじゃないの
0054デフォルトの名無しさん
2013/11/30(土) 11:32:19.80それが場合によってはContent-Lengthを返さないサーバがあるらしいので
この方法だと不安なんです…
後者の方法はどうやるのか少しご教授願えませんか?
0055デフォルトの名無しさん
2013/11/30(土) 11:35:29.60{
st.CopyTo(ms);
return ms.ToArray();
}
0056デフォルトの名無しさん
2013/11/30(土) 11:39:29.76C#もポインタは、実際は使えるようで使えないみたいだし。
0057デフォルトの名無しさん
2013/11/30(土) 11:42:30.41バッチリできました!ありがとうございます!
0058デフォルトの名無しさん
2013/11/30(土) 11:42:47.17コンパイル時にクソみたいなヘルパー関数呼び出しが大量に生成されます
あとTry-Catchもゴミまみれになる
0059デフォルトの名無しさん
2013/11/30(土) 11:45:05.840060デフォルトの名無しさん
2013/11/30(土) 11:46:33.99chunkedだと全部読み取るまでコンテンツサイズは判明しない
HTTP1.1の仕様のせい
chunkedがないとgzip等を返す場合一度tmpに出力しないといけなかったので
サーバー側は効率的ではあるのだが
0061デフォルトの名無しさん
2013/11/30(土) 11:48:43.83根拠はildasm
C#も2.0からはILとどんどん乖離していってるけど、VBランタイム相当のC#ランタイムが必要になるのはdynamicだけだね
0062デフォルトの名無しさん
2013/11/30(土) 11:54:22.71そんな問題があったのですね。勉強になりました!
0063デフォルトの名無しさん
2013/11/30(土) 13:30:23.900064デフォルトの名無しさん
2013/11/30(土) 19:16:18.54例えば、以下の様にOptionalAttributeという要素があり、
その場合は子要素を読み込み、要素名を取得したいと考えています。
どのようなメソッドを使えば良いでしょうか?
<AA Name="A1"
Category=""
Index="1">
<OptionalAttribute>
<BType>
<Value>A</Value>
<BType>
</OptionalAttribute>
なにとぞご教授ください。
0065デフォルトの名無しさん
2013/11/30(土) 19:24:39.870066デフォルトの名無しさん
2013/11/30(土) 19:56:19.490067デフォルトの名無しさん
2013/11/30(土) 20:01:07.71まあOptionalかどうかは要素の有無で判断するのが普通だと思うけど
0068デフォルトの名無しさん
2013/11/30(土) 20:03:43.33string s;
の宣言のときにnullをつっこんでるのはなぜ?
どーせ、すぐにsr.ReadLine()によって設定されるのに。
string s = null;
while((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
0069デフォルトの名無しさん
2013/11/30(土) 20:07:00.420070デフォルトの名無しさん
2013/11/30(土) 20:10:39.70007168
2013/11/30(土) 20:12:17.64なんで?
0072デフォルトの名無しさん
2013/11/30(土) 20:16:51.010073デフォルトの名無しさん
2013/11/30(土) 20:18:12.13CやC++のmalloc()、free()名残?
0074デフォルトの名無しさん
2013/11/30(土) 20:19:55.14世の中にはそういう難儀な言語もある
0075デフォルトの名無しさん
2013/11/30(土) 20:20:46.73string s;
Console.WriteLine(s);
だとエラーだし
まあ、コンパイラに警告されない限り代入の必要はないと思うけど
0076デフォルトの名無しさん
2013/11/30(土) 20:21:26.140077デフォルトの名無しさん
2013/11/30(土) 20:23:08.82別に悪い習慣ではないと思うがC#じゃいらんな
0078デフォルトの名無しさん
2013/11/30(土) 20:27:10.410079デフォルトの名無しさん
2013/11/30(土) 20:30:17.67いろいろいじっているうちにそのままになってた
ということもよくある話
0080デフォルトの名無しさん
2013/11/30(土) 20:30:19.24これだろうな
0081デフォルトの名無しさん
2013/11/30(土) 20:31:34.920082デフォルトの名無しさん
2013/11/30(土) 20:35:25.16わずかだけど、null初期化の方がコストも少ないし
0083デフォルトの名無しさん
2013/11/30(土) 20:35:53.520084デフォルトの名無しさん
2013/11/30(土) 20:57:53.970085デフォルトの名無しさん
2013/11/30(土) 20:58:09.940086デフォルトの名無しさん
2013/11/30(土) 20:59:56.170087デフォルトの名無しさん
2013/11/30(土) 21:17:15.48とか書くと初心者にはすごく見えるし初心者以外には馬鹿にされるからおススメ
0088デフォルトの名無しさん
2013/11/30(土) 21:21:37.65煽るな障害者
0089デフォルトの名無しさん
2013/11/30(土) 21:37:57.15わかんないんじゃんw
0090デフォルトの名無しさん
2013/11/30(土) 21:42:05.82っていう理由じゃないかな
0091デフォルトの名無しさん
2013/11/30(土) 21:52:57.750092デフォルトの名無しさん
2013/11/30(土) 21:55:18.86「DataColumnって何ですか」とか言い出すに決まってる
0093デフォルトの名無しさん
2013/11/30(土) 21:56:05.37XDocumentとXElement使ってます
0094デフォルトの名無しさん
2013/11/30(土) 22:00:27.380095デフォルトの名無しさん
2013/11/30(土) 22:01:59.03ありがとうござます!
試してみます!
0096デフォルトの名無しさん
2013/11/30(土) 22:03:26.230097デフォルトの名無しさん
2013/11/30(土) 22:06:13.01OptionalAttributeがないとクラッシュするじゃん
0098デフォルトの名無しさん
2013/11/30(土) 22:07:32.6010行もかからねーだろw
0099デフォルトの名無しさん
2013/11/30(土) 22:20:52.530100デフォルトの名無しさん
2013/11/30(土) 22:22:17.130101デフォルトの名無しさん
2013/11/30(土) 22:24:28.37■ このスレッドは過去ログ倉庫に格納されています