1read 100read
2012年2月プログラム76: C#, C♯, C#相談室 Part70 (475) TOP カテ一覧 スレ一覧 2ch元 削除依頼
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (271)
【3DS】プチコンを語るスレ【DSi】 (446)
C#, C♯, C#相談室 Part70 (475)
Visual Studio 2010 Part18 (583)
おまいら最強の麻雀プログラムしてみろよ Part5 (522)
【Perl,PHP】LLバトルロワイヤル20【Ruby,Python】 (883)

C#, C♯, C#相談室 Part70


1 :12/01/26 〜 最終レス :12/02/15
前スレ
C#, C♯, C#相談室 Part69
http://toro.2ch.net/test/read.cgi/tech/1323354868/
Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx

2 :
関連スレ
ふらっとC#,C♯,C#(初心者用) Part79
http://hibari.2ch.net/test/read.cgi/tech/1316608496/
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part10
http://hibari.2ch.net/test/read.cgi/tech/1315648327/
【VB.NET】LINQ友の会【C#, C♯, C#】
http://hibari.2ch.net/test/read.cgi/tech/1202568694/
C#,C#の宿題片付けます。
http://hibari.2ch.net/test/read.cgi/tech/1197620454/
ASP.NET + Atlas or Ajax について
http://hibari.2ch.net/test/read.cgi/tech/1150036430/
Microsoft Silverlight その8
http://hibari.2ch.net/test/read.cgi/tech/1300831451/
Visual Studio 2010 Part16
http://hibari.2ch.net/test/read.cgi/tech/1312046969/
C# C# C♯でゲームを作ろう Part1
http://hibari.2ch.net/test/read.cgi/tech/1212972014/

3 :
参考リンク
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://social.msdn.microsoft.com/Forums/ja-JP/categories/
pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://uchukamen.com/
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/

4 :
質問する前に"必ず"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
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも。
コードを貼り付けてRun codeのチェックを外し、submitボタンを押すと専用のアドレスが発行されます。
http://ideone.com/
直接貼る場合はhtmlエンコードした方がインデントも残って見やすいです。
http://kawama.jp/php/encode_html.php

5 :
プロパティって変数をread only publicにする以外に使い道あるの?

6 :
>>5
getterだけならほぼそうだけど、setterを実装すれば入力チェックなどの機能が付けられる。
getterだけにしても、実際にプロパティがアクセスされたときにプロパティの値を用意すればいいから、あまり使われない値をあらかじめ生成しておかなくて済む。
日本語が変になってしまって申し訳ない。

7 :
>>5
初回呼び出しで初期化したりできる
あとDBの接続処理とかをそこで行うとか
プロパティを書き込んだ時に変更を通知したりとか
応用が利く

8 :
自動実装プロパティとパブリックフィールド変数との違いが判らない

9 :
public virtual string AAA{get;set;}とか

10 :
プロパティの方があとからロジック足せていい。
設計に変更が一切ないって言いきれるなら差はないかも。

11 :
public Hoge Hoge{get;private set;}が便利

12 :
最近、そればっかり使うな。

13 :
簡単なプロパティって JIT でインラインしてもらえるのかな。
自動実装プロパティとかインラインして欲しいんだが。

14 :
自動実装プロバティーは初期化できないのが難点だな
例えば hoge{get;set; default=1;} なら良いんだが
後、イベントはフィールドで実装することが多いかも
プロバティー使うのはカスケードさせる時くらい

15 :
>>11
多分これがプロパティの一番の利用方法だろうな
LengthとかアクセスするのにLength()とは書きたくない
でもpublic変数にはしたくない(代入できてしまうから)

16 :
プロパティとして操作させたいけれどsetterしか呼ばれない、って場面ない?
void SetHoge( Hoge h ){}
みたいにするか、それとも
Hoge Hoge{ set; }
にするか、もったいないけど
Hoge Hoge{ get;set; }
にするか
どれがいい?

17 :
素直に関数使えよ

18 :
俺が3番といったら、3番にしてくれるんだろうな?

19 :
>>16
2番目はガイドライン違反

20 :
プロパティセットするとかだけなら
public static Hoge CreateHoge(引数)
みたいにする時もあるかなぁ

