2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C#, C♯, C#相談室 Part61

1 :デフォルトの名無しさん:2010/07/25(日) 06:49:15
前スレ
C#, C♯, C#相談室 Part60
http://pc12.2ch.net/test/read.cgi/tech/1277576240/

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

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

2 :デフォルトの名無しさん:2010/07/25(日) 11:28:02
何で前スレ落ちてんの?

3 :デフォルトの名無しさん:2010/07/25(日) 16:05:28
>>2
985辺りになると圧縮時に自動落ちする

>>1乙なんたらかんたら

4 :デフォルトの名無しさん:2010/07/25(日) 19:13:20
>>3
さんきゅーっす

5 :デフォルトの名無しさん:2010/07/26(月) 09:36:14
>>1
同一Panel上にある全てのコントロールに同じ処理をさせる方法を誰かご教授願います
例えば同一Panelにある全てのListBoxに同じアイテムを追加する、みたいな

6 :デフォルトの名無しさん:2010/07/26(月) 10:30:17
foreach (Control control in Panel.Controls) {
 if (control is ListBox) {
  ((ListBox) control).Items.Add();
 }
}
こんなんでいけない?

7 :デフォルトの名無しさん:2010/07/26(月) 19:01:51
IEnumerable<ListBox> query = Panel.Controls.OfType<ListBox>();
foreach(ListBox lbox in query){
lbox.Items.Add(item);
}
こう書けた

8 :デフォルトの名無しさん:2010/07/26(月) 21:55:51
下のようなC++のコードはC#のジェネリックではどう書けばいいのでしょうか?

template<typename T> T plus( T v1, T v2 ) { return v1 + v2; }

int i1 = 1, i2 = 2
int i_result = plus( i1, i2 );
short s1 = 1, s2 = 2
short s_result = plus( s1, s2 );

9 :デフォルトの名無しさん:2010/07/26(月) 22:02:24
書けない

10 :デフォルトの名無しさん:2010/07/26(月) 22:18:13
似たようなのは書けるでしょ。

11 :デフォルトの名無しさん:2010/07/26(月) 22:39:04
int系の似たようなものはひとつにまとめたかったのですが了解しました。
ありがとう。

12 :デフォルトの名無しさん:2010/07/27(火) 03:36:23
>>6
>>7
thx!


13 :デフォルトの名無しさん:2010/07/27(火) 09:22:02
>>8
(dynamic)v1 + (dynamic)v2
糞遅いけどもし後でホットスポットになったらそこだけオーバーロードに書き直せばいいと思う

14 :デフォルトの名無しさん:2010/07/28(水) 21:56:07
>>13
なるほど。参考にします。
ありがとう。

またジェネリックなんですが、これは出来るでしょうか?
それともこういったテンプレートパターンは捨てるべきなんでしょうか・・・。

public void Func(int data){ 何らかの処理 }
public void Func(string data){ 何らかの処理 }
・・・
型違いのFuncがいっぱい
・・・
public static void Test<T>(T[] array){
共通する処理
foreach (T item in array)
Func(item);
共通する処理
}


15 :デフォルトの名無しさん:2010/07/28(水) 23:22:01
Action<int> intAction = (i) => { 何らかの処理 };
Action<string> stringAction = (s) => { 何らかの処理 };

intArray.ToList().ForEach(i => intAction(i));
stringArray.ToList().ForEach(s => intAction(s));

16 :デフォルトの名無しさん:2010/07/29(木) 00:29:30
ふむふむ。そういう書き方がありましたっか。
後で試して見ますが、上とあわせると・・・えーとこうなるのかな。

public static void Test<T,ActionT>(T[] array,ActionT){
 共通する処理
 ntArray.ToList().ForEach(i => ActionT(i));
 共通する処理
}




17 :デフォルトの名無しさん:2010/07/29(木) 18:48:07
smtpclientでメール送信する際に、
content transfer encodingがquated printableになってしまい困っています。

7bitにする方法を検索して、
http://dobon.net/vb/dotnet/internet/smtpmailquotedprintable.html
上のサイトにたどり着いたんですが、このコードを実際に書くと
メソッドのように使用することは出来ませんというエラーが出てビルドが出来ません。
7bitにして送信する方法を教えていただけないでしょうか。

18 :デフォルトの名無しさん:2010/07/29(木) 19:01:00
お願いします

http://hdl.handle.net/2237/10514

この記事の発生(Lシステム)の部分てどうやって作ればいいですか?
めんどくさかったらアプローチだけでも

