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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2015/10/02(金) 20:50:08.06 ID:IGV3Viy6.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1436344868/

■関連スレ
C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net
peace.2ch.net/test/read.cgi/tech/1443271409/

■コードを貼る場合は↓を使いましょう。
ideone.com/

101 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 05:03:09.47 ID:DnhlxVQi.net]
>>97
ぐぐれよ
www.atmarkit.co.jp/ait/articles/1501/27/news140.html

102 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 10:27:53.18 ID:oggkbSfr.net]
難しそうなので諦めました

103 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 11:13:26.38 ID:oOXSiJnl.net]
なんだ釣りかよ
こんなところで釣りをするな
死ね

104 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 13:55:22.44 ID:PcQrHOFV.net]
ドラッグしながら四角形を描画したいのですが
Rectangleだと始点より右下にしかドラッグ出来ません
全方向にドラッグ出来るようにしたいのですがどうすればいいのでしょうか?

ちなみに今のコードは
g.DrawRectangle(Pens.Black, startPt.X, startPt.Y, endPt.X - startPt.X, endPt.Y - startPt.Y);
で startPtはMouseDown時 endPtはMouseMove時のマウスポインタの座標です

105 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:02:04.52 ID:xPCYj4vK.net]
(x,y,w,h)=(min(sx,ex),min(sy,ey),max(sx,ex)-min(sx,ex),max(sy,ey)-min(sy,ey))

106 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:26:32.90 ID:S6gJKsnz.net]
ifたくさん書けばいい

107 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:43:16.81 ID:PcQrHOFV.net]
>>102
出来ましたスパルタ先生!
まだ初心者なのでminとmaxが何か分からなかったんですがMathクラスだったんですね
ありがとうございました!

108 名前:デフォルトの名無しさん [2015/10/11(日) 17:20:59.98 ID:ZCWGzTkV.net]
xamlでDataContextを入れ替えた時に、そのDataContextのプロパティとバインドされているコントロールの表示が更新される条件はなんでしょうか
依存関係プロパティにすれば変わるのはわかっているのですが、煩雑なのでできれば避けたいと思っています
通常のCLRオブジェクトでは変わらず
INotifyPropertyChangedだと、オブジェクトそのものを入れ替えてしまうと変更を通知するタイミングがなくてうまくいかないような気がします
うまい方法はないでしょうか

109 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 18:39:25.15 ID:o6WYp8Zd.net]
まず実際に試してみれば?



110 名前:デフォルトの名無しさん [2015/10/11(日) 19:03:36.29 ID:ZCWGzTkV.net]
INotifyPropertyChangedを実装したオブジェクトをただDataContextに入れてみましたが出来ませんでした
プロパティの値が変わってないのでどう通知すればいいのかもわからないのですけれども

111 名前:デフォルトの名無しさん [2015/10/11(日) 19:52:52.41 ID:ZCWGzTkV.net]
すみません勘違いしていました
ただのCLRオブジェクトを入れればきちんと反映されました
自作クラスをDependencyPropertyにしてUserControlとバインドさせて
その自作クラスで普通のCLRオブジェクトのプロパティをUserControlの中にあるコントロールとバインドさせたら
入れ替えても反映しなかったということのようです

112 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 19:55:53.79 ID:KbfkRHMw.net]
List<T> array;
が有った時に、
array.Find(x => ...
array.Where(x => ...
などをやる場合に、探索を開始するindexを指定するようなことは出来ませんか?
100番目以降の要素から探索するなど。

113 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 19:58:48.31 ID:EnuaFgoc.net]
>>109
Skip(99)

114 名前:デフォルトの名無しさん [2015/10/11(日) 20:02:59.11 ID:ZCWGzTkV.net]
ideone.com/wQHi11

説明できた気がしないので一応テストコードの一部を貼っておきます
DependencyPropertyをやめてただのCLRオブジェクト

115 名前:ノすると反映されるようになります []
[ここ壊れてます]

116 名前:デフォルトの名無しさん [2015/10/11(日) 20:08:39.48 ID:ZCWGzTkV.net]
ああわかりました
PropertyMetadataの初期値はstaticなので使いまわされるんですね
お騒がせしました

117 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 20:40:49.95 ID:ijISB/Tc.net]
初心者すぎてぶちころされそうな質問してもいいですか?

