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

C#, C♯, C#相談室 Part55

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

前スレ
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1255530225/

Visual C# 2008 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい
0002デフォルトの名無しさん2009/12/06(日) 23:56:24
関連スレ

ふらっとC#,C♯,C#(初心者用) Part49
http://pc12.2ch.net/test/read.cgi/tech/1259383252/

Visual Studio 2008 Part 19
http://pc12.2ch.net/test/read.cgi/tech/1259076828/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
http://pc12.2ch.net/test/read.cgi/tech/1245384489/

【VB.NET】LINQ友の会【C#, C♯, C#】
http://pc12.2ch.net/test/read.cgi/tech/1202568694/

C#,C#の宿題片付けます。
http://pc12.2ch.net/test/read.cgi/tech/1197620454/
0003デフォルトの名無しさん2009/12/06(日) 23:57:11
参考リンク

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

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7

pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0004デフォルトの名無しさん2009/12/07(月) 00:00:01
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html



次スレから関連スレに追加してください

ASP.NET + Atlas or Ajax について
http://pc12.2ch.net/test/read.cgi/tech/1150036430/

Microsoft Silverlight その5
http://pc12.2ch.net/test/read.cgi/tech/1260010993/

Visual Studio 2010 Part 2
http://pc12.2ch.net/test/read.cgi/tech/1258631113/
0005デフォルトの名無しさん2009/12/07(月) 00:02:11
>>1
スレタイ間違えました
正しくは
C#, C♯, C#相談室 Part56
です
次スレはPart57で立ててください
0006デフォルトの名無しさん2009/12/07(月) 01:16:01
重複して両方ともスレ番号間違えるとは
0007デフォルトの名無しさん2009/12/07(月) 08:58:58
別人です
0008デフォルトの名無しさん2009/12/07(月) 10:01:37
別人なのに両方とも同じ間違いをやらかしてるのが興味深い
0009デフォルトの名無しさん2009/12/07(月) 23:37:15
どこが本スレよ?
0010デフォルトの名無しさん2009/12/08(火) 00:11:40
ここ
もう一つのスレは削除依頼が出てるのかな? このスレが終わるまで残ってれば再利用だろうけど
0011デフォルトの名無しさん2009/12/08(火) 00:40:06
>>10
もう一つのスレ建てたものです、
削除依頼済みですので、こちらが本スレですね
0012デフォルトの名無しさん2009/12/08(火) 22:02:58
short配列をファイルに書き込みたいのですが、
StreamクラスのWriteメソッドはbyte配列しか引数に取れません。
short配列からbyte配列に簡単に変換するにはどうしたらいいんでしょうか?
(Cのmemcpyのようなのが欲しい)
0013デフォルトの名無しさん2009/12/08(火) 22:08:05
BynaryWriter使った方がいいんでない?
0014デフォルトの名無しさん2009/12/08(火) 22:09:18
Buffer.BlockCopy
0015デフォルトの名無しさん2009/12/08(火) 22:14:20
ありがとうございました。
BynaryWriterを使うことにしました。
0016デフォルトの名無しさん2009/12/08(火) 23:01:24
そんなのねーよ
0017デフォルトの名無しさん2009/12/08(火) 23:38:52
BinaryWriterじゃね?
シリアライズするんでしょ?
0018デフォルトの名無しさん2009/12/09(水) 14:26:46
現在開いているIEのウインドウのページの
javascriptを外部アプリケーションのコードから実行することってできますか?

IEのウインドウ列挙は↓
http://d.hatena.ne.jp/unibon/20090102/p3
が使えると思うんですが、SHDocVwじゃjsのinvokeってできないのかなあ。。。
0019デフォルトの名無しさん2009/12/09(水) 14:54:01
InvokeScript
0020デフォルトの名無しさん2009/12/09(水) 16:14:10
自己解決した。
シングルスレッドアパートメントのオプションつければよかったのね。
0021デフォルトの名無しさん2009/12/09(水) 16:31:18
C#ってCって名前だけどJavaだね。

