C♯, C#相談室 Part34
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2006/09/06(水) 22:34:17前スレ
C♯, C#相談室 Part33
http://pc8.2ch.net/test/read.cgi/tech/1153537081/l50
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0809デフォルトの名無しさん
2006/10/24(火) 17:33:060810デフォルトの名無しさん
2006/10/24(火) 17:33:09実装MethodにIntarfaseName.が付くんですぅ><
0811808
2006/10/24(火) 17:33:57ttp://www.kumei.ne.jp/c_lang/cs/cs_60.htm
0812808
2006/10/24(火) 17:36:58明示する理由が分かった。
これpublicにするとまずいだろ
0813デフォルトの名無しさん
2006/10/24(火) 17:42:400814デフォルトの名無しさん
2006/10/24(火) 17:44:09つい、やってしまいますたwごめんね(はぁと
0815デフォルトの名無しさん
2006/10/24(火) 18:32:43積極的な理由がない場合は、インターフェイス メンバの明示的な実装を避けます。
明示的な実装について理解するには、高度な専門知識が必要です。
たとえば、明示的に実装したメンバはそのシグネチャがプライベートであっても
パブリックに呼び出すことができることを知らない開発者が大勢います。
シグネチャがプライベートであるため、明示的に実装されたメンバは、
パブリックに参照できるメンバのリストには表示されません。また、メンバを明示的に
実装すると、不必要に値型がボックス化される原因となることもあります。
0816デフォルトの名無しさん
2006/10/24(火) 19:35:58void IInterfaceA.Method(){}
void IInterfaceB.Method(){}
こういうのはいいんだっけ
0817デフォルトの名無しさん
2006/10/24(火) 22:55:47boxing/unboxing が行われるコードが生成されるの?
0818デフォルトの名無しさん
2006/10/24(火) 23:03:20行われる時は行われるし行われない時は行われないだろ。
0819デフォルトの名無しさん
2006/10/24(火) 23:13:27http://msdn2.microsoft.com/ja-jp/library/ms172194.aspx
>ジェネリック コレクション型の利点は、タイプ セーフだけではありません。
>ジェネリック コレクションでは、値型をボックス化する必要がないため、
>一般に、値型の格納と操作のパフォーマンスが向上します。
Javaとは違うよ
0820デフォルトの名無しさん
2006/10/25(水) 00:04:35画面をつくったら、
アセンブリロケーションが変な場所になっていて
UIデザイン画面読み込み時にApp.Configがありませんとエラーが出ました。
実際ビルドすると普通にとおってローカルで動いています。
デザイン時のこのエラーをなくすにはどうしたらいいのでしょうか?
ウェブサービスを参照している画面を継承元にするとやはりまずい?
0821デフォルトの名無しさん
2006/10/25(水) 01:21:510822デフォルトの名無しさん
2006/10/25(水) 10:09:09すいません、参照しているところ、、、って?
Designerにそんなことかいてあるのでしょうか?
探してみます!
0823デフォルトの名無しさん
2006/10/25(水) 22:52:01NUnit2を使ってテストしたいのですが
同期メソッドのテストは出来たのですが
非同期メソッドのテストの仕方がわかりません
デリゲートにコールバックが返ってきて値をチェックして成功を判断したいのです
誰かやり方を教えてください
0824デフォルトの名無しさん
2006/10/25(水) 23:10:24適当にSleep入れてコールバック側でいつもどおりチェックする
とりあえず、AutoResetEventを使用しとけば?
0825デフォルトの名無しさん
2006/10/25(水) 23:20:14.NETの学習は時間の無駄です
0826デフォルトの名無しさん
2006/10/25(水) 23:27:23.NETの学習は時間の無駄です
0827デフォルトの名無しさん
2006/10/25(水) 23:38:36.NETの学習は時間の無駄です
0828デフォルトの名無しさん
2006/10/25(水) 23:46:03.NETの学習は時間の無駄です
0829デフォルトの名無しさん
2006/10/25(水) 23:53:46A.text + B.text(数値加算) の結果をC.txetに表示したいのですが、エラーになります。
対象方を伝授して下さい
int A = A.text;
int B = B.text;
int C = A + B;
C.text = C.ToString();
0830デフォルトの名無しさん
2006/10/25(水) 23:55:470831デフォルトの名無しさん
2006/10/25(水) 23:55:58thx.
ということは、代入時の動作が値型と参照型で違うけれども、
Generic なクラスを書くときは、そのへんを考慮しないといけないってこと?
0832デフォルトの名無しさん
2006/10/25(水) 23:57:01みたいな質問って.NETの弊害じゃないかな?
アセンブラやCからプログラムを始めたような人なら絶対しない質問だよね
ポトペタ環境で糞低レベルなやつの質問が正直うぜー
VC6のような初心者にいきなり高い壁を見せ付けて脱落させる環境が好きだったのに・・・
0833デフォルトの名無しさん
2006/10/25(水) 23:58:360834デフォルトの名無しさん
2006/10/25(水) 23:58:52('A`) プ
0835デフォルトの名無しさん
2006/10/25(水) 23:59:43C から始めた人なら char * を足し合わせるんじゃないか
0836デフォルトの名無しさん
2006/10/26(木) 00:00:300837デフォルトの名無しさん
2006/10/26(木) 00:00:56.NETの学習は時間の無駄です
0838デフォルトの名無しさん
2006/10/26(木) 00:01:28コピーが追加されるか、そのものへの参照が追加されるのかは実質的に
区別が必要だと思うけど・・・
でもまぁそれは Generics なクラスを書くときに限らず、
値型を用いる場合一般について言えることのような気がする。
0839デフォルトの名無しさん
2006/10/26(木) 00:18:29.NETの学習は時間の無駄です
0840デフォルトの名無しさん
2006/10/26(木) 00:21:42お前のほうが(ry
0841デフォルトの名無しさん
2006/10/26(木) 00:22:420842デフォルトの名無しさん
2006/10/26(木) 01:17:40.NETの学習は時間の無駄です
0843デフォルトの名無しさん
2006/10/26(木) 01:21:47手伝ってやろうw
.NETの学習は時間の無駄です
そうは思わんがw
0844829
2006/10/26(木) 01:24:560845デフォルトの名無しさん
2006/10/26(木) 01:34:41C#は自動でstring → intなどの型変換しないのだ。
c++やjavaとかもです。
自動で型変換すると不都合が起こったり、バグが分かりづらくなりますので。。
0846デフォルトの名無しさん
2006/10/26(木) 01:39:560847デフォルトの名無しさん
2006/10/26(木) 01:46:05(;´Д`)
0848デフォルトの名無しさん
2006/10/26(木) 02:20:270849デフォルトの名無しさん
2006/10/26(木) 09:27:170850デフォルトの名無しさん
2006/10/26(木) 09:51:190851デフォルトの名無しさん
2006/10/26(木) 11:05:01ポインタ演算が整数で足し算しなきゃ駄目だからCよりえげつない事になるな
p++って書けばいいとこ
new IntPtr(base.ToInt32()+Marshal.Sizeof(..))
0852デフォルトの名無しさん
2006/10/26(木) 11:26:19VSUG,MSDNフォーラムぐらいしかわからんです。
メーリングリストや海外の掲示板でもOKです。
0853デフォルトの名無しさん
2006/10/26(木) 17:30:00unsafe使えばいいじゃない
0854デフォルトの名無しさん
2006/10/27(金) 01:19:21本来ならVB(6.0)でもそんなことやっちゃダメなんだがな。
とにかくデータ型とその演算方法をそろえることだ。
どう見ても 文字型+文字型=整数型 っておかしいだろ?
がんばれ。
0855デフォルトの名無しさん
2006/10/27(金) 01:23:010856デフォルトの名無しさん
2006/10/27(金) 01:24:070857デフォルトの名無しさん
2006/10/27(金) 01:41:31『自動で型変換が行われることはない』 が誤り
0858デフォルトの名無しさん
2006/10/27(金) 03:28:00さすがに変数名とコントロール名がかぶってるから通らない。
でも
Dim x As Integer = A.Text
Dim y As Integer = B.Text
C.Text = x + y
なんてのは通っちゃう。もちろん実行時に数値変換できない文字列だったら例外発生。
オプションでコンパイル時に型チェックするようには出来るが規定値はOff。
0859デフォルトの名無しさん
2006/10/27(金) 03:44:190860デフォルトの名無しさん
2006/10/27(金) 03:50:290861デフォルトの名無しさん
2006/10/27(金) 04:22:140862デフォルトの名無しさん
2006/10/27(金) 04:26:45int i = Convert.ToInt32("123"); と補完する感じ。
実際使われるのはVB独自の変換クラスのメソッドだけど。
0863デフォルトの名無しさん
2006/10/27(金) 07:35:18どの文字かまで追ってないけどXMLの禁則文字が入ってるだけじゃね?
><&は< > &に置き換え
あぁ、タグ名かも知れんな・・・
"XML 禁則"でぐぐってくだちぃ
0864863
2006/10/27(金) 07:36:210865デフォルトの名無しさん
2006/10/27(金) 08:16:39これのどこがまちがってんのか教えてくれ。
0866デフォルトの名無しさん
2006/10/27(金) 08:20:55自動変換してくれるとは知らなかったぞ
0867デフォルトの名無しさん
2006/10/27(金) 08:23:33サンプルキボン
0868デフォルトの名無しさん
2006/10/27(金) 09:31:41>>865
蒸し返すな
0869デフォルトの名無しさん
2006/10/27(金) 11:01:50一つのファイルに対して複数の Serializer.Serialize() すると、一つのファイルに複数の
オブジェクトが入りますが、Deserialize できません。
どうなんでしょう?
0870デフォルトの名無しさん
2006/10/27(金) 12:12:08追記
違う型のオブジェクトを一つの XML ファイルにシリアライズできますか?
0871デフォルトの名無しさん
2006/10/27(金) 12:41:570872デフォルトの名無しさん
2006/10/27(金) 12:43:02それより保存クラス作ったほうがいいんじゃないか?
0873デフォルトの名無しさん
2006/10/27(金) 12:56:51>C#は自動で(string → intなどの)型変換しないのだ。
俺は↑と読んだ。
0874デフォルトの名無しさん
2006/10/27(金) 12:57:57どもです。眺めてみたけど、どれでしょう?
xmlns などを変更してみたがだめでした。orz
0875デフォルトの名無しさん
2006/10/27(金) 13:44:290876デフォルトの名無しさん
2006/10/27(金) 13:58:56C# は自動で string (自動で何でもstringにする、の意?)
→ int などの型変換はしないのだ (int にはしてくれない、の意?)。
いや意味は不明だが。
0877デフォルトの名無しさん
2006/10/27(金) 14:13:18>>873 みたいに、括弧の中が抜け落ちて 「C# は自動で型変換しないのだ」 に読めてしまう罠( ´ー`)y-~~
0878デフォルトの名無しさん
2006/10/27(金) 14:17:250879デフォルトの名無しさん
2006/10/27(金) 16:11:110880デフォルトの名無しさん
2006/10/27(金) 17:19:09int→stringはやってくれる場合もあるけど
0881デフォルトの名無しさん
2006/10/27(金) 17:22:23言語仕様ではやらないよ。
あれは演算子のオーバーロードですよ。
0882デフォルトの名無しさん
2006/10/27(金) 17:23:13○object
0883デフォルトの名無しさん
2006/10/27(金) 17:23:16ToString()が呼ばれるだけ
0884デフォルトの名無しさん
2006/10/27(金) 17:38:03俺も変わらないけどw
初心者は
abc.Text="abc"+1;
がおkで、
abc.Text= 1+"abc";
がなぜNGなのかわからない。
ヒント:演算子オーバーロード
0885デフォルトの名無しさん
2006/10/27(金) 17:40:06両方OK
0886デフォルトの名無しさん
2006/10/27(金) 17:46:34>>884
>>884
>>884
0887デフォルトの名無しさん
2006/10/27(金) 17:48:21ついでに言うと、演算子オーバーロードではない。
言語仕様上でどうなってるかは忘れたが、文字列結合演算子 + の実体は String#Concat
0888デフォルトの名無しさん
2006/10/27(金) 18:06:10数値型の場合、+ は 2 つのオペランドの合計を計算します。
オペランドの片方または両方が文字列型の場合は、オペランドの文字列表現が
連結されます。
0889デフォルトの名無しさん
2006/10/27(金) 18:06:19「int → long とかは暗黙の型変換あるよ」って意味でもないの?
C# では、暗黙の型変換は、「整数 → より表現範囲の広い整数」か、
float → double のみ。
明示的な型変換も、組み込み型だと、object からのダウンキャストと、
整数・浮動小数点数同士の間のみ。
string との相互変換は int.Parse とかと ToString 使う。
0890デフォルトの名無しさん
2006/10/27(金) 18:11:30わざわざObjectに定義するほど重要?
0891デフォルトの名無しさん
2006/10/27(金) 18:15:280892デフォルトの名無しさん
2006/10/27(金) 18:18:59Console.Write(string format, params object[] args) とかのためでしょ。
0893デフォルトの名無しさん
2006/10/27(金) 18:32:367.7.4加算演算子
x + y 形式の演算では、二項演算子のオーバーロードの解決 (7.2.4 を参照) を適用して、
演算子の実装が選択されます。オペランドが、選択した演算子のパラメータの型に
変換され、その結果の型が演算子の戻り値の型になります。
文字列の連結 :
string operator +(string x, string y);
string operator +(string x, object y);
string operator +(object x, string y);
二項演算子 + は、一方または両方のオペランドが string 型のときは、文字列の連結を
行います。文字列連結のオペランドが null の場合は、空の文字列に置き換えられます。
文字列ではない引数は、object 型から継承された仮想の ToString メソッドを呼び出すことで、
文字列形式に変換されます。
ToString が null を返す場合は、空の文字列に置き換えられます。
0894デフォルトの名無しさん
2006/10/27(金) 18:36:29string ⇔ 数値型間の暗黙の型変換が出来るもんだと勘違いしちゃう初心者が出てくるんかな?
0895デフォルトの名無しさん
2006/10/27(金) 18:54:49プログラムの内容に関係ないところは気にしなくて済むようにするのが言語としてはまっとうだと思うけど
ToStringはまだ気にしておくべきところなんだろうね
+でもConsole.Writeでも、全部Tostring()明記を強制したほうがいい気がするなあ
D言語の配列連結演算子はなかなか良い設計だと思う俺
0896デフォルトの名無しさん
2006/10/27(金) 18:56:48文字列結合の + は明記にして欲しいけど。
0897デフォルトの名無しさん
2006/10/27(金) 18:58:0615.17.1 文字列連結演算子 +
一つのオペランドの式だけが型Stringならば,実行時に文字列を生成するために,
他方のオペランドに対して文字列変換を実行する。結果は二つのオペランドの文字列を
連結して新たに作成したオブジェクト String への参照とする。
新たに作成した文字列内では,左辺オぺランドの文字が右辺オぺランドの文字に先行する。
0898デフォルトの名無しさん
2006/10/27(金) 19:55:11どの言語重点的にやったらいいでつかね?
ちなみにいまC#中
0899デフォルトの名無しさん
2006/10/27(金) 20:00:19C#ができればJavaもVB.NETも簡単にできるようになる
0900デフォルトの名無しさん
2006/10/27(金) 20:00:230901デフォルトの名無しさん
2006/10/27(金) 20:16:54本よんでせかせかやります
0902デフォルトの名無しさん
2006/10/28(土) 11:54:56画像編集はプログラミングつーよりイラストレーターとかじゃないか?
0903デフォルトの名無しさん
2006/10/28(土) 18:18:29ドラッグ&ドロップでフルパスを取得することまではできましたが、
そのフルパスからファイルを実行させる方法はどうするのでしょうか?
0904デフォルトの名無しさん
2006/10/28(土) 18:25:470905デフォルトの名無しさん
2006/10/28(土) 18:54:33ありがとうございます
0906デフォルトの名無しさん
2006/10/29(日) 05:48:15bool型の変数に対して、複数スレッドから読み書きする必要があるのですが、
lock等の排他制御を書く必要ありますでしょうか?
それとも、bool型に排他制御は必要ないでしょうか?
0907デフォルトの名無しさん
2006/10/29(日) 05:53:39static volatile bool aaa;
0908206
2006/10/29(日) 06:01:46レス数が900を超えています。1000を超えると表示できなくなるよ。