118 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:24:46.54 ID:lDigt0qz.net]
かもん

119 名前:デフォルトの名無しさん [2015/10/11(日) 21:29:23.08 ID:ijISB/Tc.net]
// xmlファイルを取得
XElement document = XElement.Load("sample.xml");

// ゲーム中のユニット情報をXMLの各要素へ書き込み
var query = (from p in document.Elements("Status")
select ★
query.Attribute("UnitID").Value = gameManager.unitStateList[i].unitID.ToString();



120 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:32:27.27 ID:ijISB/Tc.net]
XElement document = XElement.Load("sample.xml");
var query = (from p in document.Elements("Status")
select ★
query★

すみません途中書き込みしてしまいました
しかもsageませんでしたすみません

LinkToXMLでXML操作を書きたいです
「Status要素内」の「ID」の値を「更新」したい、というのがやりたい事ですが
★の部分はどう書けばいいでしょうか?

121 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:35:12.30 ID:ijISB/Tc.net]
連投すみません、間違えました

やりたい事はStatus要素内にある「全ての」要素について任意の値で更新を行いたい
というものです

多分、一つしか要素がなく、それを更新するのであればFirst()で取って
Attribute(要素名).Valueで更新できると思うのですが、全ての要素の場合はどう書けばいいのかが分かりません

122 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 21:57:00.89 ID:lDigt0qz.net]
foreach( var status in document.Elements("Status") )
{
 status.ID = ...
 status.Hoge = ...
}

123 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 22:30:24.51 ID:o6WYp8Zd.net]
全く些末なことだがElementsじゃなくてDescendantsじゃないかな

124 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:23:06.77 ID:ijISB/Tc.net]
>>118
ありがとうございます。
参考にしてやりたい事自体はできました。

XElement document = XElement.Load("sample.xml");

IEnumerable<XElement> de =
from el in document.Descendants("Status")
select el;
foreach (XElement xmlDocument in de)
{
xmlDocument.Element("id").Value = sStar.id.ToString();
xmlDocument.Element("name").Value = sStar.name.ToString();
xmlDocument.Element("class").Value = sStar.class.ToString();
xmlDocument.Element("setting").Value = sStar.seting.ToString();
}
document.Save("sample.xml");

ただ正直、全然理解できていませんが(何でforeach内のこの処理がdocumentに反映するの?とか)

125 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:37:17.15 ID:o6WYp8Zd.net]
突き詰めれば
class Hoge { public string Value { get; set; } }
foreach (Hoge hoge in list) {
hoge.Value = ...;
}
なんだからlistに含まれる各hogeのValue値が更新されるのは当然

XElement型のxmlDocumentとかやめてくれよ…

126 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:41:50.91 ID:ijISB/Tc.net]
>>121
あーなるほど、意味が分かりました

>XElement型のxmlDocumentとかやめてくれよ…
ちなみにこれはなぜでしょうか?

127 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:52:55.34 ID:o6WYp8Zd.net]
XMLの文脈ではdocumentは要素=elementとは違う意味を持ってる
XDocumentやXmlDocument型が存在する

128 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 23:59:38.42 ID:ijISB/Tc.net]
>>123
なるほど、言われてみれば確かに
何度もありがとうございました

129 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 07:16:36.14 ID:oCa7NkmO.net]
>>110
ありがとうございました。
array.Skip(99) .Find(x => ...
とやると、100番目以降の要素の部分配列が作成されるのは分かったのですが、
その分、処理が遅くなるなどの心配は有りませんか?



130 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 07:21:01.92 ID:CF5nq9ai.net]
>>125
>100番目以降の要素の部分配列が作成される
されない
ラッパーのイテレータが作られるだけ

131 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 07:27:25.83 ID:xL7Yt/Nd.net]
>>109
本題とは関係ないけど、List<T>型にarrayとかつける馬鹿が目の前にいたらしばき倒してると思う