19 :デフォルトの名無しさん:2010/07/30(金) 13:49:53
>17
(→[

20 :デフォルトの名無しさん:2010/07/30(金) 15:50:48
あるサイトで
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
の設定をしておくとOnPaintメソッドでの描画がダブル・バッファリングされるとあります。

そこで、3つほど質問があります。

質問 (1) 上の設定で次の2つの描画方法でもダブル・バッファリングは有効でしょうか?

(a)PitureBox1と同サイズのBitmapオブジェクトを作成してPictureBox1.Imageに設定して
  おき、Bitmapオブジェクトに図形を描画したのちrefresh()を呼び出す。

(b)Paintイベントで呼び出されるハンドラPictureBox1_Paint内で図形を描画する。

つまり、

(a)ではrefreshの中でOnPaintが呼び出されるかどうか?、
(b)ではPictureBox1_Paintが呼び出された後にOnPaintが呼び出されるかどうか?

ということです。

質問(2) (a)(b)の方法でOnPaint自体は呼び出されるが、OnPaintをOverride
してここに図形を描画しないかぎり、ダブルバッファリングは有効にならない
でしょうか?

質問(3) (a)の方法自体がダブルバッファリングと同等だから上記の設定は必要ない
でしょうか?

いろんなサイトを見ているうちに、頭が混乱して質問が要領を得ていないと思いますが
よろしくお願いします。

21 :デフォルトの名無しさん:2010/07/30(金) 16:19:11
>>19
ありがとうございます。
ただ、ヘッダにquoted printable も残ってしまい文字化けは治りませんでした。

22 :デフォルトの名無しさん:2010/07/30(金) 17:22:07
Cでランダムに値を1万個くらい発生させてそれをエクセルで表にしたいんですけど
コマンドプロンプトの画面では300行までしか表示されなくて、出た結果全てをエクセルに移したいんですけどどうすればいいでしょうか?

23 :デフォルトの名無しさん:2010/07/30(金) 17:29:09
リダイレクトでいったんテキストに書き出す。

24 :デフォルトの名無しさん:2010/07/30(金) 18:23:57
>>20
(a)の方法は二重にダブルバッファリングしていて無駄。
しかもやり方によってはAccessViolationExceptionや大量の描画が発生する
コントロールのダブルバッファリングを有効にした上で、OnPaintとかPaintイベントで
引数のe.Graphicsを使って描画するのが一般的かな

25 :デフォルトの名無しさん:2010/07/31(土) 01:29:02
>>23
調べたらできました。ありがとうございます!

26 :デフォルトの名無しさん:2010/07/31(土) 08:44:27
>>24

>>20です。ありがとうございます。返事が遅くなってすみません。
教えて君で申し訳ないですが、さらに確認させてください。

>(a)の方法は二重にダブルバッファリングしていて無駄。

これは
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
を設定したときの話でしょうか? つまり >>20 の質問(3)はyesでしょうか?

>コントロールのダブルバッファリングを有効にした上で、OnPaintとかPaintイベントで
>引数のe.Graphicsを使って描画するのが一般的かな

OnPaintはPaintイベントが発生した時やRefreshが呼び出されたときに
呼び出されると考えてよいでしょうか?

描画したいのは頂点(黒丸)と辺(直線)からなる3次元フレームワーク(グラフ構造)
です。図形データはList<T>などで管理しておき、これに基づいて描画しなければ
なりません。さらにマウスでこのフレームワークを回したり(視点を変更する)、
拡大縮小するので画面のチラツキがないようにしなければなりません。

>>20の(a)の方法でフレームワークを描くことも可能でしょうが、やはり
OnPaintとかPaintイベントハンドラで描画するのが吉のようですね。

27 :デフォルトの名無しさん:2010/07/31(土) 08:49:01
ちらつき以前に描画のもたつきが問題になりそう
DirectXやWPF使ったら

28 :デフォルトの名無しさん:2010/07/31(土) 09:04:59
MFCで似たようなソフトを作成した時は1万個程度の頂点の
表示はちらつきなしで問題なくリアルタイムに表示できました。
でも、C#だと遅くなるかなぁ。

DirectXの2Dは知らないけど、3Dでは直線を引く
という基本的な関数も用意されてません。OpenGLでは
用意されているかもしれませんけど。でも、今更、Win32API
やMFCはいじりたくないです。

WPFは...もうこれ以上、マイクロソフトが作ったライブラリに
付き合うのにもうんざりです。

29 :デフォルトの名無しさん:2010/07/31(土) 11:14:21
>>26
もういらんかもしれんけど

this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
はコントロールまたはシステムが実装しているダブルバッファリング機能を有効にしている。
その上でBitmapに描画してからコントロールに転送すると(手動でダブルバッファリングすると)、

描画⇒バッファ(Bitmap)→コントロールによるイメージの検証→バッファ(コントロールまたはシステム、複数の可能性あり)→バッファ(画面)

みたいな流れになってしまい、トリプル以上のバッファリングになる。ってことで質問(3)はyes
でもダブルバッファを有効にしなくてもImageプロパティに設定した内容はちらついたりしないから上記コードがなくてもImageプロパティからの
転送はダブルバッファされているかもしれない(内部の実装は知らん)


OnPaintの説明見ると「Paintイベントを発生させます」とか書いてるけど、
再描画の要求→OnPaint→Paintイベントの発生

って感じになっている。
RefreshとかEndUpdate、Updateメソッドは再描画の要求を行う。

30 :26:2010/07/31(土) 12:02:05
>>29


おーーっ! 非常に明快な説明、ありがとうございます。


31 :デフォルトの名無しさん:2010/07/31(土) 14:35:41
>>16
.ToList().ForEach(ActionT);
とか
Array.ForEach(ntArray, ActionT);
とかでいいじゃん。

32 :デフォルトの名無しさん:2010/07/31(土) 15:34:10
>>31
いや、出来ればジェネリック関数に引数だけを渡せば
ActionTを指定しなくても引数の型を判断させて
適切な関数を呼び出せるようにしたかったのです。
Test<T>の「共通する処理」を一箇所だけに書くようにして。

どうにもうまくいかなかったので教えてもらった方法でFunc
渡すことにしました。
ありがとう。


33 :デフォルトの名無しさん:2010/07/31(土) 16:24:52
>>32
いえいえ。

34 :デフォルトの名無しさん:2010/07/31(土) 17:18:29
object result = some_method();

こう↑書けるメソッドで、例外をキャッチしなければならない時って
こう↓書かなきゃいけないの?

object result = null;
try{
 result = some_method();
}catch{
 //処理
}

resultの宣言と代入が分離したり、宣言時にnullを代入しなければならなかったり、煩わしいんだけど。
いい方法ない?

35 :デフォルトの名無しさん:2010/07/31(土) 18:16:44
>>32
こういうアプローチが一番近いと思う
class FuncHolder<T> { public static Action<T> Func; }
public void Func(int data){ 何らかの処理 }
public void Func(string data){ 何らかの処理 }
FuncHolder<int>.Func = Func;
FuncHolder<string>.Func = Func;
public static void Test<T>(T[] array){
共通する処理
foreach (T item in array)
FuncHolder<T>.Func(item);
共通する処理
}
登録はリフレクション使ったりして工夫すれば自動化できるはず

36 :デフォルトの名無しさん:2010/07/31(土) 18:24:45
>>34
たぶん一般的な方法じゃないと思うけど、
俺はメソッドで例外を投げる代わりに以下のようなメンバを持つFunctionResult<T>
みたいな型を作ってそれを返すようにしてる。

- bool Success { get; }
- Exception Exception { get; }
- T Result { get; }
- static implicit operator T(FunctionResult<T>) {}

37 :デフォルトの名無しさん:2010/07/31(土) 20:38:29
メンバ名はSuccessよりSucceededのほうがよろしいかと

38 :デフォルトの名無しさん:2010/07/31(土) 20:49:22
>>37
前は俺もそう思ってたんだけど、System.Text.RegularExpressions.Groupに
Successってメンバがあるのを発見してからは考えを改めた。

39 :デフォルトの名無しさん:2010/08/01(日) 09:07:06
プロパティ名には、名詞または名詞句を使用します。
Pascal 形式を使用します。
ハンガリー表記法は使用しないでください。
基になる型と同じ名前でプロパティを作成するようにしてください。

40 :デフォルトの名無しさん:2010/08/01(日) 09:16:43
それboolは例外だろ
IsEnabledとかHasValueとか普通にある

41 :デフォルトの名無しさん:2010/08/01(日) 12:51:07
ですね

42 :デフォルトの名無しさん:2010/08/01(日) 13:06:41
.NETのクラスライブラリ設計P.57より
オプションで、付加価値がある場合のみですが、Boolean型のプロパティにプレフィックス"Is"、"Can"、または"Has"を使用することも可能です。
たとえばCanReadはReadableよりも理解しやすいものです。
しかしながら、Createdは実際にIsCreatedよりも読みやすいものです。
プレフィックスを持つことは多くの場合、特にコードエディタ内でIntelliSenseに表示される時に、冗長すぎ、かつ不要です。
MyObject.Enabled= と入力してIntelliSenseでtrueまたはfalseを選択するのと、MyObject.IsEnabled=と入力するのは、明白さではどちらも同じ程度ですが、
後者の名前のほうが冗長です。

Boolean型のプロパティおよび関数に対する名前の選択において、ifステートメント内でのAPIの一般的な使用方法のテストを検討します。
そのような使用方法のテストは、API名の単語の選択および文法(たとえば、能動態か受動態か、単数形か複数形かなど)が英語の
フレーズとして意味があるかどうかを明らかにするでしょう。たとえば、以下の2つは、

if(collection.Contains(item))
if(regularExpression.Matches(text))

は以下の2つよりも自然に読むことができます。

if(collection.IsContained(item))
if(regularExpression.Match(text))

同様に、それ以外のすべてについても、受動態よりも能動態を優先して選択すべきです

if(stream.CanSeed) //こちらのほうが良い
if(stream.IsSeekable)

43 :デフォルトの名無しさん:2010/08/01(日) 13:07:42
つまりどういうことだってばよ?

44 :デフォルトの名無しさん:2010/08/01(日) 13:18:36
コピペ君って馬鹿だな、ってことだよ。
こういうコピペ君に限って間違いなくいまどろドヤ顔してるよw

45 :デフォルトの名無しさん:2010/08/01(日) 13:22:37
Bool型においては"Is"、"Can"、"Has"などのプレフィックスをつけることができる。
ただし冗長的になるため、能動態か受動態か、単数系か複数形かに注意して動詞で表現したほうが見通しが良い。

これにしたがって>>36を再度考えると
SuccessよりもSucceededのほうが良いな。

>>34から見るとインスタンスが生成されたかどうかをみたいようなので、アクセス可能かどうかって表現にしたほうがいいかもね。

46 :デフォルトの名無しさん:2010/08/01(日) 13:27:47
>>36
それ、Cとかの時代に逆戻りな気もするんだけどもなぁ。
戻り値うけた側で if (ret.Success) とかしないといけないの。
if 文書かなかった場合、たぶん ret.Result.Xxx() とかやった時にヌルポになって初めてエラーなの思い出すしわけだし。

Perl 6 でそれと同じような感じの例外構文追加されたらしいけども・・・


47 :デフォルトの名無しさん:2010/08/01(日) 13:48:43
>>46
それ、if云々をtryに置き換えてもまったく同じようなことが言えるのでは。


48 :デフォルトの名無しさん:2010/08/01(日) 13:57:10
C#の例外処理機構の問題点(っていうほど大げさじゃないけど)は、

 - ドキュメントを見ないとメソッドが例外を投げるかどうかすら分からない。

 - 例外の詳細(例外オブジェクト)が必要がない(失敗したら単にnullを返してくれればいい)
  ような場合でもtry{...}catch{...}を書かなければならないのは鬱陶しい。

だと思う。
>>36はそれに対する悪あがき。もちろんあんまりエレガントじゃないのは分かってる。

49 :デフォルトの名無しさん:2010/08/01(日) 14:00:51
null返してもらってifでnullチェックするとか言わないよな?

50 :デフォルトの名無しさん:2010/08/01(日) 14:01:58
言わないよな、とか誰に喧嘩売ってるんだこら

51 :デフォルトの名無しさん:2010/08/01(日) 15:02:24
>>48
前者はともかく、後者はよくわからないなあ。
それは、ようするに握りつぶしたいって要求に等しいよね。
例外オブジェクトが必要とかじゃなくて、処理に失敗したから例外を投げてるわけで。
もちろん、握りつぶしたい的なシチュエーションはあるけど、
それはTryParseのような成否を返すメソッドで作れって話だし。

52 :デフォルトの名無しさん:2010/08/01(日) 15:17:24
話の流れ切っちゃって悪いけど、
デバッグ時に外部のクラスライブラリのどのコードで例外が発生したかを調べるには、
外部のクラスライブラリのpdbファイルが必要?

53 :デフォルトの名無しさん:2010/08/01(日) 15:56:50
>>51
重要なのは、同じメソッドでも呼び出す側の都合によって
きちんと例外状況を把握したい(例外オブジェクトが欲しい)場合と、
単に成否のみ判定できればそれで必要十分な場合とがあるということ。

54 :51:2010/08/01(日) 16:34:02
>>53
その呼び出し側の都合で、ってのが握りつぶすに等しいわけで。
例外が出ても、成否のみで続行可能なら、メソッド側が
「ParseとTryParse」のように、二つのメソッドを用意しておくべき。

55 :デフォルトの名無しさん:2010/08/01(日) 16:41:59
>>47
少なくとも、try/if がなかった場合、例外が出る場所が問題の発生個所と一致する。
>>46 みたいなやり方だと、本来のエラーの場所と違う場所でヌルポ。

>>48
ドキュメント見ないとって問題はその通りだけど、
かといって throws 使うと catch(Exception) が横行するだけだしねぇ。

失敗時に null 返せばって話は、そういうメソッド書けばいいじゃない。

56 :デフォルトの名無しさん:2010/08/01(日) 17:39:16
以下のコードでmixiにログインしてhtmlを取得できるようですが、
他のサイトでも同様にログインしてhtmlを取得したい場合、
「ここの部分」場所の値はどのようにして取得したらよいのでしょうか?
もちろんIDとかパスは分かっています。

class CustomWebClient:WebClient
{
private CookieContainer cookieContainer = new CookieContainer();

// WebClientはWebRequestのラッパーにすぎないので、
// GetWebRequestのところの動作をちょっと横取りして書き換える
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = cookieContainer;
}
return request;
}
}

