C♯, C#相談室 Part34
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2006/11/02(木) 20:45:59前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0809デフォルトの名無しさん
2008/03/19(水) 18:48:370810デフォルトの名無しさん
2008/03/19(水) 19:44:090811デフォルトの名無しさん
2008/03/19(水) 21:14:140812デフォルトの名無しさん
2008/03/19(水) 21:38:24それって>>783のことだと思うけどね。
こういうバカ?
それって君とか>>783みたいなバカのこと?w
0813デフォルトの名無しさん
2008/03/19(水) 21:39:32そんなの簡単だろ・・・と思ってやってみると意外とできないねこれ
0814デフォルトの名無しさん
2008/03/21(金) 11:21:46Converter<T>やPredicate<T>などを使う意味はあるのでしょうか?
0815デフォルトの名無しさん
2008/03/21(金) 11:22:300816デフォルトの名無しさん
2008/03/21(金) 13:13:34前からいちいち定義するのがいやでDelegate<Result,Param1,Param2>とか普通のメソッドの型の順番にあわせて使ってたんだが、
Funcniそのまま使えないんだよなぁ・・・どうしよう
0817デフォルトの名無しさん
2008/03/23(日) 20:49:21ラムでDBNull.Valueに設定したとき、セルにNullValueの値を表示す
るにはどうしたらいいのですか?
MSDNライブラリには、DBNull.Valueを設定するだけではできないと書
いてあるけど...
セルの値がDBNull.Valueで、セルの表示はNullValueの値にする方法
を教えてください。
0818デフォルトの名無しさん
2008/03/23(日) 21:08:560819デフォルトの名無しさん
2008/03/23(日) 21:43:29ありがとうございます。よく読んだらその通りでした。
その列の型はstringで、DataSourceNullValueを設定してないため、MSDNライブラリの
「DataSourceNullValue が DBNull.Value で、セルの ValueType が参照型」に見事に
合致してました。
DataSourceNullValueをstring.Emptyにして試してみます。
0820デフォルトの名無しさん
2008/03/24(月) 18:48:31はないですか?オーナーをコレクションとしてラッピングするくらいしか
思いつかなくて。
0821デフォルトの名無しさん
2008/03/24(月) 18:55:21何か問題があるのか?
0822デフォルトの名無しさん
2008/03/24(月) 19:09:340823デフォルトの名無しさん
2008/03/24(月) 19:55:39そういう用途だとObservableCollection使っておくといいんじゃないかね。
ttp://msdn2.microsoft.com/ja-jp/library/ms668604.aspx
0824デフォルトの名無しさん
2008/04/01(火) 14:57:38int data = new int[5][5];
に数値データが入っているとして、例えば全要素を表示させることを考えます。
その際あえて、ポインタを使ってアクセスすることを考えてます。
(ポインタなんて使わず、添字を使えばいいというのはわかっていますが、 あくまで、勉強のためということで。。。)
ポインタ(*p)を使う方法はわかるのですが(ソースの上半分)、ポインタのポインタ(**p)を使ったやり方が(ソース下半分)がわかりません。
ちなみに具体的にはソース中の<<<<data>>>の部分の書き方がわかりません。
(もしかしたら、ぜんぜん違うのかもしれませんが。。。) わかる方教えていただけないでしょうか?よろしくお願いします。m(_ _)m
//とりあえず うまくいった ポインタ を使う方法
fixed (int* p = &data[0][0]) {
for (int* px = p; px != p + 5; px++) {
for (int py = *px; py != *px + 5; py++)
Console.Write("<" + (int)&py + "," + py + ">");
Console.WriteLine();
}
}
//うまくいかない ポインタのポインタ を使う方法
fixed (int** p = <<<<data>>>) {
for (int** px = p; px != p + 5; px++) {
for (int* py = *px; py != *px + 5; py++)
Console.Write("<" + (int)py + "," + *py + ">");
Console.WriteLine();
}
}
0825デフォルトの名無しさん
2008/04/01(火) 16:01:03ポインタなんて使わず、添字を使え
こうですか?
C#でわざわざポインタなんて勉強する価値無し
0826デフォルトの名無しさん
2008/04/01(火) 16:15:55for (int i = 0; i < temp.Length; i++) {
temp[i] = (int*)(void*)Marshal.UnsafeAddrOfPinnedArrayElement(data[i], 0);
}
fixed (int** p = temp) { ...
こうじゃね
本気でこんなの書く奴がいたら頭おかしい
0827デフォルトの名無しさん
2008/04/01(火) 18:05:17上も全然ダメ。めちゃくちゃ。
コンパイル通りゃいいってもんじゃないよ・・・
0828デフォルトの名無しさん
2008/04/01(火) 20:47:060829デフォルトの名無しさん
2008/04/01(火) 23:24:50http://www.microsoft.com/japan/msdn/columns/csharp/csharp10182001.aspx
0830デフォルトの名無しさん
2008/04/01(火) 23:36:120831デフォルトの名無しさん
2008/04/01(火) 23:58:45http://www.microsoft.com/japan/msdn/columns/csharp/csharp11152001.aspx
0832824
2008/04/02(水) 18:38:08具体的なソースをご提示いただき、ありがとうございます。
>>827
上のソースも、ポインタの使い方に間違いがありますか。。。
一応、ほしい結果は得られたので、正しいかと思ったのですが。。。
>>828
もちろん、その通りですが、あくまで勉強ということで。。。。
>>829
この記事読みました。
実際に簡単なループをまわして何パターンかのソースで確認したところ、配列とポインタとでそんなに大きく処理時間がかわらないようです。
(逆にポインタが遅い場合もありました。。。)
ポインタのポインタは関数の文字列型の引数に使う程度で、やっぱりあまり出番がないんでしょうか。。。。
0833デフォルトの名無しさん
2008/04/02(水) 22:22:26|┃ | |
|┃ \_/
ガラッ. |┃ |
|┃ ノ// ./ ̄ ̄ ̄ \
|┃三 / ::\:::/:::: \
|┃ / <●>::::::<●> \.
|┃ | (__人__) |
|┃三 \ ` ⌒´ /
|┃三 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
0834デフォルトの名無しさん
2008/04/05(土) 11:43:480835デフォルトの名無しさん
2008/04/05(土) 12:00:130836デフォルトの名無しさん
2008/04/05(土) 12:09:150837デフォルトの名無しさん
2008/04/05(土) 12:13:29特にJavaのジェネリックの糞さには発狂しそうになる
0838デフォルトの名無しさん
2008/04/05(土) 12:15:36Sunが作ったのがJava。
Microsoftが作ったのがC#。
0839デフォルトの名無しさん
2008/04/05(土) 12:46:370840デフォルトの名無しさん
2008/04/05(土) 12:54:390841デフォルトの名無しさん
2008/04/15(火) 00:05:48「最終的には1000行を超えるコード〜」とか「毎年大人気の科目」とか意味の分からん宣伝ばっかで萎えた。
そんなん個人でもうやってるって話だし。チームプログラミングとかを前面に押し出してたなら魅力があっただろうに
0842デフォルトの名無しさん
2008/04/15(火) 00:07:500843デフォルトの名無しさん
2008/04/15(火) 00:21:35大学でチームプログラミングなんて教えれる先生がいないって。
0844デフォルトの名無しさん
2008/04/15(火) 02:23:01三回生向けだからあれなわけで
一回生でそこまでやったらそれは別にいいと思うけどね
0845デフォルトの名無しさん
2008/04/15(火) 12:48:39>>842
学部一回生でそんな高級なことしたら単位が全然でないじゃないか!
学部一回だとこんなもんだ。
・電源の入れ方、終了のしかた。
・エディタのつかいかた
・ファイル操作のしかた
・ほーむぺーじをつくろう
・一番最後に hello world(全角スペース入れてコンパイル通せないヤツ多発)
0846デフォルトの名無しさん
2008/04/15(火) 13:05:540847デフォルトの名無しさん
2008/04/15(火) 13:11:51卒論を二人で一つ書く大学もあるらしいからな
ありえる
0848デフォルトの名無しさん
2008/04/15(火) 19:44:540849デフォルトの名無しさん
2008/04/15(火) 20:33:050850デフォルトの名無しさん
2008/04/15(火) 20:43:21XP卒論ですか
新しいな
0851デフォルトの名無しさん
2008/04/15(火) 22:14:420852デフォルトの名無しさん
2008/04/16(水) 00:40:02二人で作業したからといって、労力が半分になるわけでもないし、
二人で作業したからといって、二倍の完成度になるわけでもない。
むしろ独りよがりな内容にならなくて良いんじゃないか。まさにXPだな。
0853デフォルトの名無しさん
2008/04/16(水) 12:19:14普通一人一本じゃないか?
0854デフォルトの名無しさん
2008/04/17(木) 22:42:450855デフォルトの名無しさん
2008/04/17(木) 22:47:26わかります
0856デフォルトの名無しさん
2008/04/17(木) 23:04:210857デフォルトの名無しさん
2008/04/18(金) 00:27:090858デフォルトの名無しさん
2008/04/18(金) 01:37:060859デフォルトの名無しさん
2008/04/18(金) 10:09:29シュークリーム分は大事ですよ?
0860デフォルトの名無しさん
2008/04/18(金) 18:40:170861デフォルトの名無しさん
2008/04/18(金) 19:07:110862デフォルトの名無しさん
2008/04/22(火) 17:02:020863デフォルトの名無しさん
2008/04/22(火) 17:06:17そりゃ気のせいだな、ぶっちゃけ別物できる事の範囲が違いすぎる、つかなんだこのスレ
昔の重複スレの残骸?
0864デフォルトの名無しさん
2008/04/23(水) 00:30:320865デフォルトの名無しさん
2008/04/23(水) 00:33:400866デフォルトの名無しさん
2008/04/25(金) 11:28:350867デフォルトの名無しさん
2008/04/25(金) 11:30:00おお、もうそんなこと言い出す奴がいる時代か。
需要としてはその逆ばっかりだったんだけど。
なので、あんまりそういうサイトないと思うよ。
0868デフォルトの名無しさん
2008/04/25(金) 11:37:01パイオニアになって勉強がてらまとめサイト作ろうかな・・・。
何から勉強していいか分からんレベルだけどww
0869デフォルトの名無しさん
2008/04/26(土) 01:08:58C++は歴史がある言語だから、C#から見るより歴史を追った方が分かりやすいかもしれん
そうしないと理不尽と理解できない仕様の塊に悶絶するハメになりそうな予感が・・・
大きなところで C言語 → クラスが実装された初期C++ → 例外・種類の増えたキャスト・テンプレート → それからのクラスライブリの発展(ジェネリック・メタ)と順に。
いきなりクラスとか勉強する人もいるけとね、玉ねぎはむいた方がいいと俺は思う。
0870デフォルトの名無しさん
2008/04/26(土) 01:19:16構造化プログラミング言語としても、
新しい言語の方が優秀なのよね。
今から勉強するなら、C# で始めて、
C# で構造化プログラミング、C# で OOP、C# で構造化例外、C# でジェネリクス
と勉強する方がいいと思う。
いまさら C++ に戻って欲しくないのよね。
せっかく C++ の負の側面を切り捨てた C# があるのに、
C# から C++ に舞い戻るなんてやめて欲しいなぁと。
0871デフォルトの名無しさん
2008/04/26(土) 01:21:41「C#しか知らない人から見たC++」ていう観点で語るのがおもしろいんじゃね
「なんとC++にはGCがありません」みたいな
0872デフォルトの名無しさん
2008/04/26(土) 01:22:210873デフォルトの名無しさん
2008/04/26(土) 01:26:51その時代の思想、その正しいとされる書き方考え方ってやつが見えてくる、
C#の思想だって、いつまでもそのままではいられない、現にどんどん変わっているし。
変わるという前提で何ができるかという事が大事だと俺は思うね。
C++は歴史を追って勉強すべきというのは、予想外の仕様であっても当時は正当と思われる思想の元に考えられているもので、一見無節操に見えても無節操に拡張されているわけではない。
だからその方が憶えやすいと思うんだよ。
0874デフォルトの名無しさん
2008/04/26(土) 01:30:02下手に歴史を追うとそういう負の遺産まで覚えちゃうのよね。
それが負の遺産だと認識できる人間にとってはいい勉強なんだけど、
世の中そういう人ばかりではないから・・・
0875デフォルトの名無しさん
2008/04/26(土) 01:31:31要するに、C++の言語使用は、一見ルールなき言語仕様に見えても、深いところにルールはあるんだよ。
0876デフォルトの名無しさん
2008/04/26(土) 01:33:130877デフォルトの名無しさん
2008/04/26(土) 01:33:42負の遺産を負の遺産と認識できないならプログラマは辞めるべきだな、と俺は思う。
アンチパターンは重要だよ。
0878デフォルトの名無しさん
2008/04/26(土) 01:35:10読み物としてオリジナリティは出るだろう
実用的か?となると疑問符付くが
0879デフォルトの名無しさん
2008/04/26(土) 01:38:34理想論言えばね。
そりゃ、才能ある人間ばかり集められるなら苦労はしないという話に。
話がずいぶんそれてきたな。
C → C++ の歴史を知った人間が C# 使って入門記事書くのがベストだと思ってる。
なので、C# でプログラミングを覚える → C++ に移行もありだとは思う。
が、できれば C++ 自体が滅んで欲しいなぁとも今となっては思う。
0880デフォルトの名無しさん
2008/04/26(土) 02:29:030881デフォルトの名無しさん
2008/04/26(土) 04:28:20俺なんかもし15年遅く生まれて、初めて触るのがいきなりC#とかだったら
ちゃんと順応できただろうかと考えちゃうよ。
構造体も知らない内からクラスの概念を学ぶってのはどういう感覚なのかな
0882デフォルトの名無しさん
2008/04/26(土) 04:33:260883デフォルトの名無しさん
2008/04/26(土) 04:34:20実は自分も誤解していたクチだったりする訳だが。
0884デフォルトの名無しさん
2008/04/26(土) 04:35:44そのレベルだと、きっと使えるような気持になっているだけかと思われます。
0885デフォルトの名無しさん
2008/04/26(土) 04:36:47間違い
C#のクラスは拡張構造体ではないよ C++ からの人は結構誤解している人が多い。
0886デフォルトの名無しさん
2008/04/26(土) 04:43:59君は勘違いをしてるよ。
C#経験者がC/C++に入門する際に参考にする情報の話をしてるんだよ。
その後もそのレベルに留まってるという君の想像に君が指摘を加えてもこっちはどうしようもないんだけど。
0887デフォルトの名無しさん
2008/04/26(土) 04:45:300888デフォルトの名無しさん
2008/04/26(土) 07:33:10STLまでは知ってるけど、メタは知らん。なんか変態的になってるらしいが。
C#でよいとこは、やはり抽象化度合いがC++よりあがってるところ。C++でそれをやろうとしてトリッキーになるよりもいい。
F#はさらにその抽象化度合いを上げられるのでたぶんマスターしたらそっちに行く。プリミティブなところでトリッキーなことやるよりも自分はそっちの方が好きだ。
0889デフォルトの名無しさん
2008/04/26(土) 08:30:110890デフォルトの名無しさん
2008/04/26(土) 11:07:28>>866の需要は結構あるのかも
0891デフォルトの名無しさん
2008/04/26(土) 11:10:290892デフォルトの名無しさん
2008/04/26(土) 11:26:12とてつもない広いというより、とてつもなく深いという感じじゃないか?
0893デフォルトの名無しさん
2008/04/26(土) 13:58:56仮想関数
virtual void function() = 0; //なぜ "= 0"
静的メンバ
class hoge{
static int a; //クラス内では宣言しかできない
}
int hoge::a = 100; //定義はクラス外でないとできない
これって歴史的な理由があるのかな?
0894デフォルトの名無しさん
2008/04/26(土) 14:02:14× 仮想関数
○ 純粋仮想関数
0895デフォルトの名無しさん
2008/04/26(土) 15:27:25C++の設計段階では出来るだけ新しいキーワードを
付け加えたくなかったという経緯がある
(C++の設計と進化)
0896デフォルトの名無しさん
2008/04/26(土) 15:29:37ついでに14882:2003では
class hoge {
static const int a = 100;
};
を許してるから。静的クラス変数のconstのint型に限って
class内で値の定義ができる。
0897デフォルトの名無しさん
2008/04/26(土) 16:22:28後者は、Cのグローバル変数と同じ方法
(ヘッダには宣言だけ書いて、どこか1ヶ所で定義する)
を踏襲したと考えれば納得がいく。
0898デフォルトの名無しさん
2008/04/26(土) 16:43:49進化しなかったんだろう
0899デフォルトの名無しさん
2008/04/26(土) 16:46:260900デフォルトの名無しさん
2008/04/26(土) 18:42:46純粋仮想関数は、イメージとしては関数ポインタに NULL 代入してるような感じ。
まあ、分かりにくいから C# では abstract キーワードが導入されたわけだけど。
静的メンバは、C++ では宣言と定義が別だからなぁ。
クラス = ヘッダファイルに書く = 宣言だけ書く。
クラスの外 = .cpp ファイルに書く = 実際の定義(値の代入は定義の方でやる)。
0901デフォルトの名無しさん
2008/04/26(土) 18:44:01まあ、今のこのスレの流れは、「C# プログラマに C++ を教えるなら」的な空気だから。
全く無関係というわけでも。
C# 入門サイトの管理人の目にでも触れれば、そういう記事が追加されるかもしれないし。
0902デフォルトの名無しさん
2008/04/26(土) 20:01:310903デフォルトの名無しさん
2008/04/26(土) 20:06:590904デフォルトの名無しさん
2008/04/26(土) 20:12:550905デフォルトの名無しさん
2008/04/26(土) 22:35:08>>893なんかはC#プログラマ向けでもなんでもなくて思いっきりC++の質問だろ
0906デフォルトの名無しさん
2008/04/26(土) 22:45:420907デフォルトの名無しさん
2008/04/26(土) 22:49:080908デフォルトの名無しさん
2008/04/26(土) 22:56:20だったら黙れよ
レス数が900を超えています。1000を超えると表示できなくなるよ。