C+Javaって言う名前のほうがふさわしいな
0022デフォルトの名無しさん2009/12/09(水) 16:33:33
C++++
0023デフォルトの名無しさん2009/12/09(水) 17:21:20
Cava
0024デフォルトの名無しさん2009/12/09(水) 17:21:45
スペインのスパークリングワインか
0025デフォルトの名無しさん2009/12/09(水) 17:34:11
まあJavaもCの子孫みたいなもんだしな
C++とJavaならJavaの方が近いとはおもう
0026デフォルトの名無しさん2009/12/09(水) 17:42:50
Delphiの種が入ってるのは公然の秘密
0027デフォルトの名無しさん2009/12/09(水) 20:13:57
Eiffelさんのことも、たまにで良いので思い出してあげてください・・・
0028デフォルトの名無しさん2009/12/09(水) 20:19:47
foreach、ドット(.)区切りでメンバーを指定、イベント、
UIのビジュアルなデザイナ、プロパティグリッド……

どう見ても片親はVBだなw
0029デフォルトの名無しさん2009/12/09(水) 20:57:19
そりゃもともと「C++やJava経験者向けのきれいなVB」として売り出してるわけだし
0030デフォルトの名無しさん2009/12/09(水) 21:02:06
C#にてpanelに貼り付けた複数のlabelをクリックしたとき、
panelのクリックイベントを発生させるにはどうしたら良いのでしょうか?

複数貼り付けられたどのlabelをクリックしても、
panelでイベントを発生させたいです。
0031デフォルトの名無しさん2009/12/09(水) 21:08:06
それぞれのLabelのClickイベントで同じメソッド呼び出すんじゃ駄目か
0032デフォルトの名無しさん2009/12/09(水) 21:08:08
panel内のlabelのクリックイベントプロシージャをpanelのクリックイベントプロシージャにするんじゃだめなんか?
0033デフォルトの名無しさん2009/12/09(水) 21:09:24
プロシージャw
0034デフォルトの名無しさん2009/12/09(水) 21:12:47
foreach (var label in panel.Controls.OfType<Label>()) { label.Click += Clicked; }
0035302009/12/09(水) 21:14:31
PGによって画面上にpanelを配置するのですが、
ユーザコントロールで、panel上にlabelが沢山あるものになっています。

配置したあと、PGにてそのpanelのイベントを登録します。
ですのでlabelをクリックしたら、panelのイベントがよばれると良いなと思ったのですが、
なんか無理そうな気がしました。。。
0036302009/12/09(水) 21:15:29
>>34
天才!
ありがとうございました。
0037デフォルトの名無しさん2009/12/10(木) 00:35:18
どういたしまして
0038デフォルトの名無しさん2009/12/10(木) 08:37:03
WPFだと楽なんだよな。
0039デフォルトの名無しさん2009/12/10(木) 09:17:04
WPFは別の部分で大変になるからなぁ
0040デフォルトの名無しさん2009/12/10(木) 09:21:04
C#でCEの無線LANを繋いだり切ったり状態を調べたりしたいのですが、
どうやればいいのでしょうか?
0041デフォルトの名無しさん2009/12/11(金) 18:54:22
ペインを切り替えできるようなソフトを作りたいのですが
どうすれば切り替えできるんでしょうか

Janeみたいに、ボタン一つで表示位置を変えられるようにしたいです