// WebClientを継承してちょっと書き換えてやれば一番簡単
var cwc = new CustomWebClient { Encoding = Encoding.GetEncoding("euc-jp") };
cwc.UploadValues("https://mixi.jp/login.pl", new NameValueCollection
{
{"next_url", "/home.pl"},        //ここの部分
{"email", "める"},        //ここの部分
{"password", "ぱす"}        //ここの部分
});
var result = cwc.DownloadString("https://mixi.jp/show_log.pl");
Console.WriteLine(result); // アクセスできてるのを確認

57 :デフォルトの名無しさん:2010/08/01(日) 18:38:29
HTMLソース読むとかFiddler使うとか

58 :デフォルトの名無しさん:2010/08/01(日) 19:55:52
>>52
そう
でもメソッド名くらいならスタックトレースに書いてある

59 :デフォルトの名無しさん:2010/08/01(日) 20:37:02
>>57
ありがとうございます。
ソースを解析することでうまくいきました。

60 :デフォルトの名無しさん:2010/08/01(日) 20:40:54
XElement.Parse メソッドで質問があります。
HTMLを上記のメソッドに渡すと
EntityName を解析中にエラーが発生しました
と例外が発生しました。
半角のスペースがタイトルに含まれていたからなのかなと推測しました。
一般的にこういう場合はどのようにしてXElementで解析したらよいのでしょうか?