132 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 07:53:05.78 ID:oCa7NkmO.net]
>>126
ありがとうございました。
もう一つ教えてください。
int[] array = new int[] { 1, 2, 3 };
foreach (var i in array)
{
 i = 100;
}
iはforeach繰り返し変数なので割り当てられない
というエラーが出るのですが、どうすれば良いでしょうか?

133 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 07:57:11.52 ID:CF5nq9ai.net]
>>128
普通にループ
っていうかパフォーマンスクリティカルなところでない限りは配列をインプレースで更新したりしないで新しく作っちゃうのが今風

134 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 08:13:56.48 ID:oCa7NkmO.net]
>パフォーマンスクリティカルなところでない限りは配列をインプレースで更新したりしないで新しく作っちゃうのが今風
ということはクリティカルな場面ではforeachの中で配列を更新できますか?

135 名前:デフォルトの名無しさん [2015/10/12(月) 09:45:46.22 ID:4edlKvTH.net]
>>127
なんで?
型で正体分かるでしょ。
その為の静的言語だし。
名前が適切じゃなきゃリファクタリングすればいいだけだし、そんなことぐらいにしか突っ込めないお前の方が馬鹿だと思う

136 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 09:47:15.78 ID:L/1UOsEK.net]
LDPC符号をC#で使いたい。
エンコーダ、デコーダ共に。
C++のsourceなら落ちてるけど、ポインタとかシフト演算使いまくりで移植しにくい。
誰かたすけて

137 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 10:05:29.20 ID:bZxqtO6M.net]
>>131
> 名前が適切じゃなきゃ

そこに突っ込んでるだけだろ
いちいちこまけーこと言うなよ
って言うならわかるけど、問題ないだろって開き直るのもどうかと思う

138 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 10:11:31.09 ID:AiKl9MOi.net]
先生「どうして宿題をやってこなかったんだ!」
生徒「やってなきゃやればいいだけ。そんなことぐらいにしか突っ込めないお前は馬鹿」

139 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 10:44:36.42 ID:FazCyQUV.net]
「犬にねこって名前をつけるのはどうかしている」
「見りゃわかるんだから好きにさせろ」

結論:シーア派とスンニ派の戦いに日本は参加すべきじゃない



140 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 10:51:02.89 ID:L/1UOsEK.net]
( ・ε・)

141 名前:デフォルトの名無しさん [2015/10/12(月) 10:55:27.76 ID:4edlKvTH.net]
>>133
構造が違うだけで言葉自体の意味はさほど変わらない。
そして大半はiteratorでアクセスするし、インデックスのアクセスも同じ。
どこに問題があるのか教えて欲しい。

142 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:00:20.66 ID:ntYAJ4A2.net]
話して分からない馬鹿と会話するな
両方に命令してるからな

143 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:12:27.33 ID:UFM1lTS3.net]
> List<T> array
これでなんで怒ってるのかわからん。
C#のList<T>は普通の配列みたいなやつだよな
LinkedListと勘違いしてるの?

144 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:45:17.20 ID:5cnLZ8t5.net]
分からないなら口を挟むな
うぜえんだよボケナス

145 名前:デフォルトの名無しさん [2015/10/12(月) 11:47:29.04 ID:4edlKvTH.net]
だから問題を指摘しろと。
まぁできないと思うよ。問題ないもん。

146 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 11:52:34.15 ID:oVmZU7gX.net]
list(一覧)と言う言葉がコンピューターサイエンスに於いて
linked listの意味で使われarray(array list)とlist(linked list)という対比で用いられることが歴史的に多かったから発狂したんだろう。
連想配列の意味でハッシュが用いられるようなもの。
.NET Frameworkはそれを正しい意味の名前に直したんだから問題はない。

147 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 13:10:29.56 ID:Tj8wl52C.net]
>>130
できません