内部でどういう処理をすればボタン一つで切り替えられるんでしょうか
0042デフォルトの名無しさん2009/12/11(金) 21:28:47
UserControlでカテゴリわけ
UI設計の基本です
0043デフォルトの名無しさん2009/12/11(金) 21:31:24
どういう処理って言ってもそういう処理としか答えようがないな
そういう機能が用意されてるわけではないので結構深いところから自分で枠組み作る感じ
0044デフォルトの名無しさん2009/12/12(土) 00:36:06
XmlSerializerを使ってオブジェクトをXML化したいのですが、
byte[]のメンバが暗号化されてしまうのを止めることは可能でしょうか?
int[]メンバのような形でXMLにしたいのです。
宜しくお願いします
0045デフォルトの名無しさん2009/12/12(土) 01:06:08
暗号化w
0046デフォルトの名無しさん2009/12/12(土) 01:18:10
BASE64が暗号化かどうかはともかく、
そのメンバにXmlArray属性かXmlArrayItem属性を付ける 両方でも可
0047デフォルトの名無しさん2009/12/12(土) 01:24:34
暗号化と符号化の区別がついていない人がいるって聞いたので、着てみたよ。
0048デフォルトの名無しさん2009/12/12(土) 01:25:43
デリゲートってなんですか?><
0049デフォルトの名無しさん2009/12/12(土) 01:27:49
ここじゃ説明しきれない。
Action action =new Action(hoge);のように書くから
クラスみたいなんだけど
action("死ねよクズ");
みたいに関数のように使えるもの
でぐぐれ
0050デフォルトの名無しさん2009/12/12(土) 01:29:35
ゲータレード
0051デフォルトの名無しさん2009/12/12(土) 18:29:01
AというクラスとBというクラスがあって、それぞれObjectを継承している。
そのとき
Object o = true ? new A() : new B();

これがAとBの間に暗黙的な変換がありません
とか言うエラーがでるんだけどなんでこれAとBで変換存在しなきゃいかんの?
0052デフォルトの名無しさん2009/12/12(土) 18:38:20
どっちでもいいのでobjectにキャストが必要。
3項式の値が何になるかにoの型は影響しない。

Object o = true ? (object) new A() : new B(); 
0053デフォルトの名無しさん2009/12/12(土) 18:40:14
キャストがB側にひとつ足りなくないか?
0054デフォルトの名無しさん2009/12/12(土) 18:52:14
なんとなくわかった。
C#の?はC++の?とは性質が違うみたいだな・・・
C++では51みたいな書き方でもOKなんだが。C#はうるさいやつだなぁ。
0055デフォルトの名無しさん2009/12/12(土) 19:07:34
三項演算子なんて使う必要ないだろ
0056デフォルトの名無しさん2009/12/12(土) 19:10:25
C++でも同じようにしないと警告が出たよ。MSVC++2008だけど
class S {};
class A : public S{};
class B : public S{};
void  test(int i) {
  S *s = i > 0 ? (S*)new A() : new B();
}
0057デフォルトの名無しさん2009/12/12(土) 20:02:17
それ推論的にはとてもめんどくさい議論が発生するんだよなー
逆順の推論なので。
0058デフォルトの名無しさん2009/12/12(土) 20:37:40
昨晩C#で書いたプログラム(低負荷)を動かしながらDVDを焼いたら
バッファーアンダーランが数回出ていた\(^o^)/

C++で書いたプログラムだと出ないのにC#のライブラリ関数はあちこちで
ロックしているんだろうか?
0059デフォルトの名無しさん2009/12/12(土) 20:47:39
ロックって何?
矢沢とか内田とかみたいな恥ずかしい勘違いオヤジのことかなw
0060デフォルトの名無しさん2009/12/12(土) 21:36:25
デリゲートな部分のかゆみ
0061デフォルトの名無しさん2009/12/12(土) 22:39:16
何をロックするんだよ。
ってかどういうプログラムなんだよ。
0062デフォルトの名無しさん2009/12/12(土) 23:44:40
>>54
まあ、C# は人的ミスを減らせるなら多少コードが冗長になる方を選んでるんで。
0063デフォルトの名無しさん2009/12/12(土) 23:52:31
そうか?
ラムダ式なんかかなり柔軟に型推論してくれるじゃん
0064デフォルトの名無しさん2009/12/12(土) 23:57:53
匿名メソッド、ラムダ式
オプション引数etc
どうみても冗長性の排除が優先だな
0065デフォルトの名無しさん2009/12/13(日) 00:06:04
KeyPressってなんのためにあるの?
KeyPress=Escキーとか認識できない
KeyDown=Escキーなども認識できる
0066デフォルトの名無しさん2009/12/13(日) 00:08:28
文字入力
IMEオンで入力したら楽しいよ
0067デフォルトの名無しさん2009/12/13(日) 10:34:15
 C#のwebbrowserコンポーネントでsleipnirにおける