61 :デフォルトの名無しさん:2010/08/01(日) 20:44:18
その原因に即して修正してから読み込むしかないだろ
一般的にはHTMLは正しいXMLじゃないんだから無理というしかない

62 :デフォルトの名無しさん:2010/08/01(日) 20:47:42
>>60
つSgmlReader

63 :デフォルトの名無しさん:2010/08/01(日) 21:05:07
>>54
>「ParseとTryParse」のように、二つのメソッドを用意しておくべき。
そういう「べき論」を唱えてもいいけど、何故そうすべきなのかと聞かれたときに
合理的な理由を与えられる?

ただの教条主義じゃないのそれ。

64 :デフォルトの名無しさん:2010/08/01(日) 21:12:30
>>55
論点がズレてるなあ。

そのメソッドは常に成功するとは限らない(例外が発生する可能性がある)
ことを示すためにわざわざ妙な値を返してるのに、それでもエラーを想定した
コートを書かない場合を想定しなければならない理由が分からない。

百歩譲ってそういう「馬鹿で怠惰な」プログラマを想定すべきだとして、
「例外が出る場所が問題の発生個所と一致」しないことが、あえて取り上げる必要がある
問題だろうか。

65 :デフォルトの名無しさん:2010/08/01(日) 21:14:46
>>60
HTMLのパーサを自前で書くべし
ttp://japan.internet.com/developer/20051115/25.html

66 :デフォルトの名無しさん:2010/08/01(日) 21:30:53
>>60
mshtml使う手もあるぞ

67 :デフォルトの名無しさん:2010/08/01(日) 21:40:03
>>64
うん、あえてどころか、まじめに取り上げるべき大問題。

68 :デフォルトの名無しさん:2010/08/01(日) 21:46:57
>>67
ではその理由をどうぞ。
どうして大問題なの?
NullReferenceExceptionが発生した理由を推定できないプログラマがいるから?

そんな奴はいないと思うが、いるとしてどうしてそんな「馬鹿でどうしようもないプログラマ」
を想定する必要があるのでしょう。

69 :デフォルトの名無しさん:2010/08/01(日) 21:56:56
距離はなれてたらしんどいよ。
あと、そんな馬鹿でどうしようもないプログラマも相手にするのがC#だろ。

70 :デフォルトの名無しさん:2010/08/01(日) 22:03:33
>>69
>距離はなれてたらしんどいよ
それは、そういうことが起こるとしたら変数の初期化(または変数への代入)と
その変数の使用を意味なく離して書く悪しきプログラミングスタイルに起因する問題であって、
>>36的な方法を取ったことに起因する問題ではないでしょ。

>そんな馬鹿でどうしようもないプログラマも相手にするのがC#だろ
もちろんフールプルーフに作ることは大事。
でも、フールプルールとは「ありえないような馬鹿を想定すること」ではないはず。

71 :デフォルトの名無しさん:2010/08/01(日) 22:11:06
>>58
ありがとうございます。

72 :デフォルトの名無しさん:2010/08/01(日) 22:48:26
>>65
.NETだけでやろうとした場合、自作しかないのでしょうか?
スペースなどの文字を&***のような形に変換するような
機能はないのでしょうか・・・

ダウンロードしたHTMLを解析するというのは
よくある要求だと思うのですが・・・

73 :デフォルトの名無しさん:2010/08/01(日) 22:49:54
>>72
普通にDOMでやれよ。

74 :デフォルトの名無しさん:2010/08/01(日) 22:50:17
htmlデコード

75 :デフォルトの名無しさん:2010/08/01(日) 23:03:10
>>73
domでやるとはどういう意味でしょうか?
ActiveXを使うということでしょうか?


76 :デフォルトの名無しさん:2010/08/01(日) 23:07:42
DOMでわかんないなら、初心者スレ行け。

