[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 12/05 09:01 / Filesize : 41 KB / Number-of Response : 217
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

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



1 名前:デフォルトの名無しさん [2013/11/28(木) 11:27:54.20 ]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part108
toro.2ch.net/test/read.cgi/tech/1383867970/

■関連スレ
C#, C♯, C#相談室 Part81
toro.2ch.net/test/read.cgi/tech/1381134494/

■コード貼るなら↓使ってください
ideone.com/

53 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:29:24.79 ]
HTTPのヘッダには普通Content-Lengthがあるだろ
無ければMemoryStreamにでもCopyToしてToArrayじゃないの

54 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:32:19.80 ]
>>53
それが場合によってはContent-Lengthを返さないサーバがあるらしいので
この方法だと不安なんです…

後者の方法はどうやるのか少しご教授願えませんか?

55 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:35:29.60 ]
using(var ms = new MemoryStream())
{
st.CopyTo(ms);
return ms.ToArray();
}

56 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:39:29.76 ]
C#とVB.netの違いってなに?
C#もポインタは、実際は使えるようで使えないみたいだし。

57 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:42:30.41 ]
>>55
バッチリできました!ありがとうございます!

58 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:42:47.17 ]
VB.NETの演算の言語仕様はILとの整合性が低いので
コンパイル時にクソみたいなヘルパー関数呼び出しが大量に生成されます
あとTry-Catchもゴミまみれになる

59 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:45:05.84 ]
根拠は?それほど違わないよ

60 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:46:33.99 ]
chunkedだとContent-Lengthを返してはいけない
chunkedだと全部読み取るまでコンテンツサイズは判明しない
HTTP1.1の仕様のせい

chunkedがないとgzip等を返す場合一度tmpに出力しないといけなかったので
サーバー側は効率的ではあるのだが

61 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:48:43.83 ]
いやヘルパー関数呼び出し大量発生は確かにその通りだよ
根拠はildasm
C#も2.0からはILとどんどん乖離していってるけど、VBランタイム相当のC#ランタイムが必要になるのはdynamicだけだね



62 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 11:54:22.71 ]
>>60
そんな問題があったのですね。勉強になりました!

63 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 13:30:23.90 ]
そういえばBooleanとString型の動作が少し違うな

64 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 19:16:18.54 ]
XMLから要素名のわからない要素を取り出したいのですがどうすればよいでしょうか?
例えば、以下の様にOptionalAttributeという要素があり、
その場合は子要素を読み込み、要素名を取得したいと考えています。
どのようなメソッドを使えば良いでしょうか?

<AA Name="A1"
Category=""
Index="1">
<OptionalAttribute>
<BType>
<Value>A</Value>
<BType>
</OptionalAttribute>

なにとぞご教授ください。

65 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 19:24:39.87 ]
XMLパーサーは何のクラス使ってるんだよ

66 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 19:56:19.49 ]
要素名の分からない要素とかXMLの設計が悪いんじゃ・・・何のための属性だよ

67 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:01:07.71 ]
XAMLの悪口は止めろ
まあOptionalかどうかは要素の有無で判断するのが普通だと思うけど

68 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:03:43.33 ]
下のようなプログラムのとき
string s;
の宣言のときにnullをつっこんでるのはなぜ?
どーせ、すぐにsr.ReadLine()によって設定されるのに。

string s = null;
while((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}

69 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:07:00.42 ]
俺は無くてもいいものは書かない派

70 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:10:39.70 ]
俺も書かないので分かりません

71 名前:68 mailto:sage [2013/11/30(土) 20:12:17.64 ]
でも、教科書等々のサンプルソースなんかでは、よくこういうソースが出てくるん
なんで?



72 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:16:51.01 ]
それは著者の気持ちを答えなさいってことか?

73 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:18:12.13 ]
うん。
CやC++のmalloc()、free()名残?

74 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:19:55.14 ]
代入をしないと変数定義できない言語の使い手なのではないか
世の中にはそういう難儀な言語もある