>>129が言ってるのは
普通は
int[] array = new int[] { 1, 2, 3 };
for( var i = 0; i< array.Length; i++ )
{
 array[i] = 100;
}
みたいにやれ。
パフォーマンスとメモリが気にならないなら
array = new int[]{ 100, 100, 100 };
みたいんでいいやん ということじゃね

148 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 13:37:05.60 ID:cGJWI2K1.net]
C#って、ガベージコレクションしますか?

149 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 13:49:06.51 ID:oCa7NkmO.net]
>>143
ありがとうございました。



150 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:00:36.92 ID:4P8sYT2X.net]
foreach(var i in (new int[]{1,2,3}).Select(x => 100).ToArray()){

Console.WriteLine(i);

}

151 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:03:51.40 ID:4P8sYT2X.net]
しまった
うえのarrayとかlistとか言ってるの読みながら間違えた
ToListで

152 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:39:30.41 ID:FazCyQUV.net]
せっかく作ったリスト捨ててどうするんだw

153 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:49:02.21 ID:E/TV++i+.net]
Taskのキャンセルがうまくいかないのですがどうすればうまくいくでしょうか? 
一回目はキャンセルできても2回目はなぜかデッドロックしてしまいます;;
以下にソースを張ります。
CancellationTokenSource tokenSource = new CancellationTokenSource();
private void button1_Click(object sender, EventArgs e){
var task1 = Task.Factory.StartNew(() =>{
var task2 = Task.Factory.StartNew(() =>{
tokenSource.Token.ThrowIfCancellationRequested();
for (int i = 0; i <=300000000; i++){
if (tokenSource.IsCancellationRequested){
return 0;
}
}
return 0;
});
if (task2.Result == 0){
task2.Dispose();
}
}, tokenSource.Token);
}

154 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:49:04.48 ID:IrWwZ6fO.net]
同じクラス名で<T>付きと無しの2つのクラスを作る理由は何でしょうか?
一つのクラスにメソッド2つを用意すればいいだけなのに

155 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 15:51:43.51 ID:wjSQdsNO.net]
用途によるだろうけど、普通は、ジェネリック対応のクラスだけで間に合う。

156 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 16:10:18.51 ID:DarJ/ebZ.net]
こういうのは書くことがある
class Hoge { public static Hoge<T> Create<T>(T value) { ... } }
class Hoge<T> { ... }
var hoge = Hoge.Create(...);

157 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 16:37:22.39 ID:S0ggbD4h.net]
>>149
そのコードにデッドロックするところなんて無いと思うけど。
CancellationTokenSourceは一回キャンセル操作したら再使用できないの分かってる?

158 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 17:08:42.71 ID:t3lNWbaJ.net]
>>150
void Method<T,U>(T hoge) where T : Hoge<U>{}
みたいなメソッドだと、Uのせいで型推論が機能しなくなるので、
Hoge<T> : Hogeという形を作っておくと

void Method<T>(T hoge) where T : Hoge{}にできて型推論が効くということだと思う

159 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 17:29:26.78 ID:IrWwZ6fO.net]
うおおおお!説明が難しすぎてわからない!!

ILSpyで見るとHogeクラスとHoge<T>クラスのどちらも
HogeBaseを継承していて
HogeBaseのメソッドは引数付きなんです
そしてHogeクラスのメソッドはbaseに対して
nullを渡しています

HogeBaseをわざわざ2つのクラスに分割する意味がわかりません
HogeBaseをそのまま使わせるようにすればいいじゃないですか!
って思うんですけど、説明された型推論の関係なんでしょうか?



160 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 17:35:54.46 ID:IrWwZ6fO.net]
利用する側は
new Hoge(Action);
new Hoge(Action<T>);
という感じにできたほうが楽じゃありませんか?
それを
new Hoge(Action);
new Hoge<T>(Action<T);
という風に強制させるのはなぜなんでしょう

161 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 18:00:28.51 ID:t3lNWbaJ.net]
>>156
それは多分型推論は関係ないと思うけど、聞いた感じだと
Hoge<T>{ T obj; }みたいなメンバ変数があり、それをHogeBaseに渡しているけど
Hogeの場合はそれがないのでnullを渡してるっていうような
まあ筋の通った話に聞こえるなあ