77 :デフォルトの名無しさん:2010/08/01(日) 23:08:43
>>72
HttpUtility.HtmlEncode

78 :デフォルトの名無しさん:2010/08/01(日) 23:08:56
>>76
DOMは分かりますよ。
でも.NETとは無関係の一般的な用語ですよね。


79 :デフォルトの名無しさん:2010/08/01(日) 23:13:35
>>77
求めていたものにとても近いです。
ただタグの<などすべて変換されてしまうので
結局は解析してやらないといけないみたいです。
でもありがとうございました。

80 :デフォルトの名無しさん:2010/08/01(日) 23:25:55
>>79
ttp://neue.cc/2010/03/02_244.html
これだろ

81 :デフォルトの名無しさん:2010/08/01(日) 23:32:31
文字列の中に全角文字が含まれてたら削除したいのですが
何かよい関数ありますか?

82 :デフォルトの名無しさん:2010/08/01(日) 23:37:55
正規表現

83 :デフォルトの名無しさん:2010/08/01(日) 23:41:13
今の時代、全角文字ってどう定義していいのか微妙な気もするけど....

84 :デフォルトの名無しさん:2010/08/01(日) 23:42:25
>>80
まだ試していないのですが
読む限りまさにこれです。
助かりました、ありがとうございます。

というか最初のサンプリもここのサイトでした。
答えはすぐ近くにあったんですね・・・

85 :デフォルトの名無しさん:2010/08/01(日) 23:43:33
この人のレベルじゃRxは理解出来ない

86 :デフォルトの名無しさん:2010/08/02(月) 00:10:36
':' 文字、16 進数値 0x3A を名前に含むことはできません。
という例外が出ました
なかなか難しいものですね・・・


87 :デフォルトの名無しさん:2010/08/02(月) 00:12:13
せめてレス番名乗れよ。誰が誰だかわからないだろ。

88 :デフォルトの名無しさん:2010/08/02(月) 00:16:18
アプリケーションで例外を握りつぶすことが許容できるケースが存在はしますが、そのようなケースはほとんどありません。
例外を握りつぶすことを決めたならば、あなたが何がおかしくなるかを正しく理解していないことに気づくべきです。
それによって失われるアプリケーションの状態の一貫性を予測することは一般的に不可能だからです。
例外を握りつぶすことによって、一貫性の破綻に直面した状態で実行するリスクと、このアプリケーションドメインまたはプロセス内でコードを実行
し続けることによる価値のトレードオフを検討します。
その一貫性のない状態を利用してセキュリティ攻撃が行われる可能性もあります。
そのため、ここでの決断は奥の深いものです。

89 :デフォルトの名無しさん:2010/08/02(月) 00:19:47
・正確にどのコンポーネントが例外をスローしたのか、およびそのコントラクトはなにか(オブジェクトの状態はどうなったのか)
・スローしたオブジェクトと呼び出し元の間の完全な呼び出しスタック、およびスタック上のすべてのメソッドが正しくクリーンアップされ、
 返ってくる前にグローバル状態が変更されたかどうかの判断

これら2つの項目についてわからないのであれば、何らかのグローバル状態が"中途半端"な状態にあるかどうかがわからないため、
プログラムが実行を継続したときに奇妙なエラーを引き起こすことになります。
これは非常に多くの場所で発生しうる、OutOfMemoryException、StackOverflowException、またはThreadAbortExceptionのような
例外については本質に真です。

90 :デフォルトの名無しさん:2010/08/02(月) 00:41:35
>>81-83
Unicodeで文字幅が規定されているから、その定義を見て判定するだけだろ
文脈で幅が変化する文字とかあるから実装は面倒だけど

91 :デフォルトの名無しさん:2010/08/02(月) 16:58:35
>>35
おお、なるほど。こういう方法もありましたか。
ありがとう。

ジェネリックは中間言語になる時点でFunc<int>等を
Func<object>にして統一してるのかなと思ってたけど、
これが出来るってことはそいうわけじゃなかったんですね。


92 :デフォルトの名無しさん:2010/08/02(月) 18:28:03
Javaはコンパイル時に非ジェネリック型にコンバートしちゃうけど
C#のジェネリックは型情報を削除せずに、実行時にCLRの内部で構築されるようになってる。

93 :デフォルトの名無しさん:2010/08/02(月) 18:42:22
データベースをいじるのにVBかC#どっちがお勧めか?

94 :デフォルトの名無しさん:2010/08/02(月) 18:47:33
どっちも一緒
どっちかにこだわる人間になりたくなければまずはC#をやってから後でVBもやることをお勧めする

95 :デフォルトの名無しさん:2010/08/02(月) 18:58:56
C#は言語仕様自体が進化しているけれどVB.netも同じように変わっているの?

96 :デフォルトの名無しさん:2010/08/02(月) 19:06:20
VBも拡張されまくってるけど残念ながら新しいものは見向きもされない

97 :デフォルトの名無しさん:2010/08/02(月) 19:51:36
機能自体はC#とVB.NETは、まあ大体一緒なんだけど
近年の関数型に近づいた進化に対して、VBは構文の冗長さが際立ってきて結構しんどい。

98 :デフォルトの名無しさん:2010/08/02(月) 19:51:52
>>88
君さあ「例外をにぎりつぶす」っていう俺様用語を執拗に使ってるけど、
その意味厳密に定義できるの?

君ってそもそも例外処理の意味が分かってないでしょ。

99 :デフォルトの名無しさん:2010/08/02(月) 19:58:13
>>98
例外をキャッチしてそのまま処理を実行することじゃないの?
言葉通り見れば。

100 :デフォルトの名無しさん:2010/08/02(月) 20:01:44
なるほど、じゃあ例外をキャッチするか、もしくはそもそも例外をキャッチせずに
プログラムの実行をアボートするのが正しい作法なわけね。

面白い冗談だ



101 :デフォルトの名無しさん:2010/08/02(月) 20:08:36
>>92
そんな残念仕様と一緒にしないで。
意地でもバイトコードに修正入れたくなかったJavaと違って、
.NET は 2.0 の時に IL の仕様追加したんで。


