トップページ⇒tech
1001コメント308KB

C♯, C#相談室 Part35

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/03(金) 03:07:45
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0002デフォルトの名無しさん2006/11/03(金) 03:08:16
Part33 http://pc8.2ch.net/test/read.cgi/tech/1153537081/
Part32 http://pc8.2ch.net/test/read.cgi/tech/1149934230/
Part31 http://pc8.2ch.net/test/read.cgi/tech/1145075577/
Part30 http://pc8.2ch.net/test/read.cgi/tech/1141448072/
Part29 http://pc8.2ch.net/test/read.cgi/tech/1138925245/
Part28 http://pc8.2ch.net/test/read.cgi/tech/1134514022/
Part27 http://pc8.2ch.net/test/read.cgi/tech/1131544541/
Part26 http://pc8.2ch.net/test/read.cgi/tech/1127063469/
Part25 http://pc8.2ch.net/test/read.cgi/tech/1122352650/
Part24 http://pc8.2ch.net/test/read.cgi/tech/1117631000/
Part23 http://pc8.2ch.net/test/read.cgi/tech/1112968209/
Part22 http://pc8.2ch.net/test/read.cgi/tech/1109630502/
Part21 http://pc5.2ch.net/test/read.cgi/tech/1106490240/
Part20 http://pc5.2ch.net/test/read.cgi/tech/1103005153/
Part19 http://pc5.2ch.net/test/read.cgi/tech/1100240847/
0003デフォルトの名無しさん2006/11/03(金) 03:08:50
Part18 http://pc5.2ch.net/test/read.cgi/tech/1096112588/
Part17 http://pc5.2ch.net/test/read.cgi/tech/1091284402/
Part16 http://pc5.2ch.net/test/read.cgi/tech/1087297504/
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 ttp://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 ttp://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 ttp://pc.2ch.net/tech/kako/977/977112364.html
0004デフォルトの名無しさん2006/11/03(金) 03:09:19
Visual C# 2005 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

MSDNライブラリ
http://msdn.microsoft.com/library/ja/

MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx

相互運用マーシャラによるメモリ管理
http://msdn2.microsoft.com/ja-jp/library/f1cf4kkz.aspx

Buffers のサンプル
http://msdn2.microsoft.com/ja-JP/library/x3txb6xc.aspx

文字列のマーシャリング
http://msdn2.microsoft.com/ja-JP/library/e8w969hb.aspx

pinvoke.net: the interop wiki!
http://pinvoke.net/

テンプレ終了
0005デフォルトの名無しさん2006/11/03(金) 18:22:26
名前空間に対してドキュメントを記述したいんですけど、みなさんどうしてますか?
0006デフォルトの名無しさん2006/11/03(金) 18:51:34
RFIDのリーダからタグIDを読み取ったら、一時領域に入れておき
次にタグIDを読んだら一時領域内に参照し、すでに呼んだタグIDか
初めて読むIDかを識別するプログラムをC#で作ろうとしています。
一時領域はIDを異なるIDを読むたびに大きくなっていくイメージです。
いままではC++で構造体をmallocとreallocで一時領域を確保していたのですが
C#ではどうすればいいのでしょうか?
0007デフォルトの名無しさん2006/11/03(金) 18:54:28
List<T>
0008デフォルトの名無しさん2006/11/03(金) 18:55:03
System.Collections.Generics.Dictionary
System.Collections.Hashtable
0009デフォルトの名無しさん2006/11/03(金) 18:58:04
>>5
Excel
0010デフォルトの名無しさん2006/11/03(金) 19:06:08
>>7>>8
MSDNで調べました!ありがとうございました!
0011デフォルトの名無しさん2006/11/03(金) 19:24:08
いい加減マーシャラ関係のリンクはテンプレにいらないと思うんだが
0012デフォルトの名無しさん2006/11/03(金) 23:27:46
C#の勉強にに適した本とサイトを教えてくください
0013デフォルトの名無しさん2006/11/03(金) 23:46:58
http://www.amazon.co.jp/exec/obidos/ASIN/4797332018