21 :
ガイドラインなんか守っている会社あるの?

22 :
いや、普通は可能な限り守るだろ

23 :
フィールドの代替だからねえ
フィールドを書き込み専用にしたいと思ったことはないだろう?

24 :
>>23
javaのSetter Getterの進化版だと思っていたが
ただ、readonlyは割と便利だが、writeonlyにしても何の役にも立たないよな

25 :
プロパティは「オブジェクトの属性」を表すセマンティクスなんだから、書き込み専用って言うのは自己矛盾に近い

26 :
意味がないとは言え、イベントの自動実装がないのは気持ち悪いな

27 :
あるよ。普通のフィールド形式のイベントがまさにイベントの自動実装。
addとremoveとバッキングフィールドが自動生成される。

28 :
プロパティ設定の構文
obj.prop = xx
でメソッドを駆動するためにwriteonly propertyにしてる市販ライブラリがあったなあ
Form.BackColor = Red
みたいな

29 :
VB6の時代のCOMコンポーネントは、それどう考えてもメソッドだろっていうのが
プロパティーになってることがよくあったなあ。
ところでsetterのみのプロパティーって、何か適用できる場面があって2,3度使った
記憶があるんだが、どういう場合だったか思い出せないな。

30 :
目的: fxCopに使ってない呼び出しは削除せよと怒られないようにするため

31 :
WebBrowser.DocumentTextプロパティで取得した文字列を使って何度も処理する場合
Foo(webBrowser.DocumentText);
Foo(webBrowser.DocumentText);
Foo(webBrowser.DocumentText);
と直に使うのと
string s = webBrowser.DocumentText;
Foo(s);
Foo(s);
Foo(s);
と一旦保存するのとではどちらが速いでしょうか?
DocumentTextプロパティが単に参照を返すのか、オーバーヘッドがかかるのかリファレンスにも書いていなかったもので・・・

32 :
書いてないことを保証するのは難しい
計ってみりゃいいじゃん

33 :
あんまりかわらないんじゃないの?

34 :
内部処理はどっちも一緒でしょ

35 :
.netreflector

36 :
ふつうに考えてプロパティにアクセスするたびCOMにアクセスするだろうから
変更がないのが明白ならキャッシュした方がいいだろ

37 :
俺くらいになるとプロパティ名が長いというだけの理由で一時変数を用意するな

38 :
何で測ればすぐ済むことまで聞こうとするのかね

39 :
ラリーウォールだから

40 :
>>39
ググったら顔汚すぎてワロタww

41 :
犬みたいな顔してるよな。

42 :
やはり醜男ほど人生の満たされないものを別の何かに求めるために天才になるのだろう
つまり俺は天才になるべく生まれてきた男

43 :
天才ってのは生まれつきの才能の事を言うんだ
なるもんじゃない

44 :
privateなメソッドって大文字で始めるのがいいのか小文字で始めたほうがいいの?
ぐぐってもさっぱりわからん。小文字派が多いように見える

45 :
publicにするかもしれないので大文字でもいいんじゃね?

46 :
Microsoft的には外から見えない物は好きにしろ
俺はメソッドプロパティは全部大文字開始派

47 :
何回も呼び出される物じゃないのなら長めの日本語名メソッド最強
コメント適当でも何しているか判りやすい
インテリセンスで引っかける予定がある時はちょっと辛いが

48 :
小文字だとローカル変数と見分けがつかなくてうざい

49 :
> Microsoft的には外から見えない物は好きにしろ
それで、m_のやつと_のやつと何も付けない奴が混在してんのか

50 :
まぁ基本的にDLLとかならどうでもいいわな
自分がわかっていれば
チームで開発する時とか他人が修正する可能性があるなら
命名規則くらいはすり合わせてほしいけど。

51 :
俺はフィールド変数は_小文字から
メソッドは全部大文字からにしてる

52 :
俺もフィールド変数は_小文字
メソッドは公開非公開問わず全部大文字から
メソッド名は動詞を先頭に
基本的にやってるルールってこれくらいかな

53 :
おれはノールール。そのときの気分次第w

54 :
俺は男の子人格の時はm_で女の子人格の時はf_をつけてる