102 :デフォルトの名無しさん:2010/08/02(月) 20:09:25
>>100
どしたー?熱中症にでもなったかー?

>>88が正しいとは言わないが
お前も十分おかしなこと言ってるぞ。
日本語不自由な人種か?

103 :デフォルトの名無しさん:2010/08/02(月) 20:17:02
>>102
否定は結構だがせっかくだからの君自身の見解も言ってみよう。
ではどうぞ。

104 :デフォルトの名無しさん:2010/08/02(月) 20:20:01
>>100
例外をその場ではキャッチせず、最上位で掴むってのはよくある作法だと思うのだけど。

105 :デフォルトの名無しさん:2010/08/02(月) 20:25:26
>>98
「例外を握りつぶす」って別に普通に使われてる表現
何で自分が無知なだけなのに、こうもひたすら強気に出れるのか不思議

106 :デフォルトの名無しさん:2010/08/02(月) 20:27:25
>>104
それはプログラマが想定してない例外をキャッチするためでしょ。

その目的は対ユーザー向けに適切なメッセージを表示するためであって
プログラムの処理を継続するためのものではない(想定していない例外が
発生したのだから当然だが)だから、通常の例外処理ではない。

107 :デフォルトの名無しさん:2010/08/02(月) 20:28:30
>>105
くだらねえこと言ってないで定義してみたら?
まさかそれすらできないのに「強気」に出てるわけじゃないよね?

108 :デフォルトの名無しさん:2010/08/02(月) 20:29:55
悪い意味で使われる「例外を握りつぶす」というのは
通常の例外処理の範囲でとりあえず全部キャッチしてスタックトレース吐いてスルーすることだろ
Javaなんかだとキャッチが強制されるからそういうのが散見される

109 :デフォルトの名無しさん:2010/08/02(月) 20:32:23
>>103
>否定は結構だがせっかくだからの君自身の見解も言ってみよう。

自分が否定と煽りしかしてねーじゃねーかwww

110 :デフォルトの名無しさん:2010/08/02(月) 20:33:17
よくわからない・処理できない・続けた場合にどうなるかわからない
のにとりあえずキャッチして放置

111 :デフォルトの名無しさん:2010/08/02(月) 20:51:03
「例外を無かったことにする」でいいだろ

112 :デフォルトの名無しさん:2010/08/02(月) 20:59:23
想定していない例外はキャッチしないのが正しい

113 :デフォルトの名無しさん:2010/08/02(月) 22:23:55
想定してないサイズはキャッチアンドリリース

114 :デフォルトの名無しさん:2010/08/03(火) 01:12:15
>>88は公式本からの転載だろ・・・。
読んでないやついんのかよw

115 :デフォルトの名無しさん:2010/08/03(火) 01:30:22
読んだ方が少ないんじゃね

116 :デフォルトの名無しさん:2010/08/03(火) 01:48:51
例外って握りつぶすと変な汁でてきて手がベトベトになるよね。

117 :デフォルトの名無しさん:2010/08/03(火) 02:25:36
複数の値が欲しいときに out やref を使いますが
使い分けとかやってますか?
それともどちらかしか使用しないようにしてますか?

out を使う場合は try catch の
外で初期化しないと怒られてしまうので
階層をまたがって使うときに 関数ごとに
初期化を記述しないと駄目っぽいのですが
何か良い方法あるのでしょうか?

118 :デフォルトの名無しさん:2010/08/03(火) 02:59:53
>>117
>複数の値が欲しいときに out やref を使いますが
使いません

そういう用途にはクラスを使いましょう。

119 :デフォルトの名無しさん:2010/08/03(火) 04:54:09
TCP/IP接続利用した簡単なネット対戦ゲー(ターン制みたいなの)検討してるんだけど
C#でその手のネットワークプログラミングを詳しく取り扱ってるサイトか書籍ってないかしら

120 :デフォルトの名無しさん:2010/08/03(火) 10:05:23
>>118
お間が使わなくても
Framework自体が使ってるんだけどな。

こいつみたいにそれっぽいものを完全否定する
原理主義土方PGって頭でっかちで使えないんだよなー。

121 :デフォルトの名無しさん:2010/08/03(火) 10:14:19
はいはい、妄想はそれぐらいにしとけw

122 :デフォルトの名無しさん:2010/08/03(火) 10:21:25
>>121
TryParse

123 :デフォルトの名無しさん:2010/08/03(火) 10:22:03
>>117
> 使い分け
outputのみが目的ならばout。
inputとoutput両方が目的ならばref。

124 :デフォルトの名無しさん:2010/08/03(火) 10:27:29
>>122
どこが複数の値なんだか…

125 :デフォルトの名無しさん:2010/08/03(火) 10:28:43
outとrefは初心者程こだわる
得にrefを多様してる奴は間違いなく初心者

126 :デフォルトの名無しさん:2010/08/03(火) 10:38:06
はぁ

127 :デフォルトの名無しさん:2010/08/03(火) 10:52:32
.NET Framework 4.0環境ならTuple使えるから楽なんだけどな

128 :デフォルトの名無しさん:2010/08/03(火) 11:05:36
>>124
2つは十分複数だろ?

使いません

とか完全否定しちゃうステレオタイプは
いまさら複数とか認められないのかもしれないけどwwwww

129 :デフォルトの名無しさん:2010/08/03(火) 11:09:10
>>118
ゴミは黙ってろ


130 :デフォルトの名無しさん:2010/08/03(火) 11:34:01
>>125
もうちょっと詳しく聞きたいね。
どういうのが最善なのか。

131 :デフォルトの名無しさん:2010/08/03(火) 11:42:12
Tupleなんか使うなよ
あれはF#のために追加されただけ
タプルは (string name, int age) = GetPerson();みたいに使うものだけど
今のC#の構文ではサポートされてなくて受けるときの変数名が無いから可読性最悪

132 :117:2010/08/03(火) 12:48:08
>>118
そうなんですか。
静的関数を作成し依存しないように
していく考え方はもうあんまり利用されない
んですね