これとかどうよ?
まさに入門だけど、必要なことは一通り書いてあるし、
詳しいことはヘルプで事足りると思う。
WEBサイトはgoogleで十分かと。
0014122006/11/03(金) 23:55:28
あれ、いつからJIS規格対応になったんだこの言語
それに>>13のレビューもかいてないし不安だなあ
0015デフォルトの名無しさん2006/11/03(金) 23:59:34
>>14
去年の春ごろだっととおも。
0016デフォルトの名無しさん2006/11/04(土) 00:06:02
工エエェェ(´д`)ェェエエ工
0017デフォルトの名無しさん2006/11/04(土) 01:47:32
C#,C++/CLを商用のWindowsアプリケーションとして使用してるいますか?
Reflectorで簡単にソースを得ることが可能ですよね。
お客さんにソースが漏れるのは大問題です。

余談ですが、よくC#は生産性が高いなんて言われてますけど疑問です。
確かにちょっとしたものすぐ作れますが、商用となるとUIも重要な要素の一つなんで
ほとんどのコントロールは使えないため、自前で用意する必要がある。

そうすると、VC6MFCとほとんど同じの感じがします。
どうですか?
0018デフォルトの名無しさん2006/11/04(土) 03:02:37
>>12
普通に
http://www.amazon.co.jp/gp/product/4891005173/sr=1-3/qid=1162576921/ref=sr_1_3/503-2271679-4213559?ie=UTF8&s=books
これでいいいんでまいか
0019デフォルトの名無しさん2006/11/04(土) 04:08:03
7000円も出して覚える必要があるか?
MSも.NETはC++/CLIで行くといってるのに・・・

0020デフォルトの名無しさん2006/11/04(土) 08:04:15
>>12
今ならこっちがおすすめ
http://www.amazon.co.jp/gp/product/479801382X/ref=pd_ecc_rvi_1/503-1810130-2500706
0021デフォルトの名無しさん2006/11/04(土) 09:26:51
C#の本ってそんなにたくさん出てないから片っ端から買ってみるのもいいかも。
自分に投資すると思って。
0022デフォルトの名無しさん2006/11/04(土) 09:30:18
>>17
VC6と変わらないというならVC6で作ればいいんじゃないだろうか?
別に世間一般でC#>>>>>>>>>VC6という評価になっているわけではなく、
開発言語の1つとしてC#というものが有るわけだから
無理にC#を使う必要はないのでは?
0023デフォルトの名無しさん2006/11/04(土) 09:41:24
>>17
ソースコードを保護する必要があるなら、Dotfuscator導入
0024デフォルトの名無しさん2006/11/04(土) 13:58:27
VC6ってVistaで使える?
動作保証しないとは言ってるけど、実際に使うことも出来なくなるのか?
0025デフォルトの名無しさん2006/11/04(土) 13:59:50
VC6が死亡したらC#の時代が…来ないだろうな…
0026デフォルトの名無しさん2006/11/04(土) 17:13:30
C#でCOMコンポーネントを作っています。
インターフェイスIAを継承したインターフェイスIBを実装するコクラスを
COMに公開したいと思い、【ソース】をビルド/regasmすると、
【タイプライブラリA】にようになってしまいます(OLE/COM Object Viewer)。
これではスクリプト環境からデフォルトインターフェイスでないIAのメンバに
アクセスできないため、【タイプライブラリB】のようにしたいのですが、
どうすればいいでしょうか。お知恵を拝借したく。

【ソース】
public interface IA { }
public interface IB : IA { }

[ClassInterface(ClassInterfaceType.None)]
public class C : IB { }

【タイプライブラリA】
interface IA : IDispatch { };
interface IB : IDispatch { };
coclass C {
 interface _Object;
 [default] interface IB;
 interface IA;
};

【タイプライブラリB】
interface IA : IDispatch { };
interface IB : IA { };
coclass C {
 interface _Object;
 [default] interface IB;
};
0027デフォルトの名無しさん2006/11/04(土) 20:06:13
>>21
結構出てるよ。

まあ大半が2003以前の本だけど。
0028デフォルトの名無しさん2006/11/04(土) 20:59:20
そういや「プログラミングADO.NET」の2.0対応日本語版が早くでないかなーと
思ってるんだが、まだ出てませんよね?
0029デフォルトの名無しさん2006/11/04(土) 21:16:17
>>28
もう出てるよ。今日本屋に行ったけど並んでた。
0030デフォルトの名無しさん2006/11/04(土) 22:29:47
>>26
全てのインターフェイスが IDispatch/IUnknown から直接派生して公開されるのは仕様なので、
面倒だけど IA / IB 全てのメンバを宣言している新しいインターフェイス IC を定義して、
そいつをデフォルトインターフェイスにすればなんとかなるんじゃね?
0031デフォルトの名無しさん2006/11/04(土) 22:43:58
回答する側はずいぶんいい加減でいいんですね
0032デフォルトの名無しさん2006/11/04(土) 22:47:42
>>31
そもそも2chでまともなレスもらえるだけで素晴らしい事
0033デフォルトの名無しさん2006/11/04(土) 22:49:21
>>31
俺なんかこんなレス返すぞ

Console.Write("or2=====3プッ");
0034262006/11/04(土) 22:50:01
>>30
どうもありがとうございます。
これ仕様なんですか……厄介ですね

しかし、継承関係崩すと、マネージコードから利用しづらくなりますし、
インターフェイスを継承できないとなると今後の拡張で
アーリーバインディングでの互換性を確保できなくなりますよね。

インターフェイスの設計からもう一度悩みなおしてみます。
0035デフォルトの名無しさん2006/11/04(土) 23:02:18
>>34
継承関係は別に崩れないだろう。増えはするけど。
が、バージョン管理ができなくなるのは確かだな。
となると ClassInterfaceType.None にする意味もなくなるなぁ……。
// 自動生成の _C インターフェイスは IDispatch だけだが IA/IB どっちも呼べる。
あとは IB で IA のメンバ全部隠蔽して再宣言するとか。
0036デフォルトの名無しさん2006/11/04(土) 23:52:34
>>20
開発していく上でその本はかなり有意義だけど、勉強に適した本とはいえないんじゃない。
ほとんどC#の知識がなかったときにそいつ一冊で本格的なアプリケーション作ったことはあるけど。
でもなにをやっているのかさっぱりわからなかった。

僕は断然、独習C# AND C#Windowsプログラミング上下
独習C#で基本を勉強して本格的なことはC#プログラミングでやればいい。
0037デフォルトの名無しさん2006/11/05(日) 02:43:35
マルチスレッドって簡単だなと思ってたら
安全に動かそうとすると極端に難しいなw
0038デフォルトの名無しさん2006/11/05(日) 03:03:33
AutoResetEvent最強だよね
0039デフォルトの名無しさん2006/11/05(日) 11:31:50
C#って64bitサポートしてるの?
0040デフォルトの名無しさん2006/11/05(日) 11:38:10
.NET 2.0 には x64 と IA64 向けのもありますよ
0041デフォルトの名無しさん2006/11/05(日) 12:48:56
>>20
おお、スプラッシュうウィンドウの表示時間制御が、
ビジーループで時間稼ぎから、
Timerでのイベントに変わった。
激酷からちょっと酷い程度にレベルアップしたな。

0042デフォルトの名無しさん2006/11/05(日) 17:46:06
スプラッシュウィンドウの表示の為に
ビジ-ループって本末転倒。
0043デフォルトの名無しさん2006/11/05(日) 22:59:33
良書に出会うのはむずかしい。

ハーバート・シルトの本はちょっと時代遅れじゃないかな?
以前javaの本(タイトル忘れちゃった…)と独習C++買ったけど、
自分としてはいまいちだった。

特にjavaの本はOOPの本じゃないみたいだった。
翻訳も駄目だったし…
「所与の」ってなんだよw

別の著者の独習javaって本も誤植があってひどかった。
0044デフォルトの名無しさん2006/11/06(月) 02:27:15
C#で正規表現を1,000,000回マッチさせるプログラムでperlの4倍の処理時間・・・
/(hoge)(foo)/;
$a=$1;$b=$2;

#hoge,foo部には適当な正規表現をです。

上記をC/C++/JAVAで書ける人、書いてもらえませんか?
(C/C++はとりあえず使えますが、boostを使ったことがありません)
0045デフォルトの名無しさん2006/11/06(月) 02:35:36
>>44
ngen使うか、初回の処理を計測から外すような措置はした?
0046デフォルトの名無しさん2006/11/06(月) 07:00:05
>>44
Cが出来るですよねw?
PERLはオープンソースだから、NETのライブラリなんて使わずに、
PERLのソースを参考に自前でunsafeを使って実装すればいいのでは?
0047デフォルトの名無しさん2006/11/06(月) 07:55:57
>>44
まずC#のソースを晒すべきじゃないか?
0048デフォルトの名無しさん2006/11/06(月) 08:09:32
>>46
そんなことができるひとがする質問ではないだろ?
つか、そんなことやれる人なんて多くはいないのでは?
0049デフォルトの名無しさん2006/11/06(月) 08:19:27
RegexOptions.Compiled はつけてるのかな
0050デフォルトの名無しさん2006/11/06(月) 16:08:20
double型の変数aに格納されている値が、NaN(非数値)かどうかを判定するにはどうしたら良いのでしょうか?
0051デフォルトの名無しさん2006/11/06(月) 16:17:43
>>50
Double の静的メンバに IsNaN
0052デフォルトの名無しさん2006/11/06(月) 16:31:00
>>51 さん
isnan は、Cで使えるというのは調べたのですが、math.h のincludeが必要ですよね?
c#では、特別に using〜 とういうようなことは必要ないのでしょうか?
書き方は

if(isnan(a) == 1)
  Console.WriteLine("NaNです。");

といった感じですか?初心者ですみません。

0053デフォルトの名無しさん2006/11/06(月) 16:57:34
>>52
初心者なんて免罪符にならないから、ヘルプ読めよ。
0054デフォルトの名無しさん2006/11/06(月) 17:09:37
>>52
Double.IsNaN メソッド
ttp://msdn2.microsoft.com/ja-jp/library/system.double.isnan.aspx
0055デフォルトの名無しさん2006/11/06(月) 17:41:19
>>44-46
ざっくりした計測で、
Perl=C#=Java(server VM)、C++が0.9、Javaのclient VMは1.8倍ぐらいの処理時間。
ngenとかの細かなチューニングは無し。ループ内で、キャプチャ文字列の長さを積算
するとかして、最適化で飛ばされないように努力はしてみた。
C++: VS2005, boost 1.33.1
C#: VS2005
Java: 1.5.0_09
Perl: Active Perl 5.8.8

うちのC#は、>>44の家のC#より高性能だ。
0056デフォルトの名無しさん2006/11/06(月) 18:30:37
>>55の頭が>>44の頭より高性能なんだよ
0057デフォルトの名無しさん2006/11/06(月) 18:39:16
質問させて下さい。

C#を勉強しています。

とりあえず、シューティングゲームでも作ろうと思って、「C#でゲームを作ろう」みたいな本を買いに本屋に行ったのですが
全くそんな本がありませんでした。
ゲーム関連となると、VBか、Cの本しかありません・・・。


ゲームとかは、C#で作るものではないのでしょうか?
0058デフォルトの名無しさん2006/11/06(月) 18:44:41
XNA Frameworkがもうすぐ正式リリースされて
XBox360でも動くようになるからこれから少しは流行るはず

「C#でゲームを作ろう」みたいなのがどうしても無いとだめなら
Javaで勉強すれば
0059デフォルトの名無しさん2006/11/06(月) 18:45:46
他の本屋に売ってるだろ
0060デフォルトの名無しさん2006/11/06(月) 18:52:54
今の時代、.NETでゲームとなるといきなりManaged DirectXなんかなあ。
0061572006/11/06(月) 18:52:57
レスほんとにありがとうございます。

えーと、とんまなことを言うようなのですが、C#がイイ、と言われて、ちょくちょく勉強しちゃったのでいまさらjavaというのにいくのはちょっと大変そうなんです。
なんとかC#で頑張ってみたいんです。

しかし、本ってないのですね。
XBOXでれば流行るんですかね。そうなるといいなぁ。

本がないところを見ると、現状、C#はゲーム作りには不向きってことなんですね。
ちょっとへこんじゃいました。
0062デフォルトの名無しさん2006/11/06(月) 19:13:05
>C#はゲーム作りには不向き
?
ただ入門しにくいって事じゃないかな。
昔はアセンブラじゃないとシューテングは作りづらいといわれていたが…

Wiiプログラマって世界にどのくらいいるんかな。
0063デフォルトの名無しさん2006/11/06(月) 19:13:33
>>61
別に不向きってわけじゃないだろう。
.NETのCLR使えば、初心者がよりとっつきやすい形でプログラミングできるし、
Cでゴリゴリ書いてた比べれば、DirectXの使用も断然やさしくなってると思う。

アマで簡単に探した限りではこのあたりかな。
そんなに高くないし、手当たり次第に買って読んでみればいいと思う。

Visual C# .NETゲーム制作教科書―ゲーム・プログラミングの基本から応用まで
 http://www.amazon.co.jp/gp/product/4777510220
C#ゲームプログラミング
 http://www.amazon.co.jp/gp/product/4797334800

ちょっと慣れてきたら、VB.NETとかVC++.NET用に書かれた類似本を買ってみると、新たな発見があるかもしれない。
言語の文法が少し違うだけで、.NETのライブラリを使ってる以上、やってる中身はかわらないからね。
まあそうやって、他の言語にも目を慣らしていけば、ネットで盗めるテクニックなんかも二倍三倍になるよ。
0064612006/11/06(月) 19:40:44
>>63
うああ

わざわざすみません。
読んで勉強してみます!

0065デフォルトの名無しさん2006/11/06(月) 21:29:14
下のページを見て、ウェブページを取得する、というのをやってるんですが、うまくいきません。
http://www.woodensoldier.info/computer/CSharp.htm#148

上の方(ネームスペース宣言のところ)に
using System.Net.WebRequest;
と記述し、

あとはそのまま ↓のようにしました。

private void button1_Click(object sender, System.EventArgs e)
{
WebRequest request = WebRequest.Create("http://www.yahoo.co.jp";);
WebResponse response = request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(ReceiveStream, Encoding.UTF8);
Byte[] buffer = new Byte[response.ContentLength];
readStream.Read(buffer, 0, response.ContentLength);
response.Close();
}

しかし、↓のエラーが出てしまいます。
\Form1.cs(7): using namespace ディレクティブは名前空間に対してのみ使用できます。'System.Net.WebRequest' は名前空間ではなくクラスです。

何が間違っているのでしょうか?
0066デフォルトの名無しさん2006/11/06(月) 21:31:59
エラーメッセージにそのまんま書いてあるのに・・・
0067デフォルトの名無しさん2006/11/06(月) 21:39:41
>>65
using System.Net;の間違いだろ
0068デフォルトの名無しさん2006/11/06(月) 21:43:36
>>65
>Form1.cs(7):

ってんだからForm1.csの7行目読むんだよ
0069652006/11/06(月) 22:14:44
レスありがとうございます。

すいません、エラーメッセージ読んでも全くわかりません。
基本を全く分かってなくて、説明ページに書いてあるのをただそのままコピペしたような感じですので・・。
なにがどうおかしいのかすら全く分からない状況です・・・。

>>67
using System.Net; とやると、その行ではエラーが出ませんが、後半でエラーが出ます・・・。
0070デフォルトの名無しさん2006/11/06(月) 22:15:39
>>69
そりゃ後半が間違ってるんだろ。
0071デフォルトの名無しさん2006/11/06(月) 22:20:19
>>69
君が見てる所のサンプルはあんまり質が良くないから
初心者スレのテンプレにあるサイトを探ってみなさい。
0072デフォルトの名無しさん2006/11/06(月) 22:20:21
そこまで分からないなら
そのまま動くサンプルが載ってるページを探すか入門書買う方がいいんじゃない
0073デフォルトの名無しさん2006/11/06(月) 22:23:58
しかし>>65のコードは酷いなw
0074デフォルトの名無しさん2006/11/06(月) 22:31:17
あうあ、元ページが間違ってましたか・・・。

それはショックです。

他のページ見てみます。

ありがとうございました。
0075デフォルトの名無しさん2006/11/06(月) 22:34:30
こんなとこでByte[]バッファ使ってるの初めて見たw
■ このスレッドは過去ログ倉庫に格納されています