SuperDrag Extensionのようなドラッグ&ドロップ処理を
実装したいと考えています。検索しても実装は厳しいという話しか
ありません。(というか扱っているサイトの数も少ない?)
どうかお力添え願えませんか?
0068デフォルトの名無しさん2009/12/13(日) 10:35:29
SuperDrag Extension ってそもそもなんだよ?
0069デフォルトの名無しさん2009/12/13(日) 12:23:30
フェンリル広告乙
0070デフォルトの名無しさん2009/12/13(日) 16:41:08
WinAPIで登録したホットキーを経由して、別ウィンドウがアクティブでも
音楽再生アプリでのplay/stopをしたいと思ったのですが、
nProtectGameGuardのオンラインゲーム上では登録したホットキー使用が不可能でした。
不正行為防止用にそうなっているのは予想が付いたのですが、
これをすり抜けるようなホットキー登録方法はありませんか?
0071デフォルトの名無しさん2009/12/13(日) 23:45:00
自己解決しました
0072デフォルトの名無しさん2009/12/14(月) 10:02:07
別スレで答えもらっておいて自己解決もないもんだ
0073デフォルトの名無しさん2009/12/16(水) 00:17:36
C#2.0 ジェネリック&partial
C#3.0 ラムダ式,LINQ
C#4.0 dynamic
0074デフォルトの名無しさん2009/12/16(水) 00:35:00
1.1 /** */ 形式のドキュメントコメント
2.0 匿名delegate、staticクラス、yield
3.0 var
4.0 Genericsのco/contra-variance
0075デフォルトの名無しさん2009/12/16(水) 00:37:49
VB10 行継続文字 "_" がいらなくなったよ!(条件あり)
0076デフォルトの名無しさん2009/12/16(水) 00:39:43
4.0はいまいち魅力がないな
2.0と3.0が凄すぎた
0077デフォルトの名無しさん2009/12/16(水) 00:41:42
言語の進歩はいまいちかもしれないが
フレームワーク側の進歩が2.0の時以上な気がする
0078デフォルトの名無しさん2009/12/16(水) 00:42:24
>>74
/** */ に対応したのは 1.1 ではなく 1.2 だよ
0079デフォルトの名無しさん2009/12/16(水) 01:27:18
.NET 4はライブラリの方よね、主な変更。
3.0 のときと同じ感覚。C# 4.0はおまけ。
0080デフォルトの名無しさん2009/12/16(水) 08:54:04
正直LINQの意義がわからんorz
0081デフォルトの名無しさん2009/12/16(水) 09:14:16
3行かかってたデータ処理が1行ですむ
こんだけ。
0082デフォルトの名無しさん2009/12/16(水) 09:15:56
>>80
コレクション操作がらみをライブラリ化しようとすると行きつく先は LINQ。

