C#, C♯, C#相談室 Part42
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/08/26(日) 12:42:25前スレ
C#, C♯, C#相談室 Part41
http://pc11.2ch.net/test/read.cgi/tech/1184840053/
過去スレは>>2-5あたり。
0609デフォルトの名無しさん
2007/09/15(土) 00:32:420610デフォルトの名無しさん
2007/09/15(土) 00:33:44なんでそんなに必死なの?
0611デフォルトの名無しさん
2007/09/15(土) 00:35:04単一のメソッドで処理が完結するような場合など
状態情報を維持する必要がないようなメソッドは
最初からスレッドセーフだ。
っていうか複数スレッドで競合する部分がそもそもないし。
0612デフォルトの名無しさん
2007/09/15(土) 00:35:400613デフォルトの名無しさん
2007/09/15(土) 00:37:06「素人」って言葉が痛かったとかw
0614デフォルトの名無しさん
2007/09/15(土) 00:38:37俺は607と610だけですがなにか?
0615デフォルトの名無しさん
2007/09/15(土) 00:44:070616デフォルトの名無しさん
2007/09/15(土) 00:56:33適切なコードを書かなければスレッドセーフじゃないんでしょ。
だから適切なコードは何で適切じゃないコードはなんなの?
ASP.NETはstaticなメソッドなんか書いたら、その中で使われる変数とか
他のセッションからでも共用されちゃうでしょ?
0617デフォルトの名無しさん
2007/09/15(土) 01:01:26>他のセッションからでも共用されちゃうでしょ?
どんな変数使う気だ?
これはそもそもObjectDataSourceみたいなやつの
メソッドの話だよな?
0618デフォルトの名無しさん
2007/09/15(土) 01:03:30スレッドセーフにはならんだろ
0619デフォルトの名無しさん
2007/09/15(土) 01:47:23なぜstaticなの?
0620デフォルトの名無しさん
2007/09/15(土) 01:55:40インスタンスにする必要もないからだろ。
0621デフォルトの名無しさん
2007/09/15(土) 01:57:27そこまで極端じゃないにせよ、
0622デフォルトの名無しさん
2007/09/15(土) 01:59:04特にObjectDataSourceの使い方じゃ本質的にはそれと変わらんてこと。
Mathのメソッドがstaticだからって、スレッドセーフなのかとか、
ロックされててパフォーマンスが悪いんじゃないかとkじゃ思うかね?
0623デフォルトの名無しさん
2007/09/15(土) 03:44:250624デフォルトの名無しさん
2007/09/15(土) 05:14:29スタティックで済むならスタティックで書けってことじゃね
0625デフォルトの名無しさん
2007/09/15(土) 05:34:470626デフォルトの名無しさん
2007/09/15(土) 07:13:43基本的にステートレスで作れってこと。ステートレスなら基本的にスレッドは気にしなくてよい。
staticを使わない場合はメソッドを呼び出すごとにインスタンスを作って終わると破棄する
SingleCallモデルになっている。
一般的にはSingletonが用いられるケースなんだろうけどMSはなぜかあまり使いたがらないね。
0627デフォルトの名無しさん
2007/09/15(土) 10:27:36どんな理屈だw
0628デフォルトの名無しさん
2007/09/15(土) 11:04:58C++のメンバ関数の実装を想像して、thisポインタの分が節約できるかも、と考えたが
CLRだと変わらないんだっけ?
0629デフォルトの名無しさん
2007/09/15(土) 11:04:59普通にFxCopとかでstaticにしろやって言われるやん
0630デフォルトの名無しさん
2007/09/15(土) 11:13:16ファクトリとか指定できるようになってたらSingletonにしたりとかもっといろいろできるんだけど、
フレームワーク側で勝手にシングルトンはできてもあまりうれしくもないと思う。
0631デフォルトの名無しさん
2007/09/15(土) 12:31:17の時、下の2つは何が違うんですか?
function(obj);
function(ref obj);
参照型の場合refありもなしも変わらないんですか?
0632デフォルトの名無しさん
2007/09/15(土) 12:35:12{
obj = new NewObject();// このメソッド内でしか意味がない
}
void fuction2( ref object obj )
{
obj = new NewObject();
}
object obj = new object();
function(obj); //何もおこらず
function2(ref obj); //objはもう昔のobjじゃないわ
0633デフォルトの名無しさん
2007/09/15(土) 12:35:140634631
2007/09/15(土) 12:41:52関数内でnewしない場合は関係ないんですね。
関数内で参照先の値を変更するだけで、newしない場合も
コード的には明示的にrefをつけといた方がいいんですかね?
もしくは参照型を引数にとる関数で引数にrefをつける=関数内で新たにnewしちゃう関数なんだぜ!
て意味合いがあるんですか?
0635デフォルトの名無しさん
2007/09/15(土) 12:43:580636デフォルトの名無しさん
2007/09/15(土) 12:44:31void fun02(ref int x) { x = 2; }
int foo = 1:
fun01(foo); // foo の値は 1 のまま
foo02(ref foo); // foo の値は 2 に変わる
0637デフォルトの名無しさん
2007/09/15(土) 12:45:22ではrefなしで行きたいと思います。
ありがとうございました〜
0638デフォルトの名無しさん
2007/09/15(土) 12:55:03フレームワークなど基盤部分で値型を扱う際に、
内部的に使うことはあるかもしれんが。
0639デフォルトの名無しさん
2007/09/15(土) 13:03:27教条主義的に否定する馬鹿にはならないで欲しいな。
この業界そういう馬鹿が案外多いから
0640デフォルトの名無しさん
2007/09/15(土) 13:10:37privateな関数で、メンバ変数、メンバ関数に一切アクセスしない場合
private staticにしたほうがいいんですか?
staticつきでも、なしでも動作は同じなんですけど。呼び出し方が変わるくらいで。
0641デフォルトの名無しさん
2007/09/15(土) 13:13:050642デフォルトの名無しさん
2007/09/15(土) 13:13:18気をつけます!
(といっても趣味なので話す相手もいませんが。。)
0643デフォルトの名無しさん
2007/09/15(土) 13:17:45なるほど。どうもです
0644762
2007/09/15(土) 13:49:15XNA Frameworkなんかパフォーマンス目的でrefやoutだらけだよ
void Matrix.Multiply (ref Matrix matrix1, ref Matrix matrix2, out Matrix result)
みたいに
0645デフォルトの名無しさん
2007/09/15(土) 13:50:46その気持ち自体はとってもよく分かるんだが、
現実は結構加減が難しくない?
自分がレビューとかできる範囲ならまだいいんだけどね〜
0646デフォルトの名無しさん
2007/09/15(土) 13:53:37実質同じこといってるような気がする。
0647デフォルトの名無しさん
2007/09/15(土) 15:53:530648デフォルトの名無しさん
2007/09/15(土) 22:31:15.NETからoracleに接続をする、つまりDB接続文字列が分かりません。
String sConnectionString = "Provider=MSDAORA;User ID=sys;password=test_pass ; Data Source =ORCL10GR2;Persist Security Info=False";
恐らく
1)Provide
2)Data Source
の部分が怪しいと思うのですが、この部分はどうすれば適切なDB接続
文字列を見つける事が出来るでしょうか?
以上 どなたかoracleに詳しい方お教え願います。
0649デフォルトの名無しさん
2007/09/15(土) 22:41:23スレ違い。
0650デフォルトの名無しさん
2007/09/15(土) 22:46:150651デフォルトの名無しさん
2007/09/15(土) 22:59:31VS2005のメニューで「ツール」→「データベースの接続」でデータベースに接続できるなら、
サーバーエクスプローラ上の接続済みデータベースのプロパティに接続文字列が表示されるけど、
それでも駄目かな(実際にOracle使っていないので保証できないけど)?
0652デフォルトの名無しさん
2007/09/15(土) 23:44:37ttp://www.connectionstrings.com/
0653デフォルトの名無しさん
2007/09/15(土) 23:50:450654デフォルトの名無しさん
2007/09/16(日) 00:06:38Oracle10g Express Editionに接続をしようと
>>651さんのおっしゃる手順にて試した上でプロパティにて確認を行い、
テスト接続を行ったところ正常に接続は出来ました。
しかしながら、自動生成された接続文字列をコードの中に次の様に指定して
いるのですが接続が出来ません。
string constr1 = "Data Source=127.0.0.1;Persist Security Info=True;User ID=test_user;Unicode=True";
OracleConnection con = new OracleConnection(constr1);
con.Open(); //←この部分でエラーが発生します。
0655654
2007/09/16(日) 00:07:49そんな便利なサイトがあったんですね。ありがとうございます。
そちらも参考にしつつ試してみます。
0656654
2007/09/16(日) 00:14:08状態なのです。しかしながらOracle10g Express EditionのWEB上から
createしたテーブルが見えません。(TB_TESTテーブル)
>>651の手順で「正常に接続が出来ました。」というガイダンスが
表示されたのですがそもそも接続先が違っているのでしょうか?
【VS2005 Server Explorer状況】
Data Connections
127.0.0.1.TEST_USER
Tables
WWV_FLOW_DUAL100(FLOWS_020100)
WWWV_FLOW_FIELD_TEMPLATES(FLOWS_020100)
WWWV_FLOW_LIST_OF_VALUES_DATA(FLOWS_020100)
・
・
・
(TB_TESTテーブル が本来見えるハズなのに見えません。)
0657デフォルトの名無しさん
2007/09/16(日) 00:34:240658651
2007/09/16(日) 00:35:39さっきも書きましたが、Oracleを使っていないので、
Oracleのスレに書き込んだほうがいいですよ
(ここまでくると完全にスレ違いですし^^;)。
作成した側で作成したテーブルが見えているなら、
>>654さんの言うとおり、参照先(インスタンスもしくはデータベース)が違うのでしょう。
OracleのVS2005アドオンツールを使って、
VS2005上で直接テーブル設計するのもいいかもしれません。
http://www.oracle.com/technology/tech/dotnet/tools/index.html
06596567
2007/09/16(日) 00:44:37色々試してみましたところ何とか接続する事は出来ました。
ありがとうございます。
0660デフォルトの名無しさん
2007/09/16(日) 03:32:410661デフォルトの名無しさん
2007/09/16(日) 07:59:100662512
2007/09/16(日) 09:06:24function(obj); の場合、メソッド内にObjectのコピーが作成されるのでしょうか?
0663デフォルトの名無しさん
2007/09/16(日) 09:08:140664デフォルトの名無しさん
2007/09/16(日) 10:17:43「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
ちなみに、function(obj)が値渡し、
function(ref obj)が参照渡し(・・・だったはず)
0665デフォルトの名無しさん
2007/09/16(日) 10:50:29「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
0666デフォルトの名無しさん
2007/09/16(日) 13:50:180667デフォルトの名無しさん
2007/09/16(日) 13:57:31「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
0668デフォルトの名無しさん
2007/09/16(日) 14:10:060669デフォルトの名無しさん
2007/09/16(日) 14:13:19「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
0670デフォルトの名無しさん
2007/09/16(日) 14:15:230671デフォルトの名無しさん
2007/09/16(日) 14:16:42「値渡し」と「参照渡し」を調べてみるといいよ。
こういうプログラミング概念は、
他の言語でも使われているので、
理解しておいても損はない。
0672デフォルトの名無しさん
2007/09/16(日) 14:22:240673デフォルトの名無しさん
2007/09/16(日) 14:22:46繰言クンも馬鹿だな、まで読んだ。
0674デフォルトの名無しさん
2007/09/16(日) 14:24:54>>673
0675デフォルトの名無しさん
2007/09/16(日) 14:34:260676デフォルトの名無しさん
2007/09/16(日) 15:07:380677デフォルトの名無しさん
2007/09/16(日) 15:18:59JavaでいうCalendar.JANUARYのような定数はC#ではどこにおいてあるのでしょうか?
0678デフォルトの名無しさん
2007/09/16(日) 15:30:510679デフォルトの名無しさん
2007/09/16(日) 15:42:320680デフォルトの名無しさん
2007/09/16(日) 15:44:17intの1 ~ 12でいいよ。
0681デフォルトの名無しさん
2007/09/16(日) 15:45:25.NETは1-12だからそのまま使え。
0682677
2007/09/16(日) 15:53:45enum自作します・・・
0683デフォルトの名無しさん
2007/09/16(日) 15:59:260684デフォルトの名無しさん
2007/09/16(日) 16:03:030685デフォルトの名無しさん
2007/09/16(日) 16:04:060686デフォルトの名無しさん
2007/09/16(日) 16:12:24と思ったがMONTHLYDATEとかのときに作る羽目になったなそう言えば
0687デフォルトの名無しさん
2007/09/16(日) 16:16:46コードが見やすいかどうか、というより(まあ数字の方が見やすいのはたぶん日本人ぐらいのものだと思うが)
「月の名」っていう型が存在することの方が重要でしょ。
0688デフォルトの名無しさん
2007/09/16(日) 16:19:280689デフォルトの名無しさん
2007/09/16(日) 16:22:23Flags 属性が必要な場合なんか列挙体にするしかないし
// ロケールとの食い合わせが悪いのは仕方なし
0690デフォルトの名無しさん
2007/09/16(日) 16:22:56しかしイスラム暦やチャイニーズカレンダーでコード書く必要ってそんなにあるの?w
0691デフォルトの名無しさん
2007/09/16(日) 16:29:17enumでも範囲チェックはできないがな
0692デフォルトの名無しさん
2007/09/16(日) 16:30:09日本人なんだから見やすい数字を選ぶほうが当たり前だろ。
で、なにが重要なの?
0693デフォルトの名無しさん
2007/09/16(日) 16:36:44重要じゃないと思うなら思っても別にいいんだが、
それならboolをすべてintで代用(いやboolが本来「代用」なんだが)している
コードをみても文句を言うなよ。
0694デフォルトの名無しさん
2007/09/16(日) 16:39:27enum 月
{
睦月 = 1,
如月 = 2,
弥生 = 3,
...
}
0695デフォルトの名無しさん
2007/09/16(日) 16:40:510696デフォルトの名無しさん
2007/09/16(日) 16:42:40月が必要なら、enum { DAY1, DAY2, DAY3 .... DAY31 } も必要になるか。
その調子で enum { YEAR0001, ... YEAR9999 } は...勘弁してください。
0697デフォルトの名無しさん
2007/09/16(日) 16:58:590698デフォルトの名無しさん
2007/09/16(日) 18:10:150699デフォルトの名無しさん
2007/09/16(日) 18:19:130700デフォルトの名無しさん
2007/09/16(日) 19:06:020701デフォルトの名無しさん
2007/09/16(日) 20:09:080702デフォルトの名無しさん
2007/09/16(日) 22:35:21スパゲッティ量産するんだからVB厨はこっちに来ないでよ
0703デフォルトの名無しさん
2007/09/16(日) 22:41:120704デフォルトの名無しさん
2007/09/16(日) 23:00:13本人に向かって言うわけ無いだろ?
0705デフォルトの名無しさん
2007/09/16(日) 23:40:46実行速度はVB6より遅いことに疑問をはさむ余地はないのにね
0706デフォルトの名無しさん
2007/09/16(日) 23:43:380707デフォルトの名無しさん
2007/09/16(日) 23:45:510708デフォルトの名無しさん
2007/09/16(日) 23:52:58せっかくだから自慢のVB6で挑戦してみたら?
ttp://d.hatena.ne.jp/siokoshou/20070411
■ このスレッドは過去ログ倉庫に格納されています