HogeBaseだとTで型を決められないからキャストとかが不便で
Hogeがないといちいちnullを入れてやらなきゃいけなくなって不便みたいなことなんじゃないの

162 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 18:41:03.54 ID:E/TV++i+.net]
>>153

CancellationTokenSourceが一回しか使えないのは
知りませんでした。
再起は出来ないんでしょうか?
デッドロックですが使い方を間違えてまして正しくは
一度キャンセルをするとTaskが動かなくなるような
感じです。resultで実際sourceにはokと出るようにしてますがなにも反応がなくなりました。
ボタン復帰もしません

163 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 19:08:20.89 ID:wjSQdsNO.net]
>>149
なんでTaskの中でTask作ってんの?
継続タスクにしたいなら、ContinueWithでつなげれば良いだろう。
あと、そのケースなら Task.Factory.StartNewじゃなくて Task.Runを使ったほうがすっきりするだろう。
ちなみにTaskのDispose()は、無理に呼ぶ必要はない。むしろ無闇に呼び出したらタイミングによっては、厄介なことになる。

>>158
CancellationTokenSourceは、一度限り、再度使いたいならCancellationTokenSourceを作り直すしかない。
キャンセルされてたら、tokenSource.Token.ThrowIfCancellationRequested()が例外を吐いて強制終了するだけなんで
ボタンが復帰しないのは当然のこと。

164 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 19:27:19.47 ID:E/TV++i+.net]
>>159

ありがとうございます。
あ、継続タスクでも同じ動作をしますか
すいませんうっかりしていました。
TaskRunは使いたいのですが環境の問題で駄目でした。

キャンセルの方はならパブリックにするのではなく
プライベートにしてやってみてるのですが今度はキャンセルが出来なくなりました。。。
Taskキャンセルが難しいです

165 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 19:51:26.84 ID:wjSQdsNO.net]
>>160 たぶんやりたいことは、こんなところか。

private CancellationTokenSource cancelSource;
private void button1_Click( object sender , EventArgs e ) {
if( this.cancelSource != null )
this.cancelSource.Cancel(); // まだキャンセルされてなければキャンセル要求

this.button1.Enabled = false;
this.cancelSource = new CancellationTokenSource();
var token = this.cancelSource.Token;

Task.Factory.StartNew( () =>{
for( int i = 0; i < 100000; i++ ){
token.ThrowIfCancellationRequested();
Thread.Sleep( 100 );
}
} , token )
.ContinueWith( task => {
// 継続タスク(UIスレッドに切り替わって実行される)
// キャンセルされようとも正常に完了しようとも、例外が発生しても実行される。
this.button1.Enabled = true;
} , TaskScheduler.FromCurrentSynchronizationContext() );
}

private void button2_Click( object sender , EventArgs e ) {
if( this.cancelSource != null ) {
this.cancelSource.Cancel(); // キャンセル要求
this.cancelSource = null;
}
}

166 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 20:15:07.87 ID:E/TV++i+.net]
>>161
ありがとうございます。
参考例は非常に助かります。
早速やって見ます。

167 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 01:05:59.89 ID:41s2HnED.net]
>>161
どうやらCancellationTokenSourceの扱いをミスっていたみたいで
>>149の方の仰るとおりあのやり方ではブロック内で再生成してないので
一回しか扱えずこれで詰まっていたようです。
今回の参考例非常に助かり無事に期待した動きをしています。
ありがとうございました。

168 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 04:02:33.87 ID:P4Y/UxqF.net]
WebClientを使ってDownloadString(url)でhtmlを読み込む場合、
事前にそのurlに合わせてエンコーディングを指定すると上手く行くのですが、
UTF-8を指定してSJISのヘージを読むと当然文字化けしてしまいます。
読み込むページのエンコーディングを自動的に認識するなどの機能はありませんか?

169 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 04:44:41.46 ID:7dOTeKt2.net]
ありません。



170 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 05:03:23.35 ID:P4Y/UxqF.net]
>>165
じゃあどうすれば任意のurlを文字化けせずに読み込めますか?

