13/11/28 11:27:54.20
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part108
スレリンク(tech板)
■関連スレ
C#, C♯, C#相談室 Part81
スレリンク(tech板)
■コード貼るなら↓使ってください
URLリンク(ideone.com)
2:デフォルトの名無しさん
13/11/28 11:41:32.05
いちょつ
3:デフォルトの名無しさん
13/11/28 19:09:04.85
■■テンプレ追加■■
Close()とDispose()についてのお話大歓迎です!
4:デフォルトの名無しさん
13/11/28 19:15:24.71
>>3
そろそろ自動荒らしbot止めないか?
5:デフォルトの名無しさん
13/11/28 19:17:27.62
>>4
そろそろ自動荒らしbot止めないか?
6:デフォルトの名無しさん
13/11/28 19:20:21.61
命が止まっちゃうだろ
7:デフォルトの名無しさん
13/11/28 19:46:51.31
天才チンパンジーのアイちゃん、最近見ないね
8:デフォルトの名無しさん
13/11/28 20:37:47.45
この流れがわからんのだがどっちでもいいじゃ駄目なん?
どっちにしろアンマネージドなクラスインスタンスを生成するから最後はDispose(Close)しろよって制約なだけじゃん
この認識じゃおまえはまだまだ半人前以下だなプギャーなの?
9:デフォルトの名無しさん
13/11/28 20:41:36.85
うん
10:デフォルトの名無しさん
13/11/28 20:57:24.70
こ
11:デフォルトの名無しさん
13/11/28 20:59:51.26
Windows.Forms.Form dispose != close
Stream系 dispose == close
MSでも分かれてるのだし、クラスやライブラリの設計次第ってことで
12:デフォルトの名無しさん
13/11/28 21:34:57.77
プロパティをrefで渡せなくて泣いた
もはやrefだけでなく構造体とかローレベルな機能のほとんどを使わなくなってしまった
13:デフォルトの名無しさん
13/11/28 21:37:37.63
ならrefなんか完全に捨ててデリゲートでコールバックを渡せ
14:デフォルトの名無しさん
13/11/28 21:45:14.26
refにプロパティ渡せないのって
よく考えれば妥当なんだけど
便利なc#の世界観にひたってるとびっくりするよね
15:デフォルトの名無しさん
13/11/28 21:48:15.40
VBだと渡せたりする。
実際はテンポラリの変数にプロパティの値をコピーして関数をコール
関数の呼び出しが終わったら、
テンポラリの変数からプロパティに書き戻しと泥臭いことをやってる
16:デフォルトの名無しさん
13/11/28 21:51:52.89
いま再設計したらrefやoutは無くなってTryParse("123", x => hoge = x)になるだろうな
17:デフォルトの名無しさん
13/11/28 21:56:08.42
それより多値関数の実装をたのむ
18:デフォルトの名無しさん
13/11/28 22:18:18.90
class MyClassA { }
class MyClassB : MyClassA { }
class MyClassC : MyClassB { }
class MyClassD : MyClassC { }
void Hoge(MyClassA a) { }
void Hoge(MyClassB b) { }
void Hoge(MyClassC c) { }
今こういう書き方してるんですがHogeメソッドって一つにまとめられませんか?
派生クラスならABCDどれでも呼べるような
19:デフォルトの名無しさん
13/11/28 22:21:41.39
void Hoge(MyClassA a) { }
これにMyClassBとかMyClassCのインスタンス指定してみた?
20:デフォルトの名無しさん
13/11/28 22:25:29.87
そんなものよりHogeメソッドを持ってるなら何でもokみたいなジェネリックメソッドの書き方教えてよ
なんでジェネリックなのにいちいち継承かインターフェース使わなならんねん
21:デフォルトの名無しさん
13/11/28 22:27:25.96
ダックタイピングがしたいのか?
22:デフォルトの名無しさん
13/11/28 22:28:53.47
>>18
void Hoge(dynamic a) { a.SomeMethod(); }
23:デフォルトの名無しさん
13/11/28 22:30:42.48
>>21
左様
24:デフォルトの名無しさん
13/11/28 22:36:38.05
成程
25:デフォルトの名無しさん
13/11/28 22:36:49.73
>>19
それは void Hoge(MyClassB b) { } を書かなくてもAにぶち込めるはずって事ですか?
今テスト用に書いたコードでは行けたっぽくて
元々詰まってたのは「オーバーロードメソッドには無効な引数がいくつか含まれます」って
出てきて絶賛大混乱中なんですが
26:デフォルトの名無しさん
13/11/28 22:45:38.23
reflectionを使うのが定石だよ
27:デフォルトの名無しさん
13/11/28 22:53:52.32
>>21
多分それです
>>22
それも>>25と同じエラーが出ます
そしてどこに躓いてるか今わかりました
static void Hoge(MyClassA a) {}
static void Hoge(List<MyClassA> a) { }
Hoge(new MyClassD()); ←これは通る
Hoge(new List<MyClassD>()); ←これが通らない
Listの方をしたいんですがどうにかなりませんか
28:デフォルトの名無しさん
13/11/28 22:58:47.13
むちゃくちゃ言ってんぞおい
29:デフォルトの名無しさん
13/11/28 22:59:02.04
それは全く別の問題
IList<T>とparams T[]のオーバーロードを併用するとかか
30:デフォルトの名無しさん
13/11/28 23:10:24.89
>>26
ググったけどよく分かりませんでした
>>29
paramsの使いドコロが分かりません
結論としてはListではそのままだと無理だから
工夫できないなら諦めろってことですか?
31:デフォルトの名無しさん
13/11/28 23:12:26.35
入門書を読もうか・・・
32:デフォルトの名無しさん
13/11/28 23:16:18.54
型引数とインターフェースでできそうな気がするけど、何が問題なの?
33:デフォルトの名無しさん
13/11/28 23:24:06.86
使ったことないワードが出すぎて頭沸騰しそうなので
実際動作するコードで教えてほしいです
34:デフォルトの名無しさん
13/11/28 23:28:39.54
List<MyClassD> list = ...
list.ForEach(myClass => Foo.Hoge(myClass));
35:デフォルトの名無しさん
13/11/28 23:30:07.86
void Hoge(params MyClassA[] a) {
Hoge((IEnumerable<MyClassA>)a);
}
void Hoge(IEnumerable<MyClassA> a) {
// 処理
}
36:デフォルトの名無しさん
13/11/28 23:40:43.89
>>34
名前 '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); ←出来ない
}
たすけて
37:デフォルトの名無しさん
13/11/28 23:44:20.78
foreach(var b in a)
{
Console.WriteLine(b.str);
}
38:デフォルトの名無しさん
13/11/28 23:53:24.07
できた!できたかも!!ありがとみんな!
39:デフォルトの名無しさん
13/11/29 02:27:11.27
よかったなチンカス
40:デフォルトの名無しさん
13/11/29 07:33:51.32
ラムダ式についてなんだけど、定義と同時に実行ってできませんか?
static readonly 型 定数名 = [インスタンス生成、基本的な設定]
みたいな感じで
41:デフォルトの名無しさん
13/11/29 09:33:46.29
それを含んでるクラスの静的コンストラクタで実行したらいい
42:デフォルトの名無しさん
13/11/29 12:33:34.73
それが一番だろうなぁ。
実行して返すメソッドを定義するって手もあるけど、
型推論が効かなくなるので使いやすくはない。
43:デフォルトの名無しさん
13/11/29 12:35:56.73
プロパティの設定ぐらいなら
Application.Run(new Form() { Text = "simple form", Width=200, Height=100 });
44:デフォルトの名無しさん
13/11/29 17:04:04.88
Visual Studio 2013を使用しています。
標準のレポート機能の情報がMSのマニュアル以外はネット上にほとんどないんですが
これって使ってる人少ないんでしょうか?
45:デフォルトの名無しさん
13/11/29 23:44:24.31
vs2013入れるのは早すぎたわ
アドインが全然ない
ソースソートしてくれるやつほしいのにな
早く対応してくれよ
46:デフォルトの名無しさん
13/11/29 23:45:01.10
ソースソートって何をするものなんだ
47:デフォルトの名無しさん
13/11/30 00:39:36.88
VS2013は、たまにコード補完機能が動かなくなる時がある
48:デフォルトの名無しさん
13/11/30 01:45:16.19
コードソートだ
あれ便利だったのになー
49:デフォルトの名無しさん
13/11/30 01:46:11.33
それでコードソートは何をするんだ・・・?
50:デフォルトの名無しさん
13/11/30 03:28:25.66
メソッドやフィールドを綺麗に並べてくれたりするんだよ
51:デフォルトの名無しさん
13/11/30 08:19:47.54
CodeSorter
CodeSorter 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, ...).
URLリンク(visualstudiogallery.msdn.microsoft.com)
たしかに便利そうだが2010で打ち止めか
52:デフォルトの名無しさん
13/11/30 11:25:55.11
System.IO.BinaryReader br = new System.IO.BinaryReader(st);
brから一気にバイト列を読み込みたいんです。
ReadBytes()だとサイズ指定がありますが
元のストリームがHTMLの為上手くサイズが取得出来ないんですがどのようなやり方があるでしょうか?
・ReadBytes()の代わりに一気に読み込めるメソッドはあるか?
・ReadBytes()に指定するHTMLサイズを取得する為の方法は何か?
どちらかが分かれば解決するのですが。
53:デフォルトの名無しさん
13/11/30 11:29:24.79
HTTPのヘッダには普通Content-Lengthがあるだろ
無ければMemoryStreamにでもCopyToしてToArrayじゃないの
54:デフォルトの名無しさん
13/11/30 11:32:19.80
>>53
それが場合によってはContent-Lengthを返さないサーバがあるらしいので
この方法だと不安なんです…
後者の方法はどうやるのか少しご教授願えませんか?
55:デフォルトの名無しさん
13/11/30 11:35:29.60
using(var ms = new MemoryStream())
{
st.CopyTo(ms);
return ms.ToArray();
}
56:デフォルトの名無しさん
13/11/30 11:39:29.76
C#とVB.netの違いってなに?
C#もポインタは、実際は使えるようで使えないみたいだし。
57:デフォルトの名無しさん
13/11/30 11:42:30.41
>>55
バッチリできました!ありがとうございます!
58:デフォルトの名無しさん
13/11/30 11:42:47.17
VB.NETの演算の言語仕様はILとの整合性が低いので
コンパイル時にクソみたいなヘルパー関数呼び出しが大量に生成されます
あとTry-Catchもゴミまみれになる
59:デフォルトの名無しさん
13/11/30 11:45:05.84
根拠は?それほど違わないよ
60:デフォルトの名無しさん
13/11/30 11:46:33.99
chunkedだとContent-Lengthを返してはいけない
chunkedだと全部読み取るまでコンテンツサイズは判明しない
HTTP1.1の仕様のせい
chunkedがないとgzip等を返す場合一度tmpに出力しないといけなかったので
サーバー側は効率的ではあるのだが
61:デフォルトの名無しさん
13/11/30 11:48:43.83
いやヘルパー関数呼び出し大量発生は確かにその通りだよ
根拠はildasm
C#も2.0からはILとどんどん乖離していってるけど、VBランタイム相当のC#ランタイムが必要になるのはdynamicだけだね
62:デフォルトの名無しさん
13/11/30 11:54:22.71
>>60
そんな問題があったのですね。勉強になりました!
63:デフォルトの名無しさん
13/11/30 13:30:23.90
そういえばBooleanとString型の動作が少し違うな
64:デフォルトの名無しさん
13/11/30 19:16:18.54
XMLから要素名のわからない要素を取り出したいのですがどうすればよいでしょうか?
例えば、以下の様にOptionalAttributeという要素があり、
その場合は子要素を読み込み、要素名を取得したいと考えています。
どのようなメソッドを使えば良いでしょうか?
<AA Name="A1"
Category=""
Index="1">
<OptionalAttribute>
<BType>
<Value>A</Value>
<BType>
</OptionalAttribute>
なにとぞご教授ください。
65:デフォルトの名無しさん
13/11/30 19:24:39.87
XMLパーサーは何のクラス使ってるんだよ
66:デフォルトの名無しさん
13/11/30 19:56:19.49
要素名の分からない要素とかXMLの設計が悪いんじゃ・・・何のための属性だよ
67:デフォルトの名無しさん
13/11/30 20:01:07.71
XAMLの悪口は止めろ
まあOptionalかどうかは要素の有無で判断するのが普通だと思うけど
68:デフォルトの名無しさん
13/11/30 20:03:43.33
下のようなプログラムのとき
string s;
の宣言のときにnullをつっこんでるのはなぜ?
どーせ、すぐにsr.ReadLine()によって設定されるのに。
string s = null;
while((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
69:デフォルトの名無しさん
13/11/30 20:07:00.42
俺は無くてもいいものは書かない派
70:デフォルトの名無しさん
13/11/30 20:10:39.70
俺も書かないので分かりません
71:68
13/11/30 20:12:17.64
でも、教科書等々のサンプルソースなんかでは、よくこういうソースが出てくるん
なんで?
72:デフォルトの名無しさん
13/11/30 20:16:51.01
それは著者の気持ちを答えなさいってことか?
73:デフォルトの名無しさん
13/11/30 20:18:12.13
うん。
CやC++のmalloc()、free()名残?
74:デフォルトの名無しさん
13/11/30 20:19:55.14
代入をしないと変数定義できない言語の使い手なのではないか
世の中にはそういう難儀な言語もある
75:デフォルトの名無しさん
13/11/30 20:20:46.73
警告、エラー避けじゃね?
string s;
Console.WriteLine(s);
だとエラーだし
まあ、コンパイラに警告されない限り代入の必要はないと思うけど
76:デフォルトの名無しさん
13/11/30 20:21:26.14
Pythonの悪口は止めろ
77:デフォルトの名無しさん
13/11/30 20:23:08.82
Cなんかは変数宣言の段階じゃ初期値不定だからその名残でやってるんだろうな
別に悪い習慣ではないと思うがC#じゃいらんな
78:デフォルトの名無しさん
13/11/30 20:27:10.41
whileならいいけど、forとかusingとかの中で設定したあとブロック抜けた先で使いたい場合とかあるじゃん?
79:デフォルトの名無しさん
13/11/30 20:30:17.67
未定義になるコードパスがあったのを
いろいろいじっているうちにそのままになってた
ということもよくある話
80:デフォルトの名無しさん
13/11/30 20:30:19.24
>>78
これだろうな
81:デフォルトの名無しさん
13/11/30 20:31:34.92
stringだったら初期化にはString.Empty使うけどな
82:デフォルトの名無しさん
13/11/30 20:35:25.16
String.Emptyに初期化する必要性ない限りnullでいいよ
わずかだけど、null初期化の方がコストも少ないし
83:デフォルトの名無しさん
13/11/30 20:35:53.52
ローカル変数をstring.Emptyで初期化したほうが都合がいい場面って思いつかない
84:デフォルトの名無しさん
13/11/30 20:57:53.97
Datatableって、なんで任意の列だけを対象にして検索して、見つかった行の番号を返すって、良く使うコードが実装されてないの?
85:デフォルトの名無しさん
13/11/30 20:58:09.94
想像力の貧弱さの告白乙
86:デフォルトの名無しさん
13/11/30 20:59:56.17
じゃ、おしえて
87:デフォルトの名無しさん
13/11/30 21:17:15.48
var i = dataTable.AsEnumerable().ToList().FindIndex(r => r["column"].Equals(value));
とか書くと初心者にはすごく見えるし初心者以外には馬鹿にされるからおススメ
88:デフォルトの名無しさん
13/11/30 21:21:37.65
>>85
煽るな障害者
89:デフォルトの名無しさん
13/11/30 21:37:57.15
>>85
わかんないんじゃんw
90:デフォルトの名無しさん
13/11/30 21:42:05.82
主キーじゃなきゃ重複するだろ常識的に考えて
っていう理由じゃないかな
91:デフォルトの名無しさん
13/11/30 21:52:57.75
そもそもRDBのテーブルという概念は行の集合なので行番号は持たないのですよ
92:デフォルトの名無しさん
13/11/30 21:55:18.86
こんな10行で書ける処理に文句を垂れる奴は専用メソッドがあったところで
「DataColumnって何ですか」とか言い出すに決まってる
93:デフォルトの名無しさん
13/11/30 21:56:05.37
>>65
XDocumentとXElement使ってます
94:デフォルトの名無しさん
13/11/30 22:00:27.38
DescendentsとかでOptionAttributeさがしてそのElements().First()のNameとかそんなん
95:デフォルトの名無しさん
13/11/30 22:01:59.03
>>94
ありがとうござます!
試してみます!
96:デフォルトの名無しさん
13/11/30 22:03:26.23
.Elements("OptionalAttribute").Elements()の方がいい気がする
97:デフォルトの名無しさん
13/11/30 22:06:13.01
>>96
OptionalAttributeがないとクラッシュするじゃん
98:デフォルトの名無しさん
13/11/30 22:07:32.60
>>92
10行もかからねーだろw
99:デフォルトの名無しさん
13/11/30 22:20:52.53
intとDataRow型の宣言をしてforとifをブロックで書くとジャスト10行だけど煽ってコード書かせようってクチ?
100:デフォルトの名無しさん
13/11/30 22:22:17.13
※ここの住人は「まず煽る」ことから始めるのでスルー能力を磨いてから書き込みましょう
101:デフォルトの名無しさん
13/11/30 22:24:28.37
じゃあ俺はElementとElementsの違いに気づかない>>97を煽る
102:デフォルトの名無しさん
13/11/30 22:24:54.52
いや87ででてるじゃん? まだ冗長だけど
103:デフォルトの名無しさん
13/11/30 22:27:09.40
>>96
こういうコードたまに見るけど、もうなんというか
最も酷い
104:デフォルトの名無しさん
13/11/30 22:30:24.43
ユーザーコントロールを継承したクラスAを更に継承したクラスBを
Formに動的に追加してクリックイベントを発生させたいのだけど
クラスBでクリックイベントが発生しません
大部分の機能は同じだけどクリックされたときの挙動を幾つか用意したいので
クラスB1、B2のように作っていこうと思っているんだけどどうすればいいですか?
105:デフォルトの名無しさん
13/11/30 22:30:37.05
>>87はわざとお話にならないように書いたコードだぞ
106:デフォルトの名無しさん
13/11/30 22:32:34.62
>>105
それ以外の書き方を知らない人間はそうやって道化を演じるしかないからな
107:デフォルトの名無しさん
13/11/30 22:42:05.55
>>104
OnClick呼んでないとかイベントハンドラー登録してないとかそんな感じだろ
108:デフォルトの名無しさん
13/12/01 00:42:00.21
>>84
DataRow[] rows = datatable.Select("xxx = ...");
じゃだめなの?
こういう意味じゃ無い?
109:デフォルトの名無しさん
13/12/01 00:42:19.02
もしかして子コントロールのイベントはユーザーコントロールを継承したクラスAでしか取得できない?
クラスBで取得するにはコードでイベントハンドラを登録させるしかないのかな?
110:デフォルトの名無しさん
13/12/01 01:33:02.14
なぜかコンストラクタが削除されてて
InitializeComponentメソッドが読まれてなかっただけだった
慣れない継承したからてっきり継承のせいだと思ってた
111:デフォルトの名無しさん
13/12/01 01:55:04.14
あ、ちがった、やっぱり継承先では継承元の子コントロールのイベントは取得できないみたい
112:デフォルトの名無しさん
13/12/01 02:14:29.08
コントロールAをこうすればいいでしょ
protected virtual void button1_Click(object sender, EventArgs e)
{
}
113:デフォルトの名無しさん
13/12/01 02:56:37.81
それでいけました
あと、コントロールのmodifiersをProtectedにしてもできた
でも他のクラスから直接コントロールを操作できるようにするは作法としてよろしくないのかな
やっぱり>>112のように触ってもいいところだけ仮想メソッドなりで公開するのがいいのかな
114:デフォルトの名無しさん
13/12/01 06:03:19.27
private void button1_Click(object sender, EventArgs e)
{
this.OnButton1Click();
}
protected virtual void OnButton1Click()
{
}
こんな感じ
115:デフォルトの名無しさん
13/12/01 09:39:09.03
>>99
どうやったら10行も必要なの?
int i = datatable.Rows.IndexOf(datatable.Select(".............")[0]);
116:デフォルトの名無しさん
13/12/01 09:48:33.34
公式に10行で云々ってページがあるからさw
117:デフォルトの名無しさん
13/12/01 09:55:46.23
>>115
それ全件検索→配列作成→順次検索だからforで回すのの平均1.5倍かかるぞ
構文解析のコストとか無視しても
118:デフォルトの名無しさん
13/12/01 09:58:23.31
ついでに言うと短くしたいのならパフォーマンスがいいのは.Select().FirstOrDefault()とか
119:デフォルトの名無しさん
13/12/01 10:03:28.82
3倍だったわ
120:デフォルトの名無しさん
13/12/01 13:00:31.86
C#er が速度なんて考えてるとはおもわなんだ!!!
121:デフォルトの名無しさん
13/12/01 13:23:39.21
その程度の速度差が気になるならデータセットは使えないでしょうが
122:デフォルトの名無しさん
13/12/01 13:28:58.22
速度無視しても>>115はありえない
全レコード該当した場合n要素の配列が2個必要だぞ
123:デフォルトの名無しさん
13/12/01 13:29:00.90
前提条件が提示されていない中で
各々のポリシーに従って不毛な言いあいを続けるようなら
また両方にまぎれて煽りますよ
12時間くらい
124:デフォルトの名無しさん
13/12/01 13:29:32.23
普通にforで回すのが最速だと思う
125:デフォルトの名無しさん
13/12/01 13:31:40.19
今回はポリシー云々じゃなく万人が認めるべきアホなコードだから不毛じゃない
126:デフォルトの名無しさん
13/12/01 13:44:14.64
ほう。
こんな表現もあったか。
データ件数が100件程度以内なら
int i = datatable.Rows.IndexOf(datatable.Select(".............")[0]);
でいいなぁ。上にコメントでもつけてくれれば。
127:デフォルトの名無しさん
13/12/01 13:50:52.86
自演
128:デフォルトの名無しさん
13/12/01 13:53:20.67
filterExpressionが原因のバグが頻発しそう
129:デフォルトの名無しさん
13/12/01 14:02:42.61
頻繁するかは分からないけどリスクはあるよね
130:デフォルトの名無しさん
13/12/01 14:39:36.83
VBのほうが利用者多いんでしょ。
C#とVBに差がないんならC#を何で選ぶの?
C一族なの?
131:デフォルトの名無しさん
13/12/01 14:47:44.76
VB6から抜け出せない人用だし、選ぶ積極的理由が無いよ
132:デフォルトの名無しさん
13/12/01 14:54:36.05
利用者が多いってのは何の統計なんだね
133:デフォルトの名無しさん
13/12/01 14:58:13.95
当方C一族でして
134:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/12/01 16:40:56.88
VBコードなんて見づらくて最初からやる気しなかったな
136:デフォルトの名無しさん
13/12/01 17:52:29.22
スクリプトで遊び始めた頃にvbscriptを見るとなぜか吐き気を催したので
javascriptを選択してしまった流れで
137:デフォルトの名無しさん
13/12/01 18:14:32.16
>>130
低レベルなコードも書きたいならC#
COMと相互運用したいならVB.NET
常識だろ
138:デフォルトの名無しさん
13/12/01 18:14:34.87
C一族の者に御座る
139:デフォルトの名無しさん
13/12/01 18:16:20.04
Dim Unko As String
string unko;
どっちが見やすいかな?
140:デフォルトの名無しさん
13/12/01 19:56:01.66
vbはこれができるんだぜ
Dim number = 1, text = "hoge"
141:デフォルトの名無しさん
13/12/01 19:59:18.75
だからどうしたというレベル
142:デフォルトの名無しさん
13/12/01 20:02:11.62
ムムム
If 5 == 5 Then
Console.WriteLine();
End If
if (5 == 5)
Console.WriteLine();
どっちが見やすいんだよ?
143:デフォルトの名無しさん
13/12/01 20:10:15.18
C#スレで聞いてどうする
144:デフォルトの名無しさん
13/12/01 20:33:46.18
If 5 == 5 Then Console.WriteLine();
145:デフォルトの名無しさん
13/12/01 20:34:19.66
まだ間違ってるぞ
If 5 = 5 Then Console.WriteLine()
146:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/12/02 01:46:32.63
VBって未だにサブルーチン呼び出しは括弧付けたら駄目っつー変態バカ仕様でやってんの?
148:デフォルトの名無しさん
13/12/02 02:10:49.67
ListViewでListViewItem一個一個に
ユーザーデータを追加させたいのですが
(MFCのCListCtrlのSetItemData/GetItemDataみたいなやつ)
どのようにすればいいでしょうか?
149:デフォルトの名無しさん
13/12/02 06:47:01.04
Tag
150:デフォルトの名無しさん
13/12/02 08:13:07.79
ListViewを継承してお好きなプロパティでもなんでも持たす
151:デフォルトの名無しさん
13/12/02 08:13:48.83
×ListViewを継承してお好きなプロパティでもなんでも持たす
○ListViewItemを継承してお好きなプロパティでもなんでも持たす
152:デフォルトの名無しさん
13/12/02 08:49:50.39
コントロールは多くのプロパティをオーバライドできないのだけど
どういう設計思想なのこれは?
153:デフォルトの名無しさん
13/12/02 10:16:32.35
いいから黙って書け
154:デフォルトの名無しさん
13/12/02 12:19:57.30
>>152
.NetのComponentモデルの世界では
基本的にメソッド呼び出しやプロパティの読み書きは実行時に解決して呼び出す決まりで
ライブラリもそうなってるしユーザコードもそれに従わなくてはならない(まあ従わなくても動く事が多いが)
だからoverridesはなくshadowsを使えば良い
155:デフォルトの名無しさん
13/12/02 12:45:21.71
c#は最終的にはlinuxでも標準になるん?
156:デフォルトの名無しさん
13/12/02 13:53:00.15
C#で小数点を扱う場合、doubleの方が良いのでしょうか?
単純な計算の繰り返しだけならfloatの方が若干早くなりますが、
doubleとfloatが混ざってキャストしたりすると遅くなるので、
計算式にもよると思うのですが、doubleで統一しておいた方が無難でしょうか?
よろしくお願いします。
157:デフォルトの名無しさん
13/12/02 13:56:04.19
floatの利点は格納スペースが少なくてすむくらいかな
158:デフォルトの名無しさん
13/12/02 13:58:40.96
floatとdoubleの比較ならまあdouble一択でいいだろ
decimalとの比較は用途次第
159:デフォルトの名無しさん
13/12/02 14:53:24.25
>>157-158
ありがとうございます。
fを付け忘れたり、ただ割っただけですとdoubleにキャストしてしまいますので、
そこまで精度が必要で無くてもdoubleにて計算するようにします。
160:デフォルトの名無しさん
13/12/02 15:21:19.54
>>147
call 書けよ
161:デフォルトの名無しさん
13/12/02 15:55:58.31
>>149
ありがとう
162:デフォルトの名無しさん
13/12/02 20:42:14.83
型 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' の初回例外が Microsoft.CSharp.dll で発生しました
これが大量に出るのを抑制する方法はありますか?
163:デフォルトの名無しさん
13/12/02 21:14:30.01
vc2010を使っています
現在作成しているソリューションの一部を後々使いまわせるようにdll化したいと思っています
調べると別ソリューションを作成してクラスライブラリとして作成、コンパイルすればdllすることができるとあったので、別ソリューションで作成し、参照することも出来ました
ただ、今後の開発を考えると1つのウィンドウで作業していきたいのですが、異なるソリューションを同じウインドウで開発したり、
dllを参照している側でコンパイルするとdll側もコンパイルされるような設定はできますでしょうか?
別ウィンドウで作業し、dll側をコンパイル後、参照側をコンパイルすることしかできないのでしょうか
164:デフォルトの名無しさん
13/12/02 21:23:35.68
>>163
ソリューションからプロジェクト追加
165:デフォルトの名無しさん
13/12/02 21:25:04.58
依存関係の設定を忘れないように
166:デフォルトの名無しさん
13/12/03 14:35:06.49
ありがとうございます
「既存のプロジェクト追加」でdll側のcsを追加し、「参照の追加」でdll側のソリューションの作成したdllを指定しています
しかし「既存のプロジェクト追加」で追加したcsを編集してもdll側のcsには反映されてないようで、ビルドした際にもdll側のビルドはされていないようです
依存関係というのが大切そうなので、調べてみたところソリューションのプロパティから「プロジェクト依存関係」まで辿り着いたのですが、
dll側のプロジェクトが表示されておらず、設定ができませんでした
なにか設定が足りないのでしょうか
167:デフォルトの名無しさん
13/12/03 14:39:22.88
使いまわすだけならdllにしなくてもいいって疑問は無し?
168:デフォルトの名無しさん
13/12/03 14:50:36.50
とりあえず参照の追加で指定するのはdllプロジェクトかな、普通は
169:デフォルトの名無しさん
13/12/03 15:04:10.35
説明不足ですみません
もちろんdllを指定しています
>>167
他のアプリで使ったりと色々としたいことがあるので
170:デフォルトの名無しさん
13/12/03 15:17:00.61
追加するのはdllじゃなくてプロジェクトだぞ
171:デフォルトの名無しさん
13/12/03 15:18:39.21
もしかしてつかってるVSってEXPRESSか?
複数プロジェクトいけるEXPRESSっていつからだっけ
172:デフォルトの名無しさん
13/12/03 16:12:00.06
ありがとうございます
EXPRESSを使っています
いろいろ試してみて
メニューバーのプロジェクトの「既存のプロジェクト追加」ではなくソリューションエクスプローバーでソリューションを選んで「追加」を選択すると
「プロジェクト依存関係」が設定できるようになり、使用側のビルトでdll側もビルドされるようになりました
この2つが別物だったんですね・・・
もう1つ教えてください
上記の過程でdll側を一度ソリューションから作りなおしたのですが、今度はdllを参照に指定してもusingの宣言で「usingもしくはアセンブラがないよ」と言われるようになってしまいました
オブジェクトブラウザで見るとdllの名前空間が表示されておらず、ソリューションエクスプローバーのコンテナにはdllが表示されているという歪な状態になっています
試しに別名のtestというソリューション名、class1と言うクラス名でdllを作ってみると無事参照されてしまいました
dllのnamespace、class名が怪しいのかと思って確認しましたが、統一されてました
「オブジェクトブラウザで見るとdllの名前空間が表示されておらず、ソリューションエクスプローバーのコンテナにはdllが表示されているという歪な状態」についてわかることはありませんか?
173:デフォルトの名無しさん
13/12/03 16:35:07.83
すいません、自己解決しました
classにpublic付けてませんでした・・・
アホすぎわらえない
174:デフォルトの名無しさん
13/12/03 16:58:57.81
>>173
m9
175:デフォルトの名無しさん
13/12/03 17:03:21.71
>>173
どんまい
176:デフォルトの名無しさん
13/12/03 18:16:38.97
まずソリューションとプロジェクトとDLLの区別付ける所から初めて下さい
177:デフォルトの名無しさん
13/12/03 19:48:28.78
>>173
安心しろ。俺もはまったことがあるw
178:デフォルトの名無しさん
13/12/03 20:14:05.93
だから全部publicにしろって言ったんだ。
179:デフォルトの名無しさん
13/12/03 20:18:32.34
全部グローバル
180:デフォルトの名無しさん
13/12/03 20:26:05.45
全部スタティック
181:デフォルトの名無しさん
13/12/03 20:38:07.94
全部下請け
182:デフォルトの名無しさん
13/12/03 21:37:39.54
デバッグなしで実行とデバッグありで実行って
挙動としては何が違うんですか?
183:デフォルトの名無しさん
13/12/03 21:47:20.68
デバッグするかしないか
184:デフォルトの名無しさん
13/12/03 21:49:14.97
デバッガの子になるかならないか
185:デフォルトの名無しさん
13/12/03 23:33:53.23
アクセス修飾子の最適化問題はNP困難な割にやったところで大したメリットが無いから
解こうとしないほうが良い
186:デフォルトの名無しさん
13/12/03 23:44:24.00
アクセシビリティのエラーとか忘れること多いわ
187:デフォルトの名無しさん
13/12/04 00:03:07.88
Windows フォーム アプリケーション で、チェックボックスを使って
5つの選択肢の中から1つしか選択できないようにする方法ってありますか??
例えば、二つ目を選択しようとしたら、前に選択したチェックボックスのチェックは
ちゃんと消える、みたいな…
要するにアンケートみたいなものを作りたいんです
なんかわかりにくくてすみません
188:デフォルトの名無しさん
13/12/04 00:14:34.11
>>187
そういうケースではCheckBoxじゃなくてRadioButtonを使うのがWindowsのルールですよ
189:デフォルトの名無しさん
13/12/04 00:20:20.46
>>187
釣りだろ
ラジオボタン以外ありえんだろ
190:デフォルトの名無しさん
13/12/04 00:22:49.05
なんでも釣り釣りって
191:デフォルトの名無しさん
13/12/04 00:25:47.81
ラジオボタンはHTMLでもWindowsでもそのほかでも当たり前のように存在してるけど
あれをラジオのボタンと言われてもピンと来ないな
192:デフォルトの名無しさん
13/12/04 00:26:05.27
ラジオボタンでしたか すみません
ラジオボタンにした場合、どうしたらよいのでしょうか??
193:デフォルトの名無しさん
13/12/04 00:28:58.22
同じフォーム、同じパネル、同じグループボックスに放り込めば勝手に排他される
194:デフォルトの名無しさん
13/12/04 00:33:01.13
>>193
ありがとうございます!!調べてみたらいけそうです!!
195:デフォルトの名無しさん
13/12/04 00:33:50.24
そういやCheckBoxの中間のやつってどうするの
trueでもfalseでもないやつ
CheckBox.Checkedってnull非許容型だよね?
196:デフォルトの名無しさん
13/12/04 00:38:02.50
CheckState.Indeterminateだろ
197:デフォルトの名無しさん
13/12/04 00:39:25.09
そんなのあったんか
サンクス
198:デフォルトの名無しさん
13/12/04 08:40:56.70
staticクラス使えるのに未だにシングルトン使うやつがうざい
199:デフォルトの名無しさん
13/12/04 11:56:18.46
SplitContainerとかTableLayoutPanel使って、Anchor設定するとサイズが自動でグリグリ動いて気持ちいいんだけど、
ボタンとか配置した時に思うように動かないから、怖くて使えねぇ;;
みんなは使いこなしてるの?
200:デフォルトの名無しさん
13/12/04 13:46:18.31
C#でプログラミングしていて凄い発見をした。すべてstaticメソッドにするとアホみたいに捗る。
スレリンク(poverty板)
201:デフォルトの名無しさん
13/12/04 15:50:10.28
>>198
起動即初期化だから、staticクラスが使えない場合も少なくない
202:デフォルトの名無しさん
13/12/04 16:47:41.87
staticコンストラクタが動くのは、
初めて型にアクセスしたときだったような
203:デフォルトの名無しさん
13/12/04 18:01:12.07
>>201
それをお前に教えた奴つれて来いよ
膾にしてやる
204:デフォルトの名無しさん
13/12/04 18:13:29.76
URLリンク(www.microsoft.com)
C# Language Specification 5.0
10.12 static constructors (P713-714)
The execution of a static constructor is triggered by
the first of the following events to occur within an application domain:
* An instance of the class type is created.
* Any of the static members of the class type are referenced.
205:デフォルトの名無しさん
13/12/04 19:20:47.71
ジェネリック型のstaticメンバーをどうやって起動時に初期化すると思ったんだろうか
206:デフォルトの名無しさん
13/12/04 19:31:49.46
まったく関係ない話だが、VBはインスタンスフィールドをインスタンスメンバーで
初期化できるんだよね。
安全性を考えればC#の仕様の方が妥当なんだろうけど、時々この機能があったらと思うときがある。
207:デフォルトの名無しさん
13/12/04 19:32:49.44
上の初期化ってのは宣言と同時の初期化のことね。
208:デフォルトの名無しさん
13/12/04 20:03:43.93
そんなことよりoption引数の初期値にメンバ指定させろ
209:デフォルトの名無しさん
13/12/04 22:45:59.86
globalの使い道がわからん
210:デフォルトの名無しさん
13/12/04 22:51:15.22
名前が被らないようにするためにglobal::System.Consoleのようにして使う
基本的にコード自動生成ツールを作るときに念のため使うもので、普通は要らない
211:デフォルトの名無しさん
13/12/04 23:53:30.21
なるほど
普通は使わんな
212:デフォルトの名無しさん
13/12/05 00:12:54.30
無理やり必要にしてみる・・・
namespace Foo {
class System {
public const int Console = 0;
}
class Hello {
const int Console = 7;
static void Main() {
global::System.Console.WriteLine("Hello");
//System.Console.WriteLine("Hello"); // error
}
}
}
extern aliasと並んで使わない機能の2トップ
213:デフォルトの名無しさん
13/12/05 00:48:44.33
extern aliasはどうしても同じライブラリの別バージョンを使わないと仕方がない場合に神
一番意識して使うことが少ないのはpartial methodだろ
214:デフォルトの名無しさん
13/12/05 06:42:21.15
partialメソッドはカスタムツール作らなきゃ定義する必要がないし
T4のおかげで敷居は下がったのかな?
215:デフォルトの名無しさん
13/12/05 08:56:43.65
適当にHttpListener使って簡単な串作ろうとしたんだけど、
アドレスのホスト名がIPになるとListenerが受け付けてくれない。
具体的には、例えば URLリンク(google.co.jp) は受け付けるけど、
同じくグーグルのアドレス URLリンク(74.125.235.87) になると Bad Request (Invalid Hostname)
なんだけど、これは仕様なのかやり方が悪いのか回避方法があるのか分からないので教えてくだしあ
URLリンク(ideone.com)
216:デフォルトの名無しさん
13/12/05 08:58:14.86
管理者権限が必要よ