>>123
正しい使い分けですね。

>>125
こだわらなくて良いということでしょうか?

>>127
なるほど、4.0からはそのようなものがあるんですね。

133 :デフォルトの名無しさん:2010/08/03(火) 22:03:52
2っで複数ねぇ・・・.Netにいくつメソッドがあると思ってるんだ。
%単位で存在してるなら分かるが同意できねぇ。

134 :デフォルトの名無しさん:2010/08/03(火) 22:18:30
>>128
引っ込みが付かなくなってるのはお前だろw
TryParseがあるから複数の値が欲しいときに out やref を使うべきと?w
何その負け惜しみwwwwwww

135 :デフォルトの名無しさん:2010/08/03(火) 22:19:46
動けばいいからどうでもいい。

136 :デフォルトの名無しさん:2010/08/03(火) 22:20:59
涙拭いて黙ってろよ

137 :デフォルトの名無しさん:2010/08/03(火) 23:07:18
>>133
日本語ワカリマスカ?
複数なのはメソッドの数じゃねーよ。
「2っ」なんて日本人なら書かねー。


>>134
誰が「使うべき」なんて言ったよw
0か1かでしか物事を考えることができねーの?
どこの国の人ですか?
引っ込みつかなくなってるのはお前のことだろwww
負け惜しみってのはお前のレスのことだよwwwww

138 :デフォルトの名無しさん:2010/08/03(火) 23:31:27
>>137
ゴミは黙ってろ

139 :デフォルトの名無しさん:2010/08/03(火) 23:34:15
>>138
なんだ朝鮮人だったのかw

140 :デフォルトの名無しさん:2010/08/04(水) 01:04:43
とりあえず参照型にref付ける奴はうましかまで読んだ

141 :デフォルトの名無しさん:2010/08/04(水) 01:25:11
>>140
参照型にref付ける意味ってなにがあるの?
試してみたら付けれたんだけど。

142 :デフォルトの名無しさん:2010/08/04(水) 01:27:20
>>141
スワップみたいに新しく代入するときとか。

143 :デフォルトの名無しさん:2010/08/04(水) 01:28:26
>>141
stringみたいにイミュータブルなクラスなら値を変更するには別のインスタンスを代入するしかないから、
refを付ける必要がある。
ミュータブルなクラスでも、いろいろ面倒な配慮をしないと値を変更できず、newしちゃった方が
早いってこともあるかもしれない。そんな例思いつかないけど。

値型・参照型と値渡し・参照渡しの4通りの組み合わせを全部理解しておかないと。

144 :デフォルトの名無しさん:2010/08/04(水) 01:28:27
out refを乱用せずにクラス使っとけって話のどこに噛み付くような余地があるんだ?
キチガイの考える事はよう分からんわ

145 :デフォルトの名無しさん:2010/08/04(水) 01:31:58
>>137
半島人は黙ってろ

146 :デフォルトの名無しさん:2010/08/04(水) 01:32:28
>>144
使わないって完全否定してるアホが居たから
そいつが叩かれてるだけじゃないの?


147 :デフォルトの名無しさん:2010/08/04(水) 01:35:01
>>145
お前シナだったのかw

148 :デフォルトの名無しさん:2010/08/04(水) 01:45:58
>>138
ゴミは黙ってろ

149 :デフォルトの名無しさん:2010/08/04(水) 01:47:03
叩かれてるのは>>120から粘着して騒いでる奴だろ

150 :デフォルトの名無しさん:2010/08/04(水) 01:51:28
>>149
だから黙れよゴミ


151 :デフォルトの名無しさん:2010/08/04(水) 01:53:10
馬鹿は情勢が悪くなるとすぐ荒らすから分かりやすい

152 :デフォルトの名無しさん:2010/08/04(水) 01:56:06
自己紹介乙

153 :デフォルトの名無しさん:2010/08/04(水) 02:01:29
118 デフォルトの名無しさん[sage] 2010/08/03(火) 02:59:53
>>117
使いません
120 デフォルトの名無しさん[sage] 2010/08/03(火) 10:05:23
>>118
お間が使わなくてもFramework自体が使ってるんだけどな。
121 デフォルトの名無しさん[sage] 2010/08/03(火) 10:14:19
はいはい、妄想はそれぐらいにしとけw
122 デフォルトの名無しさん[sage] 2010/08/03(火) 10:21:25
>>121
TryParse
124 デフォルトの名無しさん[sage] 2010/08/03(火) 10:27:29
>>122
どこが複数の値なんだか…
128 デフォルトの名無しさん[sage] 2010/08/03(火) 11:05:36
>>124
2つは十分複数だろ?
133 デフォルトの名無しさん[sage] 2010/08/03(火) 22:03:52
2っで複数ねぇ・・・.Netにいくつメソッドがあると思ってるんだ。
134 デフォルトの名無しさん[sage] 2010/08/03(火) 22:18:30
>>128
引っ込みが付かなくなってるのはお前だろw
TryParseがあるから複数の値が欲しいときに out やref を使うべきと?w
137 デフォルトの名無しさん[sage] 2010/08/03(火) 23:07:18
>>133
複数なのはメソッドの数じゃねーよ。
>>134
誰が「使うべき」なんて言ったよw

154 :デフォルトの名無しさん:2010/08/04(水) 04:08:23
コピペ君って馬鹿だな まで読んだ

155 :デフォルトの名無しさん:2010/08/04(水) 04:09:50
コピペ君って馬鹿だな まで読んだ まで読んだ

156 :デフォルトの名無しさん:2010/08/04(水) 08:27:58
>>141
メソッドの中で複数のインスタンスを new で返したいときとか・・・
って思ったけど、そりゃ out 使うとこだな。
確かに参照型に ref ってスワップ以外に用途思いつかない。

157 :デフォルトの名無しさん:2010/08/04(水) 09:28:00
参照型の参照渡しはVBだと平気で出てくるぞ
戻り値を使うっていう発想がないんだよね

158 :デフォルトの名無しさん:2010/08/04(水) 11:45:19
あー、複数の場合は構造体使えって言うならしっくりくるね。
クラスって言うからメソッド使って管理しろって意味だと思ってた。