171 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 06:43:34.47 ID:YzZ6qWCc.net]
そりゃあ…DownloadDataでbyte[]を取ってきて
自分でエンコーディングを推定してStringに変換するに決まってんだろ
言わせんなよ恥ずかしい

172 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 08:45:24.81 ID:xr5l46tc.net]
相手サーバが有能ならDownloadDataした後のResponseHeadersからContent-Typeを参照することもできるぞ

173 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 09:06:53.64 ID:P4Y/UxqF.net]
>>167 >>168
確かにこの方法で出来そうなのですが、URLによっては
リモート サーバーがエラーを返しました: (500) 内部サーバー エラーです
Status ProtocolError
と出る場合が有りますが。

174 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 09:17:24.10 ID:IPzu3dLL.net]
ブラウザでは読み込めるならCook

175 名前:ieが正しく設定されてないとかだろ
決まった値でいいならブラウザのデバッガで通信を監視してその通りにリクエスト送ればいいけど、
セッションが必要ならRubyのMechanizeみたいなの使わないとすぐに動かなくなる
非常に面倒だから本当にそのページが重要なのでない限りは諦めた方がいい
[]
[ここ壊れてます]

176 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 10:52:29.13 ID:P4Y/UxqF.net]
>>170
情報ありがとうございました。
RubyのMechanizeというのを少し調べてみたのですが、C#でこういうのは
ありませんか?

177 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 11:18:31.92 ID:IPzu3dLL.net]
Selenium使えば?

178 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 12:02:46.15 ID:7dOTeKt2.net]
>>168
あとは、一旦、ASCIIで読み込んで、HTMLの<META>タグ判定するぐらいか。

179 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 19:36:16.73 ID:bwylg/oX.net]
初学からc#及び.NETが一人前と言われるレベルになるにはどんな勉強していったらいいかな?

1.オブジェクト指向の基礎を学ぶ(参考書の選択肢はJAVAのが多かったのでJAVAを選択)

2.(今のところWEBがメインなので)HTML,CSS,javascriptの基礎

3.HTTPやTCP/IPの基礎

4.C#3.0以降の技術(LINQ等)

5.デザインパターンを一通り網羅

6.リファクタリングの手法を習得

7.CODE COMPLETE等を読んで基礎固め

8.ASP.NET MVCの基礎、MVC等のレイアー層の理解

今のところこんな感じで進めてるけど
まだまだ足りない所ばかりで成長遅い。

どこかでC言語の勉強もしなきゃいけないと思ってるし...



180 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 19:45:39.68 ID:xI0jh4Ci.net]
まずゴールを明確にする
具体的にどんな仕事をして誰に一人前と言われたいのか
SIerでドカタやるだけならそんだけできたら一人前どころかエースだ

181 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 19:54:30.96 ID:7dOTeKt2.net]
>>174
いろいろ言いたいことはあるが、C#ならサイトなら未確認飛行の人のサイトをお勧めする。
ArrayListとか使ってる入門サイトは、ゴミ以下だ。何の役にも立たないから気をつけろ。
非同期処理でThread(生スレッド)使ってる解説もゴミ以下だから、窓から投げ捨てよう。
C#とJavaと同じとかいう奴に出会したら、にわかなので軽くスルーしよう。

c#使いが覚えるべきことは、
拡張メソッドとIEnumerable<T>の関係性だろう。
 こいつを理解できれば、LINQは、理解できたもの同然。
INotifyPropertyChanged
 WPFなどのMVVMを理解する上で欠かせない。
Taskとasync , await
 非同期関係は、だいたい、これで間に合う。
あと、余裕ができれば、Rx周りに手を出しても良いだろう。

182 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 20:11:30.28 ID:YzZ6qWCc.net]
不法投棄犯の言うことを信用して良いものか…

183 名前:デフォルトの名無しさん [2015/10/13(火) 20:16:29.39 ID:P4Y/UxqF.net]
C#で関数の引数でrefを使えばCのポインタのような
動作になると思うのですが、文字列、配列、構造体、クラスなど
受け渡しする時にrefを使うと効率良くなって動作が速くなりますか?

