07/03/12 17:59:22
>>150
そういわれれば当たり前ですね、だめだ頭回ってないなー自分
ありがとうございましたー
155:デフォルトの名無しさん
07/03/12 18:57:13
>>140
てっとり早くIEnumerable<T>型として返すのもあり
156:デフォルトの名無しさん
07/03/12 21:47:53
>>139
逆じゃないの?
aspxでSQL引っ張るんじゃないの?
157:デフォルトの名無しさん
07/03/12 23:42:06
いろんな数値型に対応したいとおもい、引数および戻り値をオブジェクト型にした計算関数を作成するとした場合
(引数a,bおよび戻り値の3つのデータ型は同じデータ型であるという前提です。)
object Calc(object a, object b)
{
if(a is byte) return (byte)a + (byte)b;
if(a is int) return (int)a + (int)b;
if(a is long) return (long)a + (long)b;
(以下数値型のデータ型分続く)
・・・
・・・
}
といった感じで今は数値型(+や-の演算子が使える型)の全データ型分を書いています。
このように全データ型分書かなくても同様のことが行えるいい方法があればご教授願えませんか?
158:デフォルトの名無しさん
07/03/12 23:46:10
基本的には無理
それよりobject型はまずいだろ
型ごとに個別に処理書いてるんならなんでオーバーロードしない
159:デフォルトの名無しさん
07/03/12 23:48:01
>>157
汚い技を使わない限り無理。
素直にオーバーロードしとけ
160:デフォルトの名無しさん
07/03/12 23:48:37
演算子が入ってくるとどうしようもない
あと、面倒なのは分かるが引数の型ごとにオーバーロードにした方が良いな
それから、byte 同士の加算の結果がどうなるか把握してる?
161:デフォルトの名無しさん
07/03/12 23:55:04
メソッドに属性付けといてVisualStudioのマクロ機能を使って自動生成するとか
162:157
07/03/13 00:04:46
了解です。
演算子が入ると無理なんですね。
皆さんレスありがとうございました。
この関数を呼び出す前のaとbに渡されるものがすでにDLL化された関数が出力するデータでそれがobject型となっているからです。
オーバーロードというのも考えたのですが、そうなると呼び出し側で型判定し、データ型分の関数を用意することになってしまうので
簡潔に書きたかったからこのようにしました。
>>160
byte同士の加算結果はオーバーフロー発生の場合は255を返す処理にしています。
(そのほかの型でもオーバーフローが発生したらMaxValueを返すようにしています。)
163:デフォルトの名無しさん
07/03/13 00:11:22
>>162
try { return (byte)a + (byte)b; }
catch (OverflowException ex) { return byte.MaxValue; }
みたいなコードだったりしないよな?
いや、分かってるなら良いんだけど。
ちなみに、上記の演算は決して例外が発生しない。
164:157
07/03/13 00:23:33
はい、例外が発生しませんので、
return ((byte)a + (byte)b > byte.MaxValue ? byte.MaxValue : (byte)a + (byte)b);
と書いています。
165:デフォルトの名無しさん
07/03/13 00:42:15
コンパイラオプションで例外出せたような
166:デフォルトの名無しさん
07/03/13 00:47:46
ユーザに対して数値しか入力をさせたくない場合に
例えばユーザが下記ユーザID入力項目にアルファベットの
Aを入力した場合に、KeyCodeが1から9の範囲に無いので
入力を破棄するにはどうすれば良いでしょうか?
ユーザID □□□□□
※入力値チェックをするのではなくそもそも最初から数字以外を入力不可に
したいです。
ご存知の方がいらしましたら教えて下さい。
167:デフォルトの名無しさん
07/03/13 00:54:12
textBox.KeyPress += delegate(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < '1' || e.KeyChar > '9') && e.KeyChar != (char)Keys.Back)
e.Handled = true;
}
168:166
07/03/13 01:13:49
>>167さん
ありがとうございます!!
169:デフォルトの名無しさん
07/03/13 01:38:01
コピペされるとマズい気が。
170:デフォルトの名無しさん
07/03/13 09:46:34
textbox numeric でググるくらいのことはしろよ。
171:デフォルトの名無しさん
07/03/13 10:44:47
>>166
GetWindowLong/SetWindowLongとES_NUMBERで実現できます。
ちなみにXPで実行するとバルーンチップも出てきます。
>>88 亀ですが
VBではSubやFunctionやPropertyの正式な呼び名はプロシージャです。これは
Quick BASICの頃からそうです。
ただほとんどの人はサブルーチンとか関数とか呼んでる気がします。
172:デフォルトの名無しさん
07/03/13 11:14:30
MaskedTextBox使わんの?
2002/2003?
173:デフォルトの名無しさん
07/03/13 12:02:43
ワイルドカードを含んだパス(たとえば"C:\hoge\*.txt"とか)に該当するファイルを列挙する方法はあるんでしょうか。
174:デフォルトの名無しさん
07/03/13 12:19:49
System.IO.Directory.GetFiles