55 :
>>54
フランス人か!

56 :
ロシアやドイツ人は中性も必要なのか?

57 :
初歩的な質問なのですが、
VC++(CLR)で作成したdllは
VCランタイムが無いとC# からでは参照
できないのでしょうか?よろしくお願いいたします

58 :
/MDか/MDdでコンパイルしてるならそうでしょうよ
その辺はVC++と同じ

59 :
よろしくお願いいたしますって英語でなんていうのだろう?

60 :
>>59
グーグル翻訳

61 :
Your sick oh neigh guy it a sim us.

62 :
Ohio goes I'm ass.

63 :
C#からC++で作られたDllのメソッドなどはDllImportを使用して
使えるのですが、そのDll内にクラスがあり、そのクラスをインスタンス化
して、インスタンスメソッドを呼びたいのですがどうすればいいでしょうか?
C++ のDll一部抜粋
class Test
{
public:
  int GetXXX(void);
};
extern "C"{
Test* __stdcall CreateTest(void);
}

64 :
DllImportのCallingConvensionをThisCallにして
第一引数にthisとなるポインタを挿入

65 :
以下のようにしたのですが、エントリポイントが見つかりませんとなりました。。使い方間違っているのでしょうか?
[DllImport("XXX.dll")]
static extern IntPtr CreateTest();
[DllImport("XXX.dll", CallingConvention = CallingConvention.ThisCall)]
static extern int GetXXX(IntPtr pointer);
main()
{
var pInstanc = CreateTest();
var value = GetXXX(pInstanc);
}

66 :
・__declspec(dllexport)でクラスごとエクスポートしてる
・defファイルで修飾名付きでエクスポートしてる
・dllは変更できない
 →dumpbin /exportsで調べてその修飾名そのままDllImportのEntryPointに指定する