75 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:20:46.73 ]
警告、エラー避けじゃね?
string s;
Console.WriteLine(s);
だとエラーだし

まあ、コンパイラに警告されない限り代入の必要はないと思うけど

76 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:21:26.14 ]
Pythonの悪口は止めろ

77 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:23:08.82 ]
Cなんかは変数宣言の段階じゃ初期値不定だからその名残でやってるんだろうな
別に悪い習慣ではないと思うがC#じゃいらんな

78 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:27:10.41 ]
whileならいいけど、forとかusingとかの中で設定したあとブロック抜けた先で使いたい場合とかあるじゃん?

79 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:30:17.67 ]
未定義になるコードパスがあったのを
いろいろいじっているうちにそのままになってた
ということもよくある話

80 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:30:19.24 ]
>>78
これだろうな

81 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:31:34.92 ]
stringだったら初期化にはString.Empty使うけどな



82 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:35:25.16 ]
String.Emptyに初期化する必要性ない限りnullでいいよ
わずかだけど、null初期化の方がコストも少ないし

83 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:35:53.52 ]
ローカル変数をstring.Emptyで初期化したほうが都合がいい場面って思いつかない

84 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:57:53.97 ]
Datatableって、なんで任意の列だけを対象にして検索して、見つかった行の番号を返すって、良く使うコードが実装されてないの?

85 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:58:09.94 ]
想像力の貧弱さの告白乙

86 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 20:59:56.17 ]
じゃ、おしえて

87 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:17:15.48 ]
var i = dataTable.AsEnumerable().ToList().FindIndex(r => r["column"].Equals(value));
とか書くと初心者にはすごく見えるし初心者以外には馬鹿にされるからおススメ

88 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:21:37.65 ]
>>85
煽るな障害者

89 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:37:57.15 ]
>>85
わかんないんじゃんw

90 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:42:05.82 ]
主キーじゃなきゃ重複するだろ常識的に考えて
っていう理由じゃないかな

91 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:52:57.75 ]
そもそもRDBのテーブルという概念は行の集合なので行番号は持たないのですよ



92 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:55:18.86 ]
こんな10行で書ける処理に文句を垂れる奴は専用メソッドがあったところで
「DataColumnって何ですか」とか言い出すに決まってる

93 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 21:56:05.37 ]
>>65
XDocumentとXElement使ってます

94 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:00:27.38 ]
DescendentsとかでOptionAttributeさがしてそのElements().First()のNameとかそんなん

95 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:01:59.03 ]
>>94
ありがとうござます!
試してみます!

96 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:03:26.23 ]
.Elements("OptionalAttribute").Elements()の方がいい気がする

97 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:06:13.01 ]
>>96
OptionalAttributeがないとクラッシュするじゃん

98 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:07:32.60 ]
>>92
10行もかからねーだろw

99 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:20:52.53 ]
intとDataRow型の宣言をしてforとifをブロックで書くとジャスト10行だけど煽ってコード書かせようってクチ?

100 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:22:17.13 ]
※ここの住人は「まず煽る」ことから始めるのでスルー能力を磨いてから書き込みましょう

101 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:24:28.37 ]
じゃあ俺はElementとElementsの違いに気づかない>>97を煽る



102 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:24:54.52 ]
いや87ででてるじゃん? まだ冗長だけど

103 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:27:09.40 ]
>>96
こういうコードたまに見るけど、もうなんというか
最も酷い

104 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:30:24.43 ]
ユーザーコントロールを継承したクラスAを更に継承したクラスBを
Formに動的に追加してクリックイベントを発生させたいのだけど
クラスBでクリックイベントが発生しません

大部分の機能は同じだけどクリックされたときの挙動を幾つか用意したいので
クラスB1、B2のように作っていこうと思っているんだけどどうすればいいですか?

105 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:30:37.05 ]
>>87はわざとお話にならないように書いたコードだぞ

106 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:32:34.62 ]
>>105
それ以外の書き方を知らない人間はそうやって道化を演じるしかないからな