クエリ式(C# 中に SQL っぽいもの書ける構文)を LINQ だと思ってるならそれは勘違い。
あれは LINQ の一部分。
0083デフォルトの名無しさん2009/12/16(水) 09:34:45
LINQの記法が特殊だからな。
実は追加された拡張メソッド部分が本体だよな。
0084デフォルトの名無しさん2009/12/16(水) 12:09:27
メソッド構文でしかLinq使った事ない
0085デフォルトの名無しさん2009/12/16(水) 13:19:02
リモート処理のセキュリティについて質問させてください。
IPCチャネルを使って同じコンピュータ上でサーバーとクライアントを動かしたいのですが、
それぞれの通信相手が正規のプログラムであることを認証するには
どのような方法を取ればいいのでしょうか。
悪意のあるプログラムが通信相手に成り済ますのを防ぎたいと考えてます。
0086デフォルトの名無しさん2009/12/16(水) 13:22:06
厳密には不可能。

カジュアルななりすましを防ぎたいなら、何らかの手順を挟めばいい。
それこそ、「山」「川」みたいな。
0087852009/12/16(水) 13:28:51
>>86
なるほど。
大げさかもしれませんが、プログラムに対するデジタル署名を
使ってもできますか?
0088デフォルトの名無しさん2009/12/16(水) 13:35:54
コードサイニング証明で確認できるのは、ファイルがある組織で作られた、
ということ。なので、そのファイルを確認できる状態じゃないとダメ。

なので、通信先を証明するのにはちょっと厳しいでしょ。
0089852009/12/16(水) 13:42:28
>>88
サーバーとクライアントプログラムは同じコンピュータ上に
存在することを前提にしているのでファイルの確認は可能だと思います。
0090デフォルトの名無しさん2009/12/16(水) 13:43:00
であれば大丈夫だね。

IPCってのを忘れてた。ごめんごめん。
0091852009/12/16(水) 13:46:22
>>90
いえいえ。
とりあえず>>86のように何らかの手順で作ってみることにします。
ありがとうございました。
0092デフォルトの名無しさん2009/12/16(水) 13:48:08
通信系路上の改ざんがないという前提ならいろいろできそうな気がする。
0093デフォルトの名無しさん2009/12/16(水) 13:50:38
ゼロ知識証明、だっけ?
チャレンジレスポンスでやったらいいんじゃない?

基本的な手順は、

あらかじめ、秘密の文字列 k を決めておき、クライアントとサーバはそれを
知っている。外には漏らさない。

通信を開始する時に、ランダムでトークン文字列 s を決め、それを渡す。
s をもらったら k と連結しハッシュ関数にかけた値 h(k + s) を返す。

返ってきた値が、自分で計算した h(k + s) と同じかどうかを確認する。
同じなら相手は k を知ってるので正しい相手と認める。

詳しくは暗号の本を。
ていうかこういうのは正しく実装するのは難しいので。ライブラリ無いのかな?
0094デフォルトの名無しさん2009/12/16(水) 13:56:31
あーこれだとリプレイ攻撃を防げないか。
まぁとにかくそんな感じの方法。
0095デフォルトの名無しさん2009/12/16(水) 14:34:12
>>85
一般的な結論は>>86なんだが、限定状況下では有効な対処が可能な場合もある
ユーザーがプログラム(バイナリ)の読み取りや通信路への細工ができないよう厳重に管理されていれば、
実用的なレベルでの対処は可能
それ以外の状況なら何をしても程度問題(しかも分が悪い)でしかない

>>93
それはホストやユーザーの認証の場合で、今回のクライアント(プログラム)が正規のものかを
判定する用途には使えない
0096デフォルトの名無しさん2009/12/16(水) 17:26:21
そもそも秘密の文字列を組み込むってこと自体に無理があるからね。
0097デフォルトの名無しさん2009/12/17(木) 01:56:21
>>64
ラムダ式が先に実装されていれば匿名メソッドはいらなかったとMSが言っていたはずよ
つまり、delegate{〜}はobsolute扱いで。
0098デフォルトの名無しさん2009/12/17(木) 04:29:11
匿名デリゲートは引数自体を省略できる
ラムダ式は() =>
って絶対つけないとダメだからちょっとかっこ悪い。
0099デフォルトの名無しさん2009/12/17(木) 08:05:38
だがそれがいい
0100デフォルトの名無しさん2009/12/17(木) 09:37:12
その代わり引数の型は省略できない
0101デフォルトの名無しさん2009/12/17(木) 12:18:50
delegate { なんかいかにもキーワード増やしたくなくて無理矢理当てた
感じで格好悪い
後で捨てることを前提に作られたように見える
■ このスレッドは過去ログ倉庫に格納されています