67 :
Dllの変更は出来ないのでdumpbinからnameを取得しました。
=>DllMain と CreateTest が出てきたので以下の通りにしました。
エントリポイント〜のエラーが出なくなったのですが、うまく機能しません。
期待戻り値が5のintを返すメソッドを呼んでも常に1を返し、
また、DllImportのメソッド名を変更してもエラーになることなく呼び出せてしまいます。
↓↓ C#の記述 ↓↓ 
[DllImport("XXX.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "DllMain")]
static extern int GetXXX(IntPtr pointer);
[DllImport("XXX.dll",EntryPoint = "CreateTest")]
static extern IntPtr CreateTest();
main()
{
  var pInstance = CreateTest();
  int result = GetXXX(pInstance);
}
↓↓ C++の記述 ↓↓ 
class Test
{
public:
   int GetXXX(void);
};
extern "C"{
Test* __stdcall CreateTest(void);
}

68 :
DllMainはどうやってもDLL自体のエントリポイントだろ…
C++のリンク時に特に指定してない場合は ?GetXXX@Test@@なんとかかんとか になる

69 :
色々調べてみたもののdumpbinで出てくるEntryPointは変わらないです。
インターフェースの仕様はあるので推測で?GetXXX@Test@@という風に試して
見たのですがダメでした。
インターフェースとDllがある状態でC#から使うには他にどのような方法があるので
しょうか?ちょっと挫折気味orz

70 :
直接使えないのならクッション入れるとかはどうなの?
C++/CLIだっけ?
後はDLLを呼び出すC/C++のアプリを書いてC#からはテキスト通信するとか

71 :
ふむ・・・C#では使えそうもないのかなorz
CLIはVC++のランタイムをインストールまたはマニフェストを
使用してリンクさせないとだめなので使えないです。。。
VC++のクッションDllを自作して呼び出せるようにするしか
ないのかなぁorzあんまりスマートじゃないけど。。。
他に方法があればよいですが・・・

72 :
解放用のメソッドが用意されてるか気になる

73 :
C向けのフラットなラッパーを書くのが普通だな

74 :
たびたびすいません。。。
CLRでDllを作成した場合にVCランタイムをインストールしなくても
済む方法にMSVCR100をexeの隣に置けばいいというのを小耳に
はさんだのですが(嘘か真か不明ですが)出来るのでしょうか?
またMSVCR100は.NET4以上じゃないと動作しないのでしょうか?

75 :
どっちみちDLLは一個増えるんだし大して手間変わらんからC向けラッパー作ったほうがいいよ
C++/CLIだと.NET2.0〜.NET3.5か.NET4かでバイナリ互換性がなかったりするしインテリセンスもないし

76 :
>>69
次の解説が参考になるかも
ttp://www.cactussoft.co.jp/Sarbo/divASIOManageNAudio.html

77 :
>>73
フラットなラッパーって?

78 :
前相談した同じ変数名を別の型に使いまわすやつ
dynamic r;
r = 3.30;
...
r = new ring();
みたいにやればできますね
変数名は一文字がいいのでちょっとやってみたかったのです

79 :
>>78
お前とは仕事したくないな

80 :
>>78
なんで自するん?

81 :
>>78
うっわー…

82 :
>>78
難読化ソフトの予算が節約できるな

83 :
数年後メンテしてみてくれ
己の愚かさにへどが出そうになるから

84 :
まあ実用的な場面はあまりないでしょう

85 :
>>84
全くないよ

86 :
{
var a = new Hoge();
}
{
var a = new Foo();
}
これで十分だろ

87 :
new Foo().Bar();でいいよ

88 :
2つのコレクションが同じ物を含んでいるかチェックしたい場合はこんな感じでいいんでしょうか?
もっと短い適切な書き方とかありますか?
bool flag = !collection1.Except(collection2).Any();

89 :
>>88
ggrks

90 :
>>88
ExceptじゃなくてIntersect

91 :
>>88
SequenceEqual

92 :
C♯##

93 :
C++で作成したdll内の画像(Bitmap)をC#で使用するにはどのように
受け渡しをしたらいいのでしょうか?一旦ファイルに落とすことなく
実装したいのですが思いつきません・・・よろしくおねがいします><

94 :
これが初心者でないと誰が認めるというのか
DLL側でLoadImageして、ビットマップハンドルをC#に渡せよ
Bitmapはハンドルから作れるだろ

95 :
つーか最近C++C++ってうるせーけど同じ人なの?

96 :
だったら何だというのか。

97 :
多分二人いると思う
一人はまあまあ知ってる風の三流の人
もう一人は完全に素人

98 :
俺は11人いると思う、そのうち一人は教官だな

99 :
11人もいる!

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【3DS】プチコンを語るスレ【DSi】 (446)
【RAD統合環境】 Qt 総合スレ 12 【Win/Mac/Linux】 (977)
正規表現 Part9 (557)
雑談スレ 4 (229)
【ヤパーリ】XMLをS式に置換えていくスレ【LISP最強】 (239)
Visual Studio IDE環境 (537)
--log9.info------------------
(島根)山陰バススレ5(鳥取)/(+但馬?) (613)
●立川バス乗務員専用スレpart1● (878)
東急トランセの乗務員の方 7仕業 (450)
北海道のバスヲタについて語ろうV そして伝説へ… (303)
西日本JRバス その7 (681)
小湊鉄道バス&九十九里鉄道バススレ8 (344)
【A☆LPICO】 松本電鉄 【10号車】 (731)
【マナカで】名鉄バス社員専用【モナカ】 (516)
【秩父鉄道観光バス】 (671)
【子15】熊本のバスを語ろう【リハビリ病院】 (737)
静岡県の高速バススレッド 8号車 (避難所) (526)
【京王グループ】西東京バス【18号車】 (801)
関東鉄道バススレッド17 (205)
神奈中・神奈交バス総合スレッドPart7 (289)
【はかた】西鉄夜行高速バス 5【Lions EXP】 (840)
川18鳩ヶ谷公団住宅】 国際興業バス【浦18下笹目 (391)
--log55.com------------------
【渡辺道明】続ハーメルンのバイオリン弾き Part29
【フランス】ベルサイユのばらPart104【革命】
【MADARA】 魍魎戦記 摩陀羅 part九【マダラ】
佐々木倫子総合スレッド 5
■ゴリポン君■3
■あーみん劇場・第54幕 こんな計画表があるかーっ
あしたのジョーを懐古するスレ-明日のためにその43
【ウホッ】山川純一総合 10発目【いい男】