refとかoutは例外出したくないとき便利じゃないかな
public bool GetData(out string data, string default)
string data;
GetData(out data, "default"); //失敗してもそのまま継続できるし成功の確認も出来る


159 :デフォルトの名無しさん:2010/08/04(水) 11:48:05
まぁTryParseなんかがまんまだな

160 :デフォルトの名無しさん:2010/08/04(水) 11:48:14
それをTryParseパターンと呼ぶんです
クラスライブラリのパブリックメンバなら例外を投げるバージョンも同時に用意する決まり

161 :デフォルトの名無しさん:2010/08/04(水) 11:52:21
へー、名前なんてあったんだ。勉強になった。

162 :デフォルトの名無しさん:2010/08/04(水) 11:54:47
俺が今名づけた

163 :デフォルトの名無しさん:2010/08/04(水) 11:56:19
MSDNに書いてある公式用語です

164 :デフォルトの名無しさん:2010/08/04(水) 12:05:15
プリミティブの変換だから特別にユーティリティ作りましただよな TryParse
でも、作るなら検証メソッドのほうが良かったのに・・・

165 :デフォルトの名無しさん:2010/08/04(水) 12:18:28
nullable使えばよかったのに

166 :デフォルトの名無しさん:2010/08/04(水) 12:36:02
は?

167 :デフォルトの名無しさん:2010/08/04(水) 12:49:17
ヌーブラ

168 :118:2010/08/04(水) 13:13:01
>>144が言っているように、>>117が不適切な用法をしているであろうと察して言ったのだが、めんどくさい奴が騒いでてワロタ。
>>117>>132読んだ感じじゃ読み通りout refを乱用してたみたいだな。

>>153
俺は>>118だけなんだが君は誰と戦ってるつもりなの?w

169 :デフォルトの名無しさん:2010/08/04(水) 13:25:45
もう好きにしろ
正しく動くコードが一番正しいんだ

どれも正しく動いてりゃ正解だよ

※メンテナンス性は除く

170 :デフォルトの名無しさん:2010/08/04(水) 13:29:21
スレチになりつつあるぞ

171 :デフォルトの名無しさん:2010/08/04(水) 14:06:55
メンテナンス性なんて飾りです。偉い人にはそれが分からんのです。

172 :デフォルトの名無しさん:2010/08/04(水) 14:31:52
敢えてメンテナンス性を排する事で逆コンパイル耐性をつけたのさ!

173 :デフォルトの名無しさん:2010/08/04(水) 14:49:29
昔からいるよな
「我が教義に従いさえすればあらゆる問題はたちどころに解決する」
とかほざく宗教者
オブジェクト指向辺りからか?この手の無能が湧き出したのって

174 :デフォルトの名無しさん:2010/08/04(水) 14:59:08
もっと前
SBの孫とかが有名

175 :デフォルトの名無しさん:2010/08/04(水) 15:02:42
>>173
自己紹介乙

176 :117:2010/08/04(水) 15:09:10
>>168
out/ref 乱用はしてません。
outしか今まで使用してなかったので
out/refの使い分けが知りたかったのです。

177 :デフォルトの名無しさん:2010/08/04(水) 15:19:27
それなら>>123で終わってるわけで、騒いでた奴は何だったのかねw

178 :117:2010/08/04(水) 15:37:14
>>177
ただ、自分も118さんがout/ref を使わずに何でもかんでも
クラスを使うっていうは本当なのか知りたいです。

179 :デフォルトの名無しさん:2010/08/04(水) 15:44:23
はじめましてC#で野球のストライク、ボール、アウトの表示のやつを作りたいんですが誰が助言をください


S ●●
B ●●●
O ●●

見たいな感じです

入力方法は
●●●●●   ● ボール
●○○○●   ○ ストライク
●○○○●
●○○○●
●●●●●

の25分割radioButtonにチェックする
アウトは別に他のアウト専用のチェックボタンを作っています
で○の所をチェックするとSに黄色●にチェックするとBに青
アウトにチェックするとOに赤色が点滅します

よろしくお願いします




180 :デフォルトの名無しさん:2010/08/04(水) 15:54:40
なにを?

181 :デフォルトの名無しさん:2010/08/04(水) 15:57:39
>>179
mixiにマルチ

182 :デフォルトの名無しさん:2010/08/04(水) 16:09:58
>>119だが俺のレスの直後に例の盛り上がりがあって流されてるな・・・
いいよいいよ、根気よく自力で探すよ(つдT)

183 :デフォルトの名無しさん:2010/08/04(水) 16:30:23
TcpListener使って低レベルの通信がやりたいのか、もっと高レベルの.NET Remotingなんかを使いたいのかで全然違うよ
後者のサンプルだとこんなのとかある。
http://codezine.jp/article/detail/530

184 :118:2010/08/04(水) 17:01:10
>>178
TryParseパターンのような制限付きの例外はあるにせよ
>静的関数を作成し依存しないようにしていく考え方はもうあんまり利用されない

この辺は別にC#だけに限った話じゃないな。

185 :デフォルトの名無しさん:2010/08/04(水) 17:22:19
>>183
うおお、thx!
ググっても他の言語のコードばっかりで困っていたんだ。とりあえず両方味見してみる

186 :デフォルトの名無しさん:2010/08/04(水) 18:08:42
最近だとWCFなんてのもあるが
困ったことにほとんどのサンプルがIIS前提なのよね・・・
もっと単純にPeerToPeerしたいだけなんだが大掛かりすぐる

187 :デフォルトの名無しさん:2010/08/04(水) 19:12:51
そりゃTCP/IPとかで新しいフレームワークなんて今更いらんから、新しいもの
といえば特定領域の実装を楽にするものしかないわな。
更に皮かぶせたもの無いか?なんて考えないで素直に System.Net.Sockets
使えばいいと思うよ。(プラットフォーム間の相互運用性も上がるし)

188 :デフォルトの名無しさん:2010/08/04(水) 19:57:55
>>179
夏休みの宿題は自分でやるべき。
http://ideone.com/EcOoS

51 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)