107 名前:デフォルトの名無しさん mailto:sage [2013/11/30(土) 22:42:05.55 ]
>>104
OnClick呼んでないとかイベントハンドラー登録してないとかそんな感じだろ

108 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 00:42:00.21 ]
>>84
DataRow[] rows = datatable.Select("xxx = ...");

じゃだめなの?
こういう意味じゃ無い?

109 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 00:42:19.02 ]
もしかして子コントロールのイベントはユーザーコントロールを継承したクラスAでしか取得できない?
クラスBで取得するにはコードでイベントハンドラを登録させるしかないのかな?

110 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 01:33:02.14 ]
なぜかコンストラクタが削除されてて
InitializeComponentメソッドが読まれてなかっただけだった
慣れない継承したからてっきり継承のせいだと思ってた

111 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 01:55:04.14 ]
あ、ちがった、やっぱり継承先では継承元の子コントロールのイベントは取得できないみたい



112 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 02:14:29.08 ]
コントロールAをこうすればいいでしょ
protected virtual void button1_Click(object sender, EventArgs e)
{
}

113 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 02:56:37.81 ]
それでいけました
あと、コントロールのmodifiersをProtectedにしてもできた
でも他のクラスから直接コントロールを操作できるようにするは作法としてよろしくないのかな
やっぱり>>112のように触ってもいいところだけ仮想メソッドなりで公開するのがいいのかな

114 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 06:03:19.27 ]
private void button1_Click(object sender, EventArgs e)
{
 this.OnButton1Click();
}

protected virtual void OnButton1Click()
{
}

こんな感じ

115 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 09:39:09.03 ]
>>99
どうやったら10行も必要なの?
int i = datatable.Rows.IndexOf(datatable.Select(".............")[0]);

116 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 09:48:33.34 ]
公式に10行で云々ってページがあるからさw

117 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 09:55:46.23 ]
>>115
それ全件検索→配列作成→順次検索だからforで回すのの平均1.5倍かかるぞ
構文解析のコストとか無視しても

118 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 09:58:23.31 ]
ついでに言うと短くしたいのならパフォーマンスがいいのは.Select().FirstOrDefault()とか

119 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 10:03:28.82 ]
3倍だったわ

120 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:00:31.86 ]
C#er が速度なんて考えてるとはおもわなんだ!!!

121 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:23:39.21 ]
その程度の速度差が気になるならデータセットは使えないでしょうが



122 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:28:58.22 ]
速度無視しても>>115はありえない
全レコード該当した場合n要素の配列が2個必要だぞ

123 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:29:00.90 ]
前提条件が提示されていない中で
各々のポリシーに従って不毛な言いあいを続けるようなら
また両方にまぎれて煽りますよ
12時間くらい

124 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:29:32.23 ]
普通にforで回すのが最速だと思う

125 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:31:40.19 ]
今回はポリシー云々じゃなく万人が認めるべきアホなコードだから不毛じゃない

126 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:44:14.64 ]
ほう。
こんな表現もあったか。
データ件数が100件程度以内なら
int i = datatable.Rows.IndexOf(datatable.Select(".............")[0]);
でいいなぁ。上にコメントでもつけてくれれば。

127 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:50:52.86 ]
自演

128 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 13:53:20.67 ]
filterExpressionが原因のバグが頻発しそう

129 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 14:02:42.61 ]
頻繁するかは分からないけどリスクはあるよね

130 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 14:39:36.83 ]
VBのほうが利用者多いんでしょ。
C#とVBに差がないんならC#を何で選ぶの?
C一族なの?

131 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 14:47:44.76 ]
VB6から抜け出せない人用だし、選ぶ積極的理由が無いよ



132 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 14:54:36.05 ]
利用者が多いってのは何の統計なんだね

133 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 14:58:13.95 ]
当方C一族でして

134 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 15:04:00.18 ]
リーナス・トーバルズ曰く

*YOU* are full of bullshit.
C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.

だいたいこれと同じ理由

135 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 16:40:56.88 ]
VBコードなんて見づらくて最初からやる気しなかったな

