C#, C♯, C#相談室 Part79
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/03/19(火) 03:46:18.65C#, C♯, C#相談室 Part78
http://toro.2ch.net/test/read.cgi/tech/1356268827/
Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
Visual Studio 2012 Express
http://www.microsoft.com/visualstudio/jpn/products/visual-studio-express-products
0652デフォルトの名無しさん
2013/06/02(日) 15:53:53.89ID:E6RfhoLP!人の目を見て話せないモジモジ系(笑)の人なんだろうけど、
自己保身のためにも、不適正な仕様に従うにしても、最低限それが不適切であることは
ちゃんと指摘しておいた方がいいと思うよ。
0653デフォルトの名無しさん
2013/06/02(日) 15:58:21.18クラス仕様とかまでもらえるの?
0654デフォルトの名無しさん
2013/06/02(日) 15:58:45.310655デフォルトの名無しさん
2013/06/02(日) 16:00:31.47>>651は日本のIT業界を皮肉ってるだけだよ
それとモジモジはどこからそう読み取った?
0656デフォルトの名無しさん
2013/06/02(日) 16:07:09.77会社毎に文化が違うからなんとも言えないかな
肩書きは契約に直結する場合が多いし
個人的にはクラス仕様までもらったらコーダーだと思う
0657デフォルトの名無しさん
2013/06/02(日) 16:14:48.21そして無能SEは自分のミスも全部PGのせい。
とくに外資だと失敗はほとんどPGのせいにして責任回避するのがふつう。
0658デフォルトの名無しさん
2013/06/02(日) 16:24:06.460659デフォルトの名無しさん
2013/06/02(日) 16:26:00.570660デフォルトの名無しさん
2013/06/02(日) 16:37:31.820661デフォルトの名無しさん
2013/06/02(日) 16:48:12.80あるのか知らないが
0662デフォルトの名無しさん
2013/06/02(日) 16:49:38.09メンヘル板ならこいつら幼稚な奴らにぴったりだろう
というか精神科行けよと思う
どう見ても精神に異常を来たしてるだろう
0663デフォルトの名無しさん
2013/06/02(日) 16:55:37.99ID:E6RfhoLP!本気で言ってるのなら、君が皮肉った方がいいのは日本のIT業界じゃなく、
君自身の性格的欠陥の方。
最低限の自己保身的行動が取れないのは、バカかコミュニケーションスキルが欠如してるか、
またはその両方だろう。
0664デフォルトの名無しさん
2013/06/02(日) 17:00:16.33.゙l゙'i、 `゙''-,,,,,,,,,,,,,,,,,_
: ゙l `'i、.,r‐-、,,`'-,、 `''ー、_
゙l ,/゛ `゙''''ミッ、 ゙゙'''-,、
У `!ヽ、 ._,,i、 ,,,,,、
/ ゙r゙l, / ‘i、 { ゙i、
| ゙'i゙l ./ |, ゙l、 ゙l
| _,,,,_ .゙'},. | ,/ ゚i、 ゙l ゙l、
゙l ,r'"` `゙゙''',゙',lri、,,/ .゙l ゙l ヽ
│ .| .彳 ゚|″ | .| │
│ .ヽ_ _,,-° `i、 .| .,,゙l, .゙ケ'=ッ、
゙l, ,,,,,,、  ̄ ̄ .゙l,-'シ'',!.゙l ,/゜ ゙'i、 .}i、`.゙'i、
`'| `'i、 ,,,rン・'゙,,,-'i| .| .l、,,」 ゙= |
.゙ヽ, .゙!, i″ ゙''i, .l │ /" .゚┓ .|
‘'''l" ゙'-,,、゙l、 .,,「 | ゙l、 ゜ .|
゙l'-,、 `゙''゙‐'" ./ .ヽ .|
| ゙'ヽ,、 / '゙l .,ノ
′ .~'―--―ー¬''" ヽ-, |、
" .l゙
0665デフォルトの名無しさん
2013/06/02(日) 17:13:32.98性格的欠陥を指摘するとは大した洞察力だ
でも>>651はオレじゃないんだ残念
つーか肩の力抜けよ、あんた面倒臭いよ
絡むといつも疲れる
0666デフォルトの名無しさん
2013/06/02(日) 17:26:43.85無能SE乙。
0667デフォルトの名無しさん
2013/06/02(日) 17:55:30.770668デフォルトの名無しさん
2013/06/02(日) 18:41:24.32こんなことすぐ言う奴はたいてい日本で浮いてるKYな奴。
0669デフォルトの名無しさん
2013/06/02(日) 18:48:28.600670デフォルトの名無しさん
2013/06/03(月) 09:41:49.80市販とかフリープロジェクトの動きってないの?
ソニーがゲームで使っただけ?
0671デフォルトの名無しさん
2013/06/03(月) 09:46:09.58C#->C++へコンバートしてとかそんな
手法ばっかりじゃないの?
あとuniftyはあくまでスクリプトのポジションに当たる
コードをC#でかけるってだけで.netのような使われ方はしてないはず
0672デフォルトの名無しさん
2013/06/03(月) 09:49:13.85C++中間言語手法?
0673デフォルトの名無しさん
2013/06/03(月) 09:50:22.95オートfreeでガベコレはOS任せとか
0674デフォルトの名無しさん
2013/06/03(月) 09:53:56.51monotouchがios向け開発でやってるような手法じゃないの?
GCに相当する機能をあらかじめ用意して
C#->C++コンバートしたコードと一緒に
リンクしておくの
0675デフォルトの名無しさん
2013/06/03(月) 09:57:43.880676デフォルトの名無しさん
2013/06/03(月) 10:01:11.30確かisoの開発制限の関係でこじんまりしたGCの機能を
MonoTouch側が用意して実行ファイルを作る際に
一緒に入れておくことで実現してたはず
C#でも書けるけどやっぱりiosの開発の制約上
objective-cにコンバートしてたしね
0677デフォルトの名無しさん
2013/06/03(月) 12:07:10.79ジェネリックなコンストラクタを
どう書けばよいですか?
C++で以下のようなコードを
C#でどう書けばよいですか?
class A{
template<typename T>
A(T t){}
};
0678デフォルトの名無しさん
2013/06/03(月) 12:40:13.17コンストラクタじゃないメンバーなら出来るから、
わざと出来なくしてるんじゃないかな。
0679デフォルトの名無しさん
2013/06/03(月) 12:43:10.28generic classのコンストラクタの中で、Tの型に応じた処理を入れれば良いんじゃない?
0680デフォルトの名無しさん
2013/06/03(月) 13:09:11.81それが出来ない事でC#のgenericはコードの肥大を防いでるんじゃなかったっけ
0681デフォルトの名無しさん
2013/06/03(月) 13:11:08.72public A(T t){}
}
の何が嫌なん?
0682デフォルトの名無しさん
2013/06/03(月) 14:11:33.14ID:biPmxv2t!何が嫌とかじゃなくて、何故できない仕様なのか知りたいという
知的好奇心でしょ。
0683デフォルトの名無しさん
2013/06/03(月) 14:21:42.52確かJITコンパイラ用のMSILはこのようにしてもコードを1つしか吐かないので、
C++のようにコンパイル時に要求された全ての型のコードを生成してしまうのと違って
動的なジェネリックが可能になってるとか
あまりに自由度が高いのでwhereで型の制約ができるし
0684デフォルトの名無しさん
2013/06/03(月) 19:06:14.93あれコンパイルしたとしてC++並に効率的になるのか?
0685デフォルトの名無しさん
2013/06/03(月) 20:29:13.66JITコンパイラを使っている比較的新しい言語だ
今の性能が余っているCPUだからこそ出来る芸当
0686デフォルトの名無しさん
2013/06/03(月) 20:36:13.100687デフォルトの名無しさん
2013/06/03(月) 21:05:34.54実際のCPUはレジスタマシンだが
どのようにコンパイルされているのだろう
0688デフォルトの名無しさん
2013/06/03(月) 21:41:21.390689デフォルトの名無しさん
2013/06/03(月) 22:36:41.530690デフォルトの名無しさん
2013/06/03(月) 23:33:59.020691デフォルトの名無しさん
2013/06/04(火) 00:33:33.75技術的にはできない理由はないと思うが
明示的に型引数を指定する場合にクラスの型引数なのかメソッドの型引数なのか曖昧になるだろ
コンストラクタの型引数に限り明示不可というのも一貫性に欠ける
0692デフォルトの名無しさん
2013/06/04(火) 05:51:59.81↑これってどういう意味ですか?
デリゲートもラムダ式も分かるんですがnullの部分の意味がよくわかりません
メソッドにnullを代入することってできるんですか?
0693デフォルトの名無しさん
2013/06/04(火) 05:54:07.630694デフォルトの名無しさん
2013/06/04(火) 05:59:54.17method1はメソッドじゃなくて変数じゃね?
0695デフォルトの名無しさん
2013/06/04(火) 07:22:02.52ID:ygsqUXBt!0696デフォルトの名無しさん
2013/06/04(火) 07:32:08.31ググれば分かるだろ?サードパーティ製のUI部品だよ
0697677
2013/06/04(火) 09:06:11.47interface I{}
class B<T> : I{
public B(T t){}
}
class A{
I i;
public A<T>(T t){ i = new B<T>(t); }
}
>>679 いただいたアドバイスを元に色々試していたら
static createメソッドという所に落ち着きました。
ありがとうございます。
class A{
I i;
A(I ii){ i = ii; }
public static A Create<T>(T t){
return new A(B<T>(t);
}
}
0698デフォルトの名無しさん
2013/06/04(火) 10:45:16.18まあデリゲート変数だろうな
0699デフォルトの名無しさん
2013/06/04(火) 10:47:46.31ラムダ式って結局はコンパイラが展開してるんでしょ?
展開した形って表示できないのかね?
0700デフォルトの名無しさん
2013/06/04(火) 15:22:22.59要は動的にジェネリックを生成すればいいんだろ
Aのコンストラクタをobjectで受けてその型でBをインスタンス化する
public A(object t) { i = (I)Activator.CreateInstance(typeof(B<>).GetGenericTypeDefinition().MakeGenericType(t.GetType()), t); }
とかでどうだ?
0701デフォルトの名無しさん
2013/06/04(火) 19:33:51.27ILDASMでも使えばいいだろ
0702デフォルトの名無しさん
2013/06/04(火) 19:46:15.23デリゲートなら別にありうる変数名だと思う
0703デフォルトの名無しさん
2013/06/05(水) 07:05:44.990704デフォルトの名無しさん
2013/06/05(水) 09:54:44.870705デフォルトの名無しさん
2013/06/05(水) 10:11:35.140706デフォルトの名無しさん
2013/06/05(水) 10:17:47.060707デフォルトの名無しさん
2013/06/05(水) 10:26:19.530708デフォルトの名無しさん
2013/06/05(水) 10:36:55.390709デフォルトの名無しさん
2013/06/05(水) 10:44:35.65そういうスレッドは何もしなくてもそのうちメモリから解放されますか?
ちなみにスレッドは2ちゃんのスレッドのことじゃないです
0710デフォルトの名無しさん
2013/06/05(水) 10:50:45.800711デフォルトの名無しさん
2013/06/05(水) 10:54:26.74それならいいんです
0712デフォルトの名無しさん
2013/06/05(水) 10:58:25.99俺は、Exitedイベントで終了処理を書いてるけど
0714デフォルトの名無しさん
2013/06/05(水) 19:22:36.640715デフォルトの名無しさん
2013/06/06(木) 09:36:02.42{
...
}
みたいなのがほしいよぉ
0716デフォルトの名無しさん
2013/06/06(木) 15:49:30.99むずかしすぎてわからん
解説して
0717デフォルトの名無しさん
2013/06/06(木) 21:02:01.82>要は動的にジェネリックを生成
0718デフォルトの名無しさん
2013/06/06(木) 21:38:24.95.GetGenericTypeDefinition()…B<>→B<> ※無意味
.MakeGenericType(t.GetType())…B<>→B<tの型>
Activator.CreateInstance…new B<tの型>(t)
0719デフォルトの名無しさん
2013/06/07(金) 12:17:37.65Class1を継承しているClass2があって、
Interface1で宣言されているMethod1を
Class2でオーバーライドするには、
どのように書けばよいですか?
interface Interface1{
void Method1();
}
class Class1 : Interface1{
void Interface1.Method1(){}
}
class Class2 : Class1{
override void Method1(){} //???
}
インターフェースではなく抽象クラスなら
オーバーライドできましたが、
インターフェースは変更できないです。
0720デフォルトの名無しさん
2013/06/07(金) 12:43:43.91こうじゃないの?
class Class1 : Interface1
{
public virtual void Method1() { }
}
class Class2 : Class1
{
public override void Method1() { } //???
}
0721719
2013/06/07(金) 13:17:47.76Interface1のMethod1を明示的に実装する構文のようです。
>こうじゃないの?
教えていただいたとおりにすると、
Interface1.Method1経由で呼出したときに
Class2.Method1ではなくClass1.Method1が呼出されました。
0722デフォルトの名無しさん
2013/06/07(金) 13:31:42.27class Class1 : Interface1
{
void Interface1.Method1() { }
}
class Class2 : Class1,Interface1
{
void Interface1.Method1() { } //???
}
0723デフォルトの名無しさん
2013/06/07(金) 13:48:58.960724719
2013/06/07(金) 14:31:41.20Interface1.Method1を呼ぶと
Class1.Method1が呼出されました。
基本クラスと同じインターフェースを実装しても
無視されてしまうようですね。
>void Interface1.Method1() { } がprivateのせいだと思うから、こうするとか。
これは明示的にインターフェースを指定するときの構文で
publicと付けられないし、自動的にpublicになるようです。
0725デフォルトの名無しさん
2013/06/07(金) 15:09:44.71インターフェイス メンバーの明示的な実装
http://msdn.microsoft.com/ja-jp/library/vstudio/ms229034(v=vs.100).aspx
>機能を派生クラスによって専門的に処理する場合は、
>明示的に実装されたメンバーと同じ機能を提供するプロテクト仮想メンバー関数を用意します。
>明示的に実装されたメンバーはオーバーライドできません。
> これらを派生クラスで再定義した場合、派生クラスでは基本クラス実装を呼び出すことができなくなります。
> プロテクト メンバーに名前を付けるには、明示的なインターフェイス メンバーと同じ名前を使用するか、
>またはインターフェイス メンバーの名前に Core を付け加える必要があります。
まずは明示的な実装が本当に必要かどうか再検討すべきだな。
0726デフォルトの名無しさん
2013/06/07(金) 15:47:18.97http://msdn.microsoft.com/ja-jp/library/aa664594%28v=vs.71%29.aspx
ちょっと頭こんがらがってきました
0727デフォルトの名無しさん
2013/06/07(金) 16:02:02.54privateかpubicかじゃなくて、インターフェイスの明示的な実装ってのは
まさにインターフェイスを実装してるだけで、そのクラスのメソッドを定義してることにならない
つまり>>719ではClass1.Method1というメソッドは存在しない
存在しないんだからClass2でオーバーライドできない
0728デフォルトの名無しさん
2013/06/07(金) 16:34:42.060729デフォルトの名無しさん
2013/06/07(金) 17:21:18.70>明示的なメソッドの宣言
インターフェイスの明示的な実装のことだよな?
publicにできないんじゃなくて、privateとしても存在してない
Class1の内部からでも(インターフェイスにキャストしない限り)Method1にはアクセスできないぞ
インターフェイス回りは基本的には暗黙的にpublicだ
0730デフォルトの名無しさん
2013/06/07(金) 17:24:26.05ああそうか
明示的な使い方をしないと見えないんだった
0731デフォルトの名無しさん
2013/06/07(金) 19:04:56.29結論 : MS様が使うなと言っている。
0732デフォルトの名無しさん
2013/06/07(金) 19:33:58.23C++ では普通に実装できるのにね http://codepad.org/rp8tiSBg
いったいどういうこと?
0733デフォルトの名無しさん
2013/06/07(金) 19:37:50.640734デフォルトの名無しさん
2013/06/07(金) 19:40:38.30それならC#も普通にできるよ。 >>720
0735デフォルトの名無しさん
2013/06/07(金) 19:51:33.650736デフォルトの名無しさん
2013/06/07(金) 19:53:49.30結論 : MS様が馬鹿には無理と言ってるのだから初歩ではない。
0737デフォルトの名無しさん
2013/06/07(金) 20:14:43.01ID:EFaRBvNc!0738デフォルトの名無しさん
2013/06/07(金) 20:23:28.950739デフォルトの名無しさん
2013/06/07(金) 20:26:45.05普通は一緒でいいんだけどね
0740デフォルトの名無しさん
2013/06/07(金) 20:34:53.210741デフォルトの名無しさん
2013/06/07(金) 20:37:01.04>Private Property IHello_Name() As String Implements IHello.Name
0742デフォルトの名無しさん
2013/06/07(金) 20:50:16.370743デフォルトの名無しさん
2013/06/08(土) 21:45:37.76自動生成されたコード見ると
Datasourceにtypeof(型)をいれてんだけど
あれって何やってんの?
0744デフォルトの名無しさん
2013/06/08(土) 22:27:13.150745デフォルトの名無しさん
2013/06/08(土) 22:47:01.01BindingSource.DataSource = typeof(デザイナで指定した型);
こんな感じ
0746デフォルトの名無しさん
2013/06/08(土) 23:22:09.28>BindingSource.DataSource = typeof(デザイナで指定した型);
の行のあるなしを試してみなよ
デザイナーは機械的にコードを差し込んだり抜いたりしてるから
確実に型を指定したりとか何か理由があってやってるだけじゃないの?
0747デフォルトの名無しさん
2013/06/08(土) 23:30:10.230748デフォルトの名無しさん
2013/06/09(日) 00:52:46.64プロパティウィンドウでDataMemberとか指定したときのチェックとかに要るんじゃね
0749デフォルトの名無しさん
2013/06/09(日) 00:55:05.930750デフォルトの名無しさん
2013/06/09(日) 01:04:16.22すっきりした。ありがとう
0751デフォルトの名無しさん
2013/06/09(日) 03:49:41.37エディタに違いありますか?
マクロとかアウトライン表示とか欲しいんですけど
■ このスレッドは過去ログ倉庫に格納されています