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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2009/02/27(金) 22:49:55
>>951
なるほど、ありがとう。
953デフォルトの名無しさん:2009/02/27(金) 23:24:33
プログラミングC# 第5版って評判どうでしょう
954デフォルトの名無しさん:2009/02/27(金) 23:24:38
質問 vs2008 sqlserver2005
主キーがint型でautoIncで自動採番のDBテーブルに対して
型付データセットのTableAdapterでクエリの追加から
クエリビルダ起動してINSERT文作成すると、
INSERT文の後ろにSELECT文が作られて
WHERE (hogeID = SCOPE_IDENTITY()
って書かれてるんだけど、
クエリビルダ完了してTableAdapterに追加されたInsert文のCommandプロパティ
見てみるとSelect文が消えてるのはなぜでしょう?

そもそもクエリビルダでは自動採番されたIDを取得することはできない?
955デフォルトの名無しさん:2009/02/28(土) 00:05:09
クエリビルダのどっかのオプションで、いまインサートしたデータを取得してdatasetを更新する
みたいなところにチェックをいれてるから。
956デフォルトの名無しさん:2009/02/28(土) 00:25:42
>>938
名前空間が別じゃない
System.Collections
System.Collections.Generic

957デフォルトの名無しさん:2009/02/28(土) 00:28:01
名前空間が別だろうと関係ない
基底クラスのメソッドと同じシグネチャを持つメソッドを定義すると警告は出る
958デフォルトの名無しさん:2009/02/28(土) 00:54:16
そっちでも警告が出るのね。了解。
非ジェネリックのGetEnumratorを実装する場合は明示的実装になるのかな?
やってみりゃわかるか。
959デフォルトの名無しさん:2009/02/28(土) 01:04:15
class Hoge<T> : IEnumerable<T> {
 public IEnumerator<T> GetEnumerator() {  ,,, }
 IEnumerator IEnumerable.GetEnumerator()
 {
   return GetEnumerator(); // こうかな。なんか落ち着かない・・
 }
960デフォルトの名無しさん:2009/02/28(土) 10:38:40
別フォーム(Form2)からForm1に配置したDagaGridViewへ値を代入したいのですが、
現在のセルと隣のセルへ値を代入する場合はどうしたらよいのでしょうか?

get { return dataGridView1.CurrentCell.Value; }
set { dataGridView1.CurrentCell.Value = value; }

これだと、現在アクティブなセルへの代入は出来るのですが、隣のセルへの代入が出来ません。
961デフォルトの名無しさん:2009/02/28(土) 10:44:14
timerが次に呼び出されるまでの残り時間を取得したいのですが、ググってもよくわかりませんでした。
どうすれば取得できるんでしょう。
962デフォルトの名無しさん:2009/02/28(土) 10:48:43
タイマー起動した時にDateTime.Nowを保存しておいて、必要な時にDateTime.Nowをもう一度
取得して引き算すれば良いんじゃ?
963デフォルトの名無しさん:2009/02/28(土) 10:59:14
>>960
プロパティじゃなくてメソッドにして複数の引数与えればいいじゃん?
964960:2009/02/28(土) 11:28:41
get { return dataGridView1[i, ii].Value.ToString(); }
set { dataGridView1[i, ii].Value = value; }
結局動的に選択セルを受渡しでOKでした。。
965デフォルトの名無しさん:2009/02/28(土) 11:31:24
パブリックフィールドにインデックスを代入させてからプロパティ呼び出しをするっていう
勝手規約を定めちゃったの?

それは良くない解決方だよ。>>963の言う通りにした方が良いよ。
966デフォルトの名無しさん:2009/02/28(土) 11:34:22
>>964みたいにするくらいならdataGridViewをパブリックに公開した方がマシだよ
意味がない
967960:2009/02/28(土) 11:52:34
ダメダメ解決法なのか _| ̄|○ il||li

複数の引数をあたえるって言うと、どんな感じにするんですしょう?
968965:2009/02/28(土) 11:58:42
>>967
プロパティを止めて、メソッドにするって事。メソッドの定義の仕方は分かるよね?

他の方法として、>>966が書いているdataGridView1をパブリック公開するって方法がある。
これはdataGridView1の色々なプロパティを弄られるのがOKな場合限定の解決法。

もう一つの方法は、インデクサを使う。これは、dataGridView1[].Valueの取得、設定が
そのフォームの外部に公開する最も主要な機能である場合にだけ用いる限定的な方法。

というわけで、一つ目がお勧め。
969デフォルトの名無しさん:2009/02/28(土) 12:59:16
むしろインデクサでいいじゃん
970デフォルトの名無しさん:2009/02/28(土) 13:00:43
かっこインデクサ
971デフォルトの名無しさん:2009/02/28(土) 13:03:10
メッソッドっていわゆる関数のことですよね?
public string DataGridViewCel
{
get { return dataGridView1[0, i].Value.ToString(); }
set { dataGridView1[0, i].Value = value; }
}
iには現在のセルのRowが入ります。
現在はこんな感じにして、別FormからDataGridViewCellに値を代入してるのですが。。
もしよろしければ、具体的なコードを教えて頂きたい。。
972デフォルトの名無しさん:2009/02/28(土) 13:13:37
もうそれでいいよ
973デフォルトの名無しさん:2009/02/28(土) 13:24:49
>>971
君が書いているのはプロパティ。
メソッドの書き方を勉強して。
974デフォルトの名無しさん:2009/02/28(土) 14:26:41
>>971
public void SetDataGridView(int columnindex, int rowindex, string value){
dataGridView1[columnindex,rowindex].Value = value;
}

public String GetDataGridView(int columnindex, int rowindex){
return dataGridView1[columnindex,rowindex].Value.ToString();
}
975デフォルトの名無しさん:2009/02/28(土) 17:12:06
public string Print{
  set{Console.WriteLine(value);}
}
976デフォルトの名無しさん:2009/02/28(土) 17:34:14
おおっ、これがメソッドの書き方か〜。勉強になるな〜。
977デフォルトの名無しさん:2009/02/28(土) 17:35:59
いやいやいったい今まで何を勉強してきたんだ。
978デフォルトの名無しさん:2009/02/28(土) 18:25:56
public byte[] Read{
  get{
    byte[] b=new byte[value];
    stream.Read(b);
    return b;
  }
}
979デフォルトの名無しさん:2009/02/28(土) 20:15:03
メソッド知らなくてプロパティを知ってる、
というのも何だか凄いね、どういう学習順序なんだろう。
980デフォルトの名無しさん:2009/02/28(土) 23:24:50
>>979
最初にコピペしたサンプルコードに依存するのでは?
981デフォルトの名無しさん:2009/02/28(土) 23:38:47
雛鳥が卵から出てきて最初に見た動く物を親だと認識するようなものですか。
982デフォルトの名無しさん:2009/03/01(日) 00:03:24
すりこみ?
983デフォルトの名無しさん:2009/03/01(日) 00:29:22
>>981
それは しょうゆ です
984デフォルトの名無しさん:2009/03/01(日) 00:49:53
985デフォルトの名無しさん:2009/03/01(日) 01:02:22
しょうゆう事
986デフォルトの名無しさん:2009/03/01(日) 04:46:59
メソッドの中でしか使わないけど値を保持しておきたいローカル変数ってたまにありますけど、
C++ならstatic変数にしちゃえば実現できますがC#では使えません。
クラスを再利用したりする上でお行儀が悪い事はわかりますが、
こういう場合はフィールドとして持つしかないんでしょうか?
特定のメソッドだけが参照できるようなスコープにしたいです。
じゃないとクラスの属性としては相応しくないフィールドが増えたり、
無駄に変数名を考えなくちゃいけなかったり、
別のクラスを作って実現しようにもあまりにも生産性が低いと思います。
987デフォルトの名無しさん:2009/03/01(日) 04:49:53
> メソッドの中でしか使わないけど値を保持しておきたいローカル変数ってたまにありますけど、
ない。
988デフォルトの名無しさん:2009/03/01(日) 04:54:15
>>986
クラスから独立した関数というのは存在しないから、フィールドに持てって事だな。
VBには関数内に宣言できるStatic変数があるのだけどC++と動作が違うのでバグの元なんだな。
989デフォルトの名無しさん:2009/03/01(日) 05:25:42
>>987
例えばゲームなんかだとそれぞれに独立したカウンタなんかを持たせたい時に必要です。
それすらも別クラスにわけろというなら著しく生産性が落ちまくります。

>>988
デリゲートとか拡張メソッドとかあるんだから、
追加機能として特定のメソッドだけに参照できるフィールドのような機能が追加されてもよさそうですが、
ダメな理由ってあるんですかね。
机上の理論だけのオブジェクト指向ってもう古いと思います。
990デフォルトの名無しさん:2009/03/01(日) 05:34:52
続きは相談スレでどうぞ
991デフォルトの名無しさん:2009/03/01(日) 08:10:05
>>986
yield return;をうまく使うとか。
992デフォルトの名無しさん:2009/03/01(日) 08:16:59
>>986
そんなユーティリティクラスを作ればいいのかな?
実例があれば代価案が出せるかも
993デフォルトの名無しさん:2009/03/01(日) 08:21:40
単純にパラメータにする方が適切だけと思うけどねぇ。
「たまにある」程度のことなのに著しく生産性が〜ってのもよくわからん。
994デフォルトの名無しさん:2009/03/01(日) 08:23:01
>>989
>机上の理論だけのオブジェクト指向ってもう古いと思います。 
つ F# これからは関数型っすよ
995デフォルトの名無しさん:2009/03/01(日) 08:29:13
っ Rules

これからもビジネスルールですよ
996デフォルトの名無しさん:2009/03/01(日) 08:37:43
>>995
それの笑うポイントはどこ?
997デフォルトの名無しさん:2009/03/01(日) 08:46:03
ふらっとC#,C♯,C#(初心者用) Part38
http://pc11.2ch.net/test/read.cgi/tech/1235864730/
998デフォルトの名無しさん:2009/03/01(日) 08:47:17
Railsのつもりだったらそれだ
999デフォルトの名無しさん:2009/03/01(日) 08:58:00
>>989
フィールドに宣言すればいいこと。
メソッド内にスタティック変数を自在に作られたりしたら後で面倒なことになる
関数スタティック変数をリセットしたいときはどうするの?インスタンスが複数のときはどうするの?
1000997:2009/03/01(日) 09:09:22
誰かほめろよ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。