136 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 17:52:29.22 ]
スクリプトで遊び始めた頃にvbscriptを見るとなぜか吐き気を催したので
javascriptを選択してしまった流れで

137 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 18:14:32.16 ]
>>130
低レベルなコードも書きたいならC#
COMと相互運用したいならVB.NET
常識だろ

138 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 18:14:34.87 ]
C一族の者に御座る

139 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 18:16:20.04 ]
Dim Unko As String
string unko;
どっちが見やすいかな?

140 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 19:56:01.66 ]
vbはこれができるんだぜ
Dim number = 1, text = "hoge"

141 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 19:59:18.75 ]
だからどうしたというレベル



142 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 20:02:11.62 ]
ムムム
If 5 == 5 Then
Console.WriteLine();
End If

if (5 == 5)
Console.WriteLine();

どっちが見やすいんだよ?

143 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 20:10:15.18 ]
C#スレで聞いてどうする

144 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 20:33:46.18 ]
If 5 == 5 Then Console.WriteLine();

145 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 20:34:19.66 ]
まだ間違ってるぞ
If 5 = 5 Then Console.WriteLine()

146 名前:デフォルトの名無しさん mailto:sage [2013/12/01(日) 20:44:30.76 ]
    l'''-、    .t―--、   .!¬、          > 、              r‐ ,          >-、     >、___
 .lヽ,,| il,,..、   ,ゝ--′   | | 、        / ./ t-、            ,,,  | レ''')      ! . ゝ、,. t,   >   `!
  ゙ヽ、 __,ノ   , -''',゙ ̄''、 <゙゙´ レ'',゙ ̄\ .l゙‐''"゛.,i、`'i lヽ   _,_._,,、 ヘ ̄ .,,..-',゙ _ ト‐'" .,i  l, l.ヽ / .厂 ̄゛
 / !/ ,l_r-,.´>、 ヽ,,./   | .l `フ  / ̄│ .l `-7 ./ .l .! .l l l'‐'゙/'''''''、.ヽ  / /ィニ二_,,,ノ ゝ7 ./ .l ! ゙l l .! !_.. - 、.
 ヽ、   ./゙l .l      l  ! /  !    } ! / ./ l /!││゙''"    .} | l゙ / ,,.'"゛    / ./  l l | |.l  ン"゙゙''、 ヽ
  .! l ̄ .,ノ |    ノ  ノ∠   !   ノ ノ / .iト,,ノ /  .゙''゙      / . l ,/ / ./.!  ._....、./ .,l ト,,/ /  .゙''゙ L./    /  }
  .ヽ `゙゛ . /  ._,,/_,/   .! l ∠‐"  |__/ ヽ ./       ._.. ‐,゙..-゙ ! / .l、.´   ,!| ./ l ./      . __,, / ,.ノ
    .`゙゙゙゙゙゛   `⌒       `゛         `´       .  ̄´   `"   `"'''''"゛    `゛      `゙'''''゙゙´

147 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 01:46:32.63 ]
VBって未だにサブルーチン呼び出しは括弧付けたら駄目っつー変態バカ仕様でやってんの?

148 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 02:10:49.67 ]
ListViewでListViewItem一個一個に
ユーザーデータを追加させたいのですが
(MFCのCListCtrlのSetItemData/GetItemDataみたいなやつ)
どのようにすればいいでしょうか?

149 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 06:47:01.04 ]
Tag

150 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 08:13:07.79 ]
ListViewを継承してお好きなプロパティでもなんでも持たす

151 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 08:13:48.83 ]
×ListViewを継承してお好きなプロパティでもなんでも持たす
○ListViewItemを継承してお好きなプロパティでもなんでも持たす



152 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 08:49:50.39 ]
コントロールは多くのプロパティをオーバライドできないのだけど
どういう設計思想なのこれは?

153 名前:デフォルトの名無しさん mailto:sage [2013/12/02(月) 10:16:32.35 ]
いいから黙って書け






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

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

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