184 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 20:34:16.68 ID:Jlc+RBff.net]
>>176
そういえばゴールはあまり明確にしていませんでした。
とりあえず目標?は
・新しいシステムを作るときに、良い設計手法、技術を用いてそれを形にできるスキルを身につけたい
・別の会社にいっても、通用するような基礎を身につける

ですね。正直今のSIer企業には、ずっといたくないと考えているので
転職前に早くスキルを身につけたいところです。

>>177
アド

185 名前:oイスどうもです。
LINQ周りの考え方については結構調べました。
INotifyPropertyChangedや非同期関連は、まだ浅いので詰めて行きたいです。
Rxまで早くたどり着きたい...
[]
[ここ壊れてます]

186 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 21:32:56.02 ID:4DY03Csk.net]
>>178
状況次第だ
しかしそのような質問が出てくる時点で君には時期尚早と言える

187 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 21:37:37.13 ID:IPzu3dLL.net]
>>179
個人的には関数型言語覚えるのがお勧めだな
実務で使わないとしても、プログラミングセンスを磨くには最適
細かい技術なんて基礎さえできてればその都度ググればいいこと

188 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 21:53:19.65 ID:3EVIu19y.net]
>>178
C#においては「参照型」と「値型」の区別が重要だよ
参照型はclass、値型はstructやプリミティブ型だよ

189 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 22:14:15.51 ID:JgCmGigF.net]
↑これがこの板を象徴するアスペなレス



190 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 22:20:08.70 ID:P4Y/UxqF.net]
>>182
それは知っているのですが、
そういう前提で、とりあえずrefを入れまくっておけば
速くなることはあっても遅く成る事は無いですか?

191 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 22:24:23.58 ID:IPzu3dLL.net]
>>184
参照型は遅くなる
元々ハンドルを渡してるだけなのにその上余計な間接アクセスが入るから

192 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 22:47:11.18 ID:7dOTeKt2.net]
refの使い道は、そもそも速度を稼ぐためではないからな。
16バイト以上の構造体(値型)であれば、コピーコストを抑えることができるので若干、速くなる。

class A {
  string hoge;
  void Run() => Set( ref hoge );
  void Set( ref string n ) => n = "aaa";
}

こうすれば、Setメソッドで hogeが書き換わるようになるだけ。
これを利用したのがLazyInitializer.EnsureInitializedあたりの遅延初期化あたり。

また、仮に速度向上が見込まれるとして何でもかんでもrefを使うと可読性が悪くなるだけでなく、余計なバグの温床になるだろう。

193 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 23:33:34.52 ID:wNVuw2e3.net]
>>174
1しかやってないけど年収一千万超えてるわ俺

194 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 00:11:28.33 ID:9EHqXlxG.net]
俺はrefを使ったことがない・・・

195 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 00:15:52.35 ID:6bQwcZBR.net]
>>188
それが普通。
少なくとも好き好んで使うような物じゃないでしょ

196 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 01:11:41.08 ID:3R4nuN13.net]
refはメソッド内で引数を書き換えるよってことだから早々使わない
outは使うことがあるかも
複数値リターンがあればいらないんだけどね

197 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 01:41:54.81 ID:KX7liTZS.net]
DirectXやWinAPIをやらないなら使わないよねー

198 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 02:17:16.60 ID:zAeiUrE8.net]
XNAの算術ライブラリはref祭りじゃったのう(遠い目)

199 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 09:46:15.40 ID:Kzgl2aXh.net]
遅延初期化系のメソッド使うときは、ref使う。
System.Threading.LazyInitializer.EnsureInitialized( ref x );みたいなやつ



200 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 10:43:03.02 ID:/REmo4T1.net]
お前らすげー詳しいけどPG?SE?
周りに詳しい人いないから誰にも聞けないわ

201 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 10:59:37.46 ID:H7Zj+QeL.net]
大抵の情報はググったら出てくるだろw






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

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

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