ふらっとC#,C♯,C#( ..
577:デフォルトの名無しさん
09/04/01 01:56:21
>>574
>フォームにデザイナで追加したコントロールには、何か、インデックスの
>ようなものが割り振られてたりはしないのでしょうか?
ない
プログラム内で配列でコントロールを生成して使ったことがある。
578:デフォルトの名無しさん
09/04/01 02:04:02
Control.Controls
579:デフォルトの名無しさん
09/04/01 02:09:20
なんと、そんなのが有ったのか・・・>>577のないは訂正だ。
580:デフォルトの名無しさん
09/04/01 02:47:59
類似質問ですが
グループボックス内にテキストボックスやプログレスバーなどが沢山あり
それを実行時にグループボックスごと追加する場合
ユーザー定義コントロールを作ってnewするのがいい方法なのでしょうか?
又、その場合ユーザー定義コントロールの作り方が良くわかるサイトなどご存知ないでしょうか?
宜しくお願い致します。
581:デフォルトの名無しさん
09/04/01 03:10:49
574っす。
>>575-579
ありがとやんした!!
582:デフォルトの名無しさん
09/04/01 03:43:54
>>569
URLリンク(uwa.potetihouse.com)
とか
583:568
09/04/01 03:53:22
別のスレで聞いてきます。どうも〜
584:デフォルトの名無しさん
09/04/01 06:23:48
質問です。
今使用しているアンマネージDLLに int WINAPI hoge(float *p, int size); のような関数があります。
float *pは呼出元で確保した配列のポインタなのですが、16バイトアライメントされている必要があります。
C#でアライメントを考慮した配列を確保する方法などあるのでしょうか?
585:デフォルトの名無しさん
09/04/01 07:28:15
[StructLayout(LayoutKind.Sequential, Pack=16)]
struct Test
{
データ
}
586:デフォルトの名無しさん
09/04/01 09:21:18
yield の使い道って何かあるのでしょうか?
なんとなく気になって@ITとか見てみたんですがなんかわかりづらい・・・・
わかりやすい解釈のページとか教えていただけると助かります。
587:デフォルトの名無しさん
09/04/01 09:30:26
列挙処理書くならかなり便利なんだけど。
588:デフォルトの名無しさん
09/04/01 09:36:26
>>587
そのような記述を多く見るのですが・・・orz
いかんせん読解力が無いようで・・
589:デフォルトの名無しさん
09/04/01 09:40:11
>>588
今は大抵 LINQ の標準ライブラリであらかた機能がそろうけども、
特定の条件だけ満たす要素を取り出したり、
特定のプロパティの値を取り出すような関数書いてみ。
それも、いったん new List() するんじゃなくて、遅延評価で。
590:デフォルトの名無しさん
09/04/01 10:00:47
>>588
すべてを終えるには時間のかかる処理をしながら、条件を満たした項目から表示していくプログラムを作れば理解できるよ
記憶領域を使わないですむし、演算の終わった項目から並列処理にかけたりできるしね
591:デフォルトの名無しさん
09/04/01 10:02:48
yieldは別に速くはならないだろ
592:デフォルトの名無しさん
09/04/01 10:06:41
>>589-590
ありがとうございます。
そういう条件でちょっとサンプルでもつくってやってみます。
593:デフォルトの名無しさん
09/04/01 12:20:42
>>586
こんなのはどう?
URLリンク(msdn.microsoft.com)
594:デフォルトの名無しさん
09/04/01 12:45:17
最近更新してないと思ったらやはり板移転検出してた・・・
595:デフォルトの名無しさん
09/04/01 13:12:07
>>593
情報ありがとうございます。
こういう使い方が出来ると言うことなんですね。
確かに >>599が言うように
>特定の条件を満たす要素を・・・
というのはその通りかと
処理がそれを呼び出す側ですっきりしそうです。
使い道が少しですがわかった気がします。
タイミングさえあれば今度どこかで実装してみようと思います。
596:デフォルトの名無しさん
09/04/01 13:26:44
質問ですが、
aspxでファイルにResponse.Redirect(ファイルURL)でダウンロードさせてるんですが、
複数ユーザの同時アクセス数を制限するにはどうしたらいいのですか?
例えば上限を10にしておいて同時アクセス数が11になったらエラーページに飛ばすみたいな。
static Queue _queue = new Queue();
static object _lock = new object();
page_Load()
{
lock(_lock)
{
if(_queue.Count > 10)
Response.Redirect(ErrorPage);
_queue.Enque(new object());
}
try
{
Response.Redirect(DownloadURL);
}
finally
{
lock(_lock)
{
_queue.Deque();
}
}
}
こんなんしか思いつかないんですが・・・
定石みたいなのあるのでしょうか。
597:596
09/04/01 13:32:33
>>596に追加で
ダウンロード時間を30秒と決め付けて
finally句でDeque前に
Thread.Sleep(30 * 1000);
598:596
09/04/01 14:44:42
Sleepじゃ駄目だ〜(T_T)
あと DequeueのlockとEnqueueのlockでデットロック起こしてる〜(T_T)
ってワケで作り直し。
private volatile static Queue _queue = new Queue();
protected void Page_Load(object sender, EventArgs e)
{
if (_queue.Count >= 10)
{
Response.Write("混雑してます 同時アクセス数" + _queue.Count);
Response.End();
}
_queue.Enqueue(new System.Threading.Timer(new TimerCallback(tmr_Tick), null, 10 * 1000, System.Threading.Timeout.Infinite));
try
{
Response.Write("同時アクセス数" + _queue.Count);
Response.End();
}
finally
{
System.Diagnostics.Debug.WriteLine("finally");
}
}
private static void tmr_Tick(object state)
{
_queue.Dequeue();
System.Diagnostics.Debug.WriteLine("Deque Count" + _queue.Count);
}
599:デフォルトの名無しさん
09/04/01 14:50:04
それでできる? 俺なら、外部(データベースとか)に、接続数を保持しとくな。
600:デフォルトの名無しさん
09/04/01 15:21:19
共有リソースへのアクセス数を制限するならセマフォ使えばいいしょ
601:596
09/04/01 17:28:08
>>600 セマフォ使ってみました。
5スレッドまで。1秒待っても駄目だったら混雑中。
private volatile static Semaphore _pool = new Semaphore(0, 5);
static Default() {_pool.Release(5); }
protected void Page_Load(object sender, EventArgs e)
{
if (!_pool.WaitOne(1000))
{
Response.Write("混雑しています。");
Response.End();
}
try
{
Response.Redirect(URL);
}
finally
{
Thread t = new Thread(() => {
Thread.Sleep(10 * 1000);
int cnt = _pool.Release();
System.Diagnostics.Debug.WriteLine("cnt " + cnt);});
t.Start();
System.Diagnostics.Debug.WriteLine("finally");
}
}
}
602:デフォルトの名無しさん
09/04/01 20:35:20
初心者なので、用語の使い方を間違っていたらすみません。
良く経験の長い方のレスなどを見ていると
フレームワークを拡張するというような記述がありますが
具体的にはどのようなことをいうのでしょうか。
フレームワーク内で既に定義されているクラスを
継承して拡張した自分なりのクラスを持っているという理解で正しいでしょうか。
また、拡張したフレームワークを使用してアプリを作った場合
そのアプリは、拡張されていないフレームワーク上ではキチンと動作しないものなのでしょうか。
よろしくお願いします。
603:デフォルトの名無しさん
09/04/01 20:52:15
フレームワークの拡張という言葉はあまり使わない気がする
フレームワークってのは、機能を簡単に使えるようにした壮大なライブラリ(クラス)群で、
料理で言うところの味噌や醤油のような調味料の集まりみたいなもの。
この調味料を継承して拡張して機能を自作で追加すると、
パスタにかけるだけで美味しいパスタができるというトマトソースを作ることができる。
フレームワーク(調味料)さえあれば、トマトソースのできる調味料が揃っているので
作ることはできるけど、レシピは教えてあげないと作れない。
そのレシピはdll(ダイナミックリンクライブラリ)といってレシピの集まり。
これを配布してあげることで、同じフレームワークを持っているPC上であれば、
どれもおいしいトマトソースのパスタを作ることができるという感じ。
604:デフォルトの名無しさん
09/04/01 20:56:44
一般的な意味での「フレームワーク」と、.NET Framework は違う層だから、
そこは気をつけてね。
605:602
09/04/01 21:12:05
言葉から、フレームワークそのものを追加・変更するような想像をしていたんですが
独自に拡張したクラスライブラリを作成するということだったんですね
納得いきました。ありがとうございました。
606:デフォルトの名無しさん
09/04/01 21:55:48
横槍だけど
フレームワークはライブラリより広義の「手法」的な意味だとおもうんだぜ?
機能群はライブラリで,(利用法とか運用法も含めた)方法論的な意味でフレームワークって良く使う
607:デフォルトの名無しさん
09/04/01 22:31:43
>>601
横ですが、Semaphoreはそうやって使うんですね
参考になりました
608:デフォルトの名無しさん
09/04/02 17:10:51
階層が深くて扱いづらいintの変数に別名を付けるにはどうすればいいんですか?
int a = bbbb.ccccc.ddddd;
とすると値のコピーになりますよね
これを参照にしたいんです
609:デフォルトの名無しさん
09/04/02 17:26:33
usingだめ?
610:デフォルトの名無しさん
09/04/02 17:29:35
それクラスの外に書くやつですよね
クラスで管理したいです
611:デフォルトの名無しさん
09/04/02 17:31:13
調べようぜ少しくらい
URLリンク(msdn.microsoft.com)(VS.80).aspx
612:デフォルトの名無しさん
09/04/02 17:33:15
ワラタ
613:デフォルトの名無しさん
09/04/02 17:33:15
そういうものが必要になることじたい何かおかしいのだが、
プロパティにしたらどう?
int A { get { return bbbb.ccccc.ddddd; } set { bbbb.ccccc.ddddd = value; }}
614:デフォルトの名無しさん
09/04/02 17:37:26
unsafeだめ?
615:デフォルトの名無しさん
09/04/02 17:39:03
>>611
そっちか。それだめです期限付きでその中ではコピーされますよね
参照がいいです。
616:デフォルトの名無しさん
09/04/02 17:45:36
・・・・・・(;´∀`)
617:デフォルトの名無しさん
09/04/02 17:47:43
だからunsafeつかって好きにかけや
618:デフォルトの名無しさん
09/04/02 18:55:39
FontDescriptionという構造体を呼び出すときに
fd = new Microsoft.DirectX.Direct3D.FontDescription();
としているんですが
次のエラーが出てしまいます
次のメソッドまたはプロパティ間で呼び出しが不適切です:
'Microsoft.DirectX.Direct3D.FontDescription.FontDescription()' と
'Microsoft.DirectX.Direct3D.FontDescription.FontDescription()'
ビルドしてみるとエラーがあるにもかかわらず問題なく動いているようです
これはどうすればいいんでしょうか
619:デフォルトの名無しさん
09/04/02 19:04:06
質問です。
class HogeCollection : IEnumerable<Hoge>
のように、IEnumerable<T>を実装したコレクションのインスタンスがあるのですが、
そこから動的にHogeの型を取得するにはどうすればよいのでしょう?
620:デフォルトの名無しさん
09/04/02 19:08:24
リフレクション
621:デフォルトの名無しさん
09/04/02 19:12:26
GetType().GetInterfaces().First(i => i.Name == "IEnumerable`1").GetGenericArguments()[0]
かな
もっといい方法もありそうだけど
622:デフォルトの名無しさん
09/04/02 19:17:47
>>613
それも値がコピーされて格納されるじゃん
一瞬でも複製を作りたくないんだけど
ほんとに引数にref指定してその中だけで使えるように渡すしか値型を参照で保持する方法はないの?
623:デフォルトの名無しさん
09/04/02 19:20:37
>>621
Nameを使うと誤判定の可能性があるので、
オープンジェネリック型を使った方がいいな
GetType()
.GetInterfaces()
.First(i => i.GetGenericTypeDefinition() == typeof(IEnumerable<>))
.GetGenericArguments()[0]
624:デフォルトの名無しさん
09/04/02 19:24:10
structのこといってんの?
一瞬でもコピーされるのの何が問題なのかわからんから答えようがないよな
625:デフォルトの名無しさん
09/04/02 19:24:38
>>620-621,623
なるほど!ありがとうございました。
626:デフォルトの名無しさん
09/04/02 19:26:40
unsafeでポインタでFA
627:デフォルトの名無しさん
09/04/02 19:27:44
unsafe対応してないの!
628:デフォルトの名無しさん
09/04/02 19:28:37
すまんunsafeしかないってことか
構造を変えるわ、あきらめたthx
629:デフォルトの名無しさん
09/04/02 19:31:21
>>622
初心者スレに行って質問の仕方から勉強しなおしだな
630:デフォルトの名無しさん
09/04/02 19:40:56
>>622
それくらいの余計なコピーの作成くらい、実行時には最適化で消えると思うよ。
631:デフォルトの名無しさん
09/04/02 19:43:19
もしかして、複数スレッドから読み書きされるからコピーされると困る って話なのか?
632:デフォルトの名無しさん
09/04/02 19:51:16
たぶん異なるスレッドから見てるんでしょ
関係ないけど
参照でコピーしても、そのポインタを保持してるんだからメモリの節約にはならないんだっけ?
633:デフォルトの名無しさん
09/04/02 19:53:22
ただ呼び出しがめんどいってだけじゃね?最初の質問からすると。
最後にまた代入すりゃいいじゃんって思うけどねw
んで質問ですけど、unsafe使って問題になることって何ですか?
unsafe内のコードに問題が無いという前提で。
634:デフォルトの名無しさん
09/04/02 19:56:39
関数の引数でref使う方法もなくはないけど、
aliasをサポートする別の言語を使うしかないな。C++/CLIで何とかならなかったっけ?
C#でもこういう裏技はあるけど正直おすすめしない。
int hoge = 0;
TypedReference tref = __makeref(hoge);
__refvalue(tref, int) = 5;
Console.WriteLine(hoge);
635:デフォルトの名無しさん
09/04/02 19:57:31
>>633
>unsafe内のコードに問題が無いという前提で。
その前提が"成り立つ事を保障できない"事こそが最大の問題だと思うのだけど
636:デフォルトの名無しさん
09/04/02 20:01:34
インテリセンスではエラー波線でないんですが、
オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーが出るのですが、なんでですか?
637:デフォルトの名無しさん
09/04/02 20:02:41
オブジェクトがnullなのにメソッドを呼び出したかなんかしたんだよ
638:デフォルトの名無しさん
09/04/02 20:04:35
宣言時に値は入れてるんですが、起動時の順番が問題で宣言がまだ見つからないってことですか?
639:デフォルトの名無しさん
09/04/02 20:06:40
入れてると思ってるだけで入ってないんだよ
ぬるぽってやつだよ
640:デフォルトの名無しさん
09/04/02 20:07:40
∧_∧
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__∧∩
_/し' //. V`Д´)/
(_フ彡 / ←>>639
641:デフォルトの名無しさん
09/04/02 20:09:10
pub class a
pub int data = 500;
pub class b
pub int data;
pub b(a aa)
{
data = aa.data;
}
でdata = aa.data;でエラーでるんです
642:デフォルトの名無しさん
09/04/02 20:10:40
aaがnullなんだよ
643:デフォルトの名無しさん
09/04/02 20:11:31
>>635
そりゃそうなんだけど、それ以外にもなんかあるのかなーと思ったけど
それ以外ないわな。unsafeは使用禁止とか普通にあるだろし
今回の参照の件とかはそれほど問題にする意味もないのかなと考えてたけど
まぁunsafeなんだし、使わなけりゃ一番問題ないな
644:デフォルトの名無しさん
09/04/02 20:14:19
>>642
ありえないです。class bをaaを渡してnewした時初めてthis.dataに入れようとしますよね
ここでエラーになるってことはaaは入ってるんです
645:デフォルトの名無しさん
09/04/02 20:17:31
ブレークポイント設定してaa.data;のところにカーソルあててみなよ
aaがnullになってるから
646:デフォルトの名無しさん
09/04/02 20:20:49
nullになってました
自信あったのにショックです
ありがとうです
647:デフォルトの名無しさん
09/04/02 20:28:51
エラーが出てるけど、自信があるのでデバッグしません!
648:デフォルトの名無しさん
09/04/02 20:29:49
>>634
ref 使う方法。変態のきわみだ。
delegate void Alias(ref int i);
static void Main() {
int bbbb_ccccc_ddddd = 0;
((Alias) delegate(ref int i) {
i = 98765;
})(ref bbbb_ccccc_ddddd);
Console.WriteLine(bbbb_ccccc_ddddd);
}
649:デフォルトの名無しさん
09/04/02 20:30:21
事前にエラーがわかる静的言語は便利なことがよくわかるよな
特に初心者の人にとっては
650:デフォルトの名無しさん
09/04/02 21:09:57
構造体の初期化はどうかけばいいのでしょうか
Vector3 a = {0.0f, 0.0f, 0.0f};
651:デフォルトの名無しさん
09/04/02 21:12:41
コンストラクタが使えるだろ
652:デフォルトの名無しさん
09/04/02 21:12:52
Vector3 a = new Vector3(0.0f, 0.0f, 0.0f);
653:デフォルトの名無しさん
09/04/02 21:13:05
構造体内にコンストラクタを書いてそこで初期化
654:デフォルトの名無しさん
09/04/02 21:18:52
thx!
655:デフォルトの名無しさん
09/04/02 21:20:18
>>633
部分信頼とかセキュリティ上の理由でunsafeコードを実行させてくれない仕組みに引っ掛かるとか。
656:デフォルトの名無しさん
09/04/02 21:24:22
struct Data {
int a, b, c, d, e......;
}
class Cupsel {
Data data;
}
657:デフォルトの名無しさん
09/04/02 21:49:48
>>655
はーなるほど。そういう仕組みがあったのねぇ
セキュリティポリシーによるようだね。通常はローカルだと問題ないのかな
今までなんも考えなかったわ。ありがとう
658:デフォルトの名無しさん
09/04/02 23:01:07
System.Drawing.Graphics g = Graphics.FromImage(backBuffer);
g.Clear(Color.Black);
g.DrawImage((Image)image, new Point());
Graphics.FromHwnd(panel1.Handle).DrawImage((Image)backBuffer, new Point());
WinFormsで、高速に、ちらつかせずに画像表示をさせたいんですが
どうやるのがいいんでしょうか?
描画するまで画面を更新されないようにするやり方がわかりません・・
それと、加算合成とかをするにはDrawImageでは無理そうですがどうすれば。
659:デフォルトの名無しさん
09/04/03 00:02:18
ちらつき防止はコントロールのDoubleBufferedでいけるんじゃないの?
あと、Graphics.FromHwnd(panel1.Handle)よりもpanel1.CreateGraphics()のほうが普通だと思う。
660:デフォルトの名無しさん
09/04/03 00:02:33
>>634
話は戻るが、そこでusingだ。
661:デフォルトの名無しさん
09/04/03 00:05:46
>>618分かる人いませんか?
662:デフォルトの名無しさん
09/04/03 00:26:07
何だろう。よく分からんけど、バージョン違いのアセンブリを参照してるとか?
参照設定はどうなってる?
663:デフォルトの名無しさん
09/04/03 01:02:12
>>660
usingディレクティブの別名は名前空間と型名だけだったと思うが、
質問者は変数の別名が欲しいといってるんじゃないのかな?
664:デフォルトの名無しさん
09/04/03 01:23:36
>>662
DirectX関係で参照してるのは
DirectX
Direct3D
Direct3DX
DirectInput
DirectSound
です
Direct3DXのバージョンは1.0.2911.0で他のものより新しいのを使ってたんですけど
バージョンをそろえてみても同じエラーが出ます
665:デフォルトの名無しさん
09/04/03 02:44:15
>>664
CS0121?
URLリンク(msdn.microsoft.com)
どうやらオーバーロードなどをしていて,複数の選択肢が暗黙的な型変換で,動作が決定不能になる時に発せられるらしい.
状況によって変わってくるから,他の部分で名前と名前,型と型がバッティングしていないか確かめてみたら?
あと,なんだか Microsoft.DirectX.Direct3D.FontDescription で検索すると,成功している人が少ない雰囲気.
666:デフォルトの名無しさん
09/04/03 07:06:03
アクセス制限機能つきのアプリを作りたいです。
ユーザ権限やパスワード管理機能つけたいんだけど、
一から作るしかないですか?
.NET Framework 2.0 ならいいライブラリがありそうだけど見つけきれません。。。
667:デフォルトの名無しさん
09/04/03 07:51:41
使ったことないけど、System.Security名前空間から適切な制限を見つけてDemaidメソッド呼び出せばいいんじゃね?
668:デフォルトの名無しさん
09/04/03 10:34:17
System.Windows.Form.WebBrowserをIE8に変更できませんか?
OSのIEは8に更新しました
Vista + VS2008 です
669:デフォルトの名無しさん
09/04/03 10:41:42
>>668
更新した時点でもうなっとるがな。
670:デフォルトの名無しさん
09/04/03 15:13:53
windowsアプリで自動アップデート機能をつけようと思うのですが
Program Files以下のファイルを更新するときは
管理者権限が必要ですよね。
Vistaの場合管理者でログインしても
普通にアプリを実行するとWindowsPrincipalはUserになっちゃいますよね。
右クリックで管理者として実行を行わないと
管理者権限で実行されませんよね。
そのため自動アップデートによるアップデートができないと思うのですが、
世に出回っているVista対応アプリはどうやって対処しているのでしょうか?
671:デフォルトの名無しさん
09/04/03 15:18:24
>>670
UAC の昇格をしてるでしょ。
672:668
09/04/03 15:21:40
>>669さん
確認くんで調べたらIE7のままなんです
673:デフォルトの名無しさん
09/04/03 15:25:11
>>672
その結果を貼り付けてみ。互換モードになってるとかの落ちじゃないよね?
674:デフォルトの名無しさん
09/04/03 15:41:32
IE8 WebBrowser Control で検索したらすぐに答えが出てきたぞ
URLリンク(blogs.msdn.com)
675:670
09/04/03 16:08:08
>>671
ユーザが意図的に管理者として実行をして、
昇格をしてもらわないとアップデートできないので、
世に出回ってるアプリはどう対応してるのかということを質問しています。
普通に実行したときはバージョンアップの通知だけで、
通知があったら「管理者として実行」してもらうと言うことになるんでしょうか。
でもそれだとUACを知らない、年配などのライト層は
ずっとバージョンアップできないってことになりますよね。
しかもそれって、自動アップデートではないですよね。
676:デフォルトの名無しさん
09/04/03 16:11:59
>>675
よくわからんけど、セキュリティソフトなんかは予めUAC昇格させる設定を
ユーザーにさせてるんでないの?
都度か一括かの違いで
677:デフォルトの名無しさん
09/04/03 16:17:35
>>675
つか、何言ってんの?
「管理者として実行」しなくても、UAC の昇格を行うことはできるよ。
一般的な方法としては、マニフェストを書いておいて、そのアプリを呼び出す。
新しいバージョンがあるかを確認するアプリと、実際に更新をするアプリに分ける、
って感じだね。
Firefox も、ATOK も HP のプリンタドライバも、そんな感じでやってると
思うけど・・・。
678:デフォルトの名無しさん
09/04/03 16:24:46
Google ChromeがAppData内にインストールされるのは
UACの昇格なしでアップデート可能にする為だって話を聞いたことがある
679:デフォルトの名無しさん
09/04/03 16:25:02
>>677
何言ってんのか分からないのに答えられるってすごいなぁ。
しかも最後、自信なさげなところがなんとも。
680:デフォルトの名無しさん
09/04/03 16:25:20
>>678
そもそも ClickOnce だし。
681:デフォルトの名無しさん
09/04/03 16:27:37
XPユーザーとしてはUACの昇格とかわけわかんないし怖いよ
今はそんなのも気にしなきゃならんのか
682:デフォルトの名無しさん
09/04/03 16:29:51
VistaユーザーだってUACなんか訳わからんよw
Linuxみたいにアクセス権限だけでいいだろって突っ込まれまくりだろ
683:デフォルトの名無しさん
09/04/03 16:32:42
>>679
「UAC 昇格起動」と「修辞的疑問文」でくぐってからまた来てね。
684:デフォルトの名無しさん
09/04/03 16:33:35
全世界の奴がMSに文句つけまくっていじめまくった結果がこれだよ
そして無意味なセキュリティをつけたらフルボッコだよ
685:デフォルトの名無しさん
09/04/03 16:34:51
>>684
× 全世界の奴
○ 狂ったLinuxユーザー
686:デフォルトの名無しさん
09/04/03 16:35:58
なんでLinuxユーザーが文句つけるんだ
687:デフォルトの名無しさん
09/04/03 16:38:37
>>680
ClickOnceって.NETアプリ以外でも使えたのか
ClickOnceと同じ場所を使ってるだけかと思ってたよ
688:デフォルトの名無しさん
09/04/03 16:40:53
>>687
正確には、インストーラとして使ってる、ってとこかと。
そのおかげで、統合認証以外のプロクシを使ってると、インストールすらできないw
689:デフォルトの名無しさん
09/04/03 23:29:47
>>675
Verb を runas にしたら昇格するよ。
アップデータの PE わけて起動させたほうがいいかもしれないけど。
なんとなーく勘違いしてそうなので UAC についてプログラマの視点から
指摘しとくと、昇格ダイアログ出すまではプログラムで可能。
OK ボタン押したら昇格ダイアログ→OK → アップデートってやるんだよ。
あとアップデートに関して言えば、パッチパッケージにすれば明示的な
昇格はいらない(ポリシーにより不可になるし署名が要るけど)。
Program Files 以下でも。実は古くからある機能だが。
実際には、パッチは管理や検証がめんどくさくなるのであまり使われな
いけどな。
>>681
Vista ユーザーからしたら XP の何もなく管理者で動くの不安になる正直
かといって Users で使おうとしたら不便極まりないし。両立できてかなり
いい機能だと思うがなぁ >UAC。リダイレクトとかの機能含めてな。
690:デフォルトの名無しさん
09/04/04 00:26:26
>>665
はい、CS0121です
引数なしのコンストラクタを呼び出しているのに
二つ選択肢があるっていうのがちょっと理解できません・・・
ヘルプのコンパイラ エラー CS0121の使用例は理解できるんですが・・・
エラーは吐いているんですがビルドできるし正常に動作しています
それも理解できないし気持ち悪いです
691:デフォルトの名無しさん
09/04/04 02:14:56
int a=0,b=0,c=0;
int line_count = arrText.Count;
ar_OKPOS = new List<int[]>[line_count];
for (int i = 0; i < ar_OKPOS.Length; i++){
ar_OKPOS[i] = new List<int[]>(new int[][] { new int[2] });
}
foreach (string sOutput in arrText)
{
// 一行ずつ読み込んで,各行をsplitメソッドで分ける
string temp = (string)arrText[a]; // string型にキャスト
string[] temp2 = temp.Split(',');// splitメソッドで文字列アレイにして数える
int col_count = temp2.Length; // 列数を数えているだけ
string[] temp_line = sOutput.Split(',');
for(int i=0;i<temp_line.Length;i++)
{
for(int k=0;k<2;k++){
i = i + k;
ar_OKPOS[a][b][c]=Convert.ToInt32(temp_line[i]);
c++;
}
c = 0;
b++;
}
b = 0;
a++;
}
692:デフォルトの名無しさん
09/04/04 02:24:35
すいません 誤爆してしました
693:デフォルトの名無しさん
09/04/04 08:52:22
デザインパターンとか全然勉強せずにプログラマやってるけど、勉強したほうがいいのかな?
694:デフォルトの名無しさん
09/04/04 08:54:14
デザインパターンはなんかJava臭いよな
C#はオブジェクト指向至上主義じゃないから合わないんじゃない
695:デフォルトの名無しさん
09/04/04 09:52:38
標準のクラスライブラリでも結構それっぽいのはよくでてくるよ
ただjavaと違って、MSはほとんどデザインパターン用語を使わない
696:デフォルトの名無しさん
09/04/04 13:38:17
privateなメンバ変数もprivateなプロパティとして表示させたほうがいいですか?
またメソッドでメンバ変数を利用するときなるべく引数として渡した方がいいですか?
それともメソッド内でいきなり使用しても問題無いですか?
たとえばクラスに以下のようなメソッド等があったとして
private int _num;
public void Method()
int num = CalcMethod(2);
private int CalcMethod(int num1)
return num1+_num:
こういう書き方が良いのか
private int _num:
public void Method()
int num = CalcMethod(2, _num);
private int CalcMethod(int num1. int num2)
return num1+num2;
こんな書き方のほうがいいのか知りたいです。
例では単なる足し算ですが、複雑な計算をしているという仮定です。
697:デフォルトの名無しさん
09/04/04 13:41:03
演算要素を全て引数で取らせるならstaticにする
698:デフォルトの名無しさん
09/04/04 14:20:05
メソッドを呼び出す側からすれば,メソッド呼び出しはオブジェクトを操作することなので
内部状態を存分に使ってもらって構わない気がする.
699:デフォルトの名無しさん
09/04/04 15:33:03
ありがとう
なるべく引数で渡したほうが、その中で完結するのでわかりやすい気がして
じゃあ、あんまり気にしなくていいってことかな?
700:デフォルトの名無しさん
09/04/04 15:58:22
計算処理のように内部状態に関係なしに定義できるものは、
内部状態非依存(static)の方が単体テストしやすい
まあ、その例くらいの規模なら大して変わらないんだが
701:デフォルトの名無しさん
09/04/04 16:06:09
>>696
むしろそのメソッドを定義したクラスはどんな責任と制約をもってんのよ?
メソッド単体じゃあなんともいえない
>699
時と場合による
プログラミングしやすい分かりやすさもあれば、
利用しやすいわかりやすさもある
702:デフォルトの名無しさん
09/04/04 17:48:14
VC#単体(他から持ってきたライブラリを使わず)で開発したソフトやゲームを
販売する場合、ライセンス等の問題ってありますか?
703:デフォルトの名無しさん
09/04/04 17:59:31
場合による。
704:デフォルトの名無しさん
09/04/04 21:17:48
ミサイル防衛システム作りたいんですがヒントだけでもください
705:デフォルトの名無しさん
09/04/04 21:25:07
MDIで作成した子フォームに含まれるコントロールを取得後、アクセスしたいんですが
foreachでいちいちループ回さないといけない・・・
なんか他にいい方法ないでしょうか?
子フォームはアクティブな状態のものです
if (!(this.ActiveMdiChild as Form == null))
{
foreach (Control Ctrl in (this.ActiveMdiChild as Form).Controls)
{
if (Ctrl is TextBox /*例としてテキストボックス*/ )
{
//処理
}
}
}
706:デフォルトの名無しさん
09/04/04 21:41:58
全コントロールを対象に処理が必要なら foreach で回さざるを得ないだろ。
特定のコントロールのみを対象にするなら Panel か UserControl に貼り付けて
必要なコントロールへのアクセスを容易にすればいいよ。
707:705
09/04/04 21:54:17
ん〜じゃあ無理か
Panelのリストを管理するとまた手間がかかりますしねえ・・・
どうもありがとうございました
708:デフォルトの名無しさん
09/04/04 22:05:22
動的に作成する場合でもIList<>に入れればいいし、
あらかじめポトペタならコントロールが限られてるから
どちらにしても最低限のループでいけるんじゃないの?
709:デフォルトの名無しさん
09/04/04 22:16:50
Linqでコントロールの種類ごとに連想配列に分配するクエリを作れば?
710:デフォルトの名無しさん
09/04/04 22:29:30
>>702
ないよ
711:デフォルトの名無しさん
09/04/05 00:12:49
Form activeChild = this.ActiveMdiChild as Form;
if (activeChild != null)
{
activeChild.Controls.Where(c => c is TextBox).ToList<TextBox>().ForEach(t =>
{
// 処理
});
}
かえって煩わしいな。
712:デフォルトの名無しさん
09/04/05 00:29:55
>>711
ん?
実験してみようとしたのだが、インテリセンスにWhere()が表示されないのだがなんでだ?
713:デフォルトの名無しさん
09/04/05 00:42:19
ControlCollectionがIEnumerable<Control>を実装してないからか?
714:デフォルトの名無しさん
09/04/05 00:43:46
だな
気がつかなかった!すげー便利じゃん!と思ったのにorz
715:n
09/04/05 00:52:48
今までたくさんのサイトから通報者つのりあと少し
です
こいつは違反出品で昨日二度削除されました
URLリンク(auok.auone.jp)
空き巣に入られた?以上では‥
薔薇チョコ洋子さんは靴の転売や上履き二回削除されてるのに
今回は長期使用の文を消して書いてます
悪質なので評価欄の誹謗中傷の理由で通報お願いします
URLリンク(auok.auone.jp)
わいせつ物
URLリンク(auok.auone.jp)
わいせつ物
三箇所違反ですのでよろしくお願いします
716:デフォルトの名無しさん
09/04/05 02:53:12
this.ActiveMdiChild.Controls.Cast<Control>().Where()とか?
717:デフォルトの名無しさん
09/04/05 03:03:10
クラス内の自動プロパティを初期化したいのですがコンストラクタ内でするしかないのでしょうか?
例えば
public string Name{get;set;}
というものがあって、Nameは始めはnullですが、""に初期化しておきたいのです。
フィールドでしたら
private string Name = "";
と出来ます。
プロパティの量だけコンストラクタにも初期化する量が増えてしまうのでフィールドのように出来れば一度に初期化したいのですが方法はあるのでしょうか?
718:デフォルトの名無しさん
09/04/05 03:03:27
>708 がベストだろ
719:デフォルトの名無しさん
09/04/05 03:10:31
クラスを継承したときに基本クラスのメソッドにコードを追加するように書くにはわかりました。
720:デフォルトの名無しさん
09/04/05 09:26:10
>>717
ありません
自動プロパティの使用をやめるか普通にコンストラクタで初期化してください
721:デフォルトの名無しさん
09/04/05 09:52:29
>>717
リフレクションでstring型のプロパティを一括初期化できなくもないがバグの元だな
722:デフォルトの名無しさん
09/04/05 09:58:22
そのためのオブジェクト初期化子なんだろうか
723:デフォルトの名無しさん
09/04/05 09:59:50
ヘジさんが自動プロパティに必死で抵抗してたのは直接初期化できないからなのかな
724:デフォルトの名無しさん
09/04/05 10:12:36
自動プロパティって、文法的にインターフェースでの宣言と一緒なのがちょっと気になるっちゃ気になる。
int Method();
とだけ書いたらメソッドの中身ができちゃうようなもんだからなぁ。
パッと見同じだけど全然意味の違うものってのは、
ミスの原因だし、読むときの混乱招くから。
725:デフォルトの名無しさん
09/04/05 10:12:47
コンストラクタで初期化するくらいなら、
タイピング量的に自動プロパティである必要がぜんぜんないな
726:デフォルトの名無しさん
09/04/05 10:14:42
もう、自動プロパティを自動で普通のプロパティに展開するユーティリティを使えばいいよ
727:デフォルトの名無しさん
09/04/05 10:22:42
private string _test;
public string Test { get _test; set _test; }
こういう糖衣構文を可能にするだけでよかったんだよ
728:デフォルトの名無しさん
09/04/05 10:26:55
糖衣構文といいたいだけのやつ増えすぎ
729:デフォルトの名無しさん
09/04/05 10:29:42
構文糖を可能にするだけでよかったんだよ
730:デフォルトの名無しさん
09/04/05 10:30:46
public property string Test = "";
でいいんじゃないの
public readonly property string Test = "";
とか
731:デフォルトの名無しさん
09/04/05 10:36:05
public string Test { get GetTest(); set SetTest(value); }
も可能そうだな
732:デフォルトの名無しさん
09/04/05 10:41:00
>>731
それは意味がわからない。普通にかけばいいだろ
public string Test { get { return GetTest(); } set { SetTest(value); } }
733:デフォルトの名無しさん
09/04/05 10:41:50
インターフェイスにプロパティを宣言するときの書き方と合わせたかったんだろ
美学ってやつなんだろう
734:デフォルトの名無しさん
09/04/05 10:48:09
たとえ美学でも、読み取り専用にするprivate set;はせっかくの省力構文を台無しにしているな
public string Test { get; }
これで何がまずいのだろう
735:デフォルトの名無しさん
09/04/05 10:48:47
event の構文が
event DelegateType Variable;
event DelegateType Variable { add { ...] remove { ...} }
なのを考えると、
property VarType Variable;
property VarType Variable { set { ... } get { ...} }
がよかった気もするなぁ。
736:デフォルトの名無しさん
09/04/05 10:50:10
>>732
楽になるじゃん
それに変数とメソッドを同時に書くこともある
public string Test { get GetTest(); set _test; }
737:デフォルトの名無しさん
09/04/05 10:52:33
property Name: string read FName write FName;
もうこれでいいよ
738:デフォルトの名無しさん
09/04/05 10:54:11
>>735
それいいよね
読み取り専用プロパティは
readonly property VarType Variable;
にすればいいし
739:デフォルトの名無しさん
09/04/05 11:03:07
>>734
初期化も何もできないじゃん
740:デフォルトの名無しさん
09/04/05 11:26:12
>>739
private set;と書いたことにする
741:デフォルトの名無しさん
09/04/05 11:44:34
それなら>>735スタイルにしてgetも書かないようにしないとおかしい
アクセサを宣言する意味でgetやsetを書いてるのに
742:デフォルトの名無しさん
09/04/05 13:04:59
>>740
( ゚д゚ )
743:デフォルトの名無しさん
09/04/05 15:08:15
アクセス修飾子をpublicとprivateだけと思ってる奴が多いようだな
744:デフォルトの名無しさん
09/04/05 16:25:18
そんな奴いないだろw
もともとはプロパティのアクセサにアクセスレベルは指定できなかったんだよ
public get; protected set;みたいなのはそもそも想定されてなかった
だから別に>>735の形になっててもおかしくはない
745:デフォルトの名無しさん
09/04/05 18:13:05
addとremoveが必須なeventとgetとsetは片方あればいいプロパティじゃ初めから条件が違うな
746:デフォルトの名無しさん
09/04/05 18:55:27
話の流れを全部理解しているわけじゃないが、
そういうシンメトリックかどうかって話じゃないだろうw
素直に(VB方式ともいう)propertyってキーワードを導入しておいた方が
可読性の観点からは好ましかったんじゃないかって話なんじゃないの?
747:デフォルトの名無しさん
09/04/05 22:23:51
でもevent 型 名前;と型 名前 { get; set; }じゃ差がありすぎるからなあ
イベントを理解する上でプロパティとの類似性はかなり重要なのに
構文上全然違う種類のものになっちゃってるのはさすがに
748:デフォルトの名無しさん
09/04/05 22:43:42
そういや、結構いろんな言語に精通してる同僚が最近 C# 触り始めたんだけど、
event 知らずに普通にデリゲート型のプロパティ使ってたなぁ。
749:デフォルトの名無しさん
09/04/05 22:51:16
イベントって機能がデリゲートで実現されていることを知らずにイベントを
使ってるって話ならありそうだが、デリゲート押さえてるのにイベント知らない、
なんてこと普通はありえん気がするけどね。
750:デフォルトの名無しさん
09/04/05 22:55:20
eventって別に必要ない機能だろ
751:デフォルトの名無しさん
09/04/05 22:58:49
javaなんかでよく出てくるgetHoge, setHogeパターンを言語に組み込んだのがプロパティ
同様にaddHogeListener, removeHogeListenerパターンを言語に組み込んだのがイベント
752:デフォルトの名無しさん
09/04/05 23:29:37
言語に組み込む組み込まないの話ではないだろ
753:デフォルトの名無しさん
09/04/05 23:49:33
>>749
「デリゲートはイベント処理用のもの」って認識だとそうなんだけど、
「関数ポインタの便利版」って認識だと、
関数ポインタのプロパティでイベントハンドラ取ればいいやってなってもおかしくないかと。
754:デフォルトの名無しさん
09/04/05 23:56:59
もしプロパティを使うならデリゲートのコレクションを返すべきだろ
button.ClickEventHandlers.Add(new EventHandler(button_Click));
これなら意味的には同じ
755:754
09/04/05 23:59:32
外からの要素へのアクセスはできないようにしないといけないよもちろん
マルチキャストでいいだろと突っ込まれそうだから一応
756:デフォルトの名無しさん
09/04/06 00:00:30
Formsのコントロールの初期化をデザイナーで作っているところなんだが、
ツールバーのボタンが横に並んだ1つづりのPNGファイルを
ImageListを使って切り出して使おうとしているのだがうまくいかない。
System.Windows.Forms.ImageList il = new System.Windows.Forms.ImageList();
il.TransparentColor = System.Drawing.Color.Transparent;
il.ImageSize = new System.Drawing.Size(24, 24);
il.Images.AddStrip(Resources.tool);
こんな風に書いてデザイナーに読ませると、AddStrip()が認識できずに落ちてしまうようだ。
仕方がないのでpartialされたForm本体側で追加で初期化してるんだが、当然ながらデザイナーではプレビューできない。
画像の切り出し、切り出したチップをそれぞれのコントロールで使用したいんだがどうしたらいいだろうか。
757:デフォルトの名無しさん
09/04/06 00:10:38
>>748
eventをつけた場合とつけない場合は何が違うのですか?
public event EventHandler Unko;
public EventHandler Unko
758:デフォルトの名無しさん
09/04/06 00:13:42
>>757
ググれかす
見た目としては、eventだと外から行える操作がデリゲートの追加と削除だけになる。
759:デフォルトの名無しさん
09/04/06 00:17:51
>>757
Unkoの硬さが違ってくる
760:デフォルトの名無しさん
09/04/06 00:23:11
>>758-759
ありがとう。
何となく分かったよ
Unkoの硬さが+=と-=だけになるってことですね
761:デフォルトの名無しさん
09/04/06 00:28:52
>>756
デザイナで設定するのは無理なんじゃないの
とりあえずImageListプロパティだけ設定して,Tagプロパティにインデックスを入れといて
後でコードから舐めてImageIndexプロパティに設定し直すとか
762:デフォルトの名無しさん
09/04/06 01:04:40
>>761
ありがとう。「無理」という返事を聞いてある意味安心した。
どうせデザイナーで作る部分はある程度静的な割付になるので、わざわざTagに入れてループをまわさなくても、
ImageList.Images プロパティをControl.Image に直接代入していくだけで十分だね。
763:デフォルトの名無しさん
09/04/06 01:22:48
>>762
ImageList継承して"ImageStrip"のようなプロパティを追加するとか、
あるいは最初から目的のイメージを持たせちゃうとかすれば出来る気もする。
っていうか、なんでわざわざそんなC#向きでない作り方をするんだろう。
なんでも道具にあった作り方ってあると思うんだけど。
764:デフォルトの名無しさん
09/04/06 01:24:20
あーImageListってシールされてるのか。。
765:デフォルトの名無しさん
09/04/06 01:59:32
String型がシールされてる上にIStringのようなインターフェイスもないってどういうこと?
String型に限らずやたらシールされると拡張できなくて異常に不便
766:デフォルトの名無しさん
09/04/06 02:02:16
C#の入門誌のオススメ教えて
767:デフォルトの名無しさん
09/04/06 02:04:16
C#に入門書は必要ない
ぐぐれば腐るほどでてくるからな・・・
強いて言えば逆引き系のものがいいよ
768:デフォルトの名無しさん
09/04/06 02:04:39
継承は最低の方法だってみんな分かって来てるじゃない
それはともかくStringはIEnumerable<char>として扱うと便利だよ
769:デフォルトの名無しさん
09/04/06 03:31:43
>>763
コントロールで使う画像の処理をImageListに任せるのは、
Win32SDK時代から続く古式ゆかしいお作法なんだ。
770:デフォルトの名無しさん
09/04/06 08:32:28
> それはともかくStringはIEnumerable<char>として扱うと便利だよ
これは気づかなかった。ありがとう
771:デフォルトの名無しさん
09/04/06 09:03:50
デザイナーいるとかうらやましいなおい・・・・
772:デフォルトの名無しさん
09/04/06 09:26:25
>>765
恥ずかしいレスだなおいw
773:デフォルトの名無しさん
09/04/06 09:31:03
>>771
それはボケなのか……?
774:デフォルトの名無しさん
09/04/06 10:42:32
Stringがsealedなのはimmutableにするため
変更できない方が扱いやすいから
775:デフォルトの名無しさん
09/04/06 17:54:34
扱いやすいっていうか、継承を禁止しないとイミュータブルであることを保証できない。
776:デフォルトの名無しさん
09/04/06 18:04:25
なんとなくだが、>>774は
"stringはimmutableであった方が扱いやすい"
と言いたかったのではないかと思う。
777:デフォルトの名無しさん
09/04/06 21:19:49
>>766
洋書なら色々あるけど、邦訳版が出てないのが多い・・・。
778:デフォルトの名無しさん
09/04/07 02:18:55
C#って検索数がいまいちなんだよね。
なんで?
779:デフォルトの名無しさん
09/04/07 02:34:22
>>778
記号とか入いってるとかは検索エンジン的にマイナスな気がする。
あと、なんだかんだいって後発だしね。
それと、一般名詞そのまま使ってるrubyとかと比べりゃそりゃ少なくなる。
780:デフォルトの名無しさん
09/04/07 03:42:38
思いつくままに検索してみた。言うほど少なくは無いようだが
php の検索結果 約 9,700,000,000 件
javascript の検索結果 約 680,000,000 件
vb の検索結果 約 657,000,000 件
java の検索結果 約 377,000,000 件
scheme の検索結果 約 107,000,000 件
ruby の検索結果 約 102,000,000 件
c++ の検索結果 約 101,000,000 件
perl の検索結果 約 88,000,000 件
c# の検索結果 約 63,900,000 件
python の検索結果 約 62,300,000 件
delphi の検索結果 約 49,500,000 件
lisp の検索結果 約 8,290,000 件
fortran の検索結果 約 7,720,000 件
cobol の検索結果 約 6,530,000 件
c++/cli の検索結果 約 4,680,000 件
781:デフォルトの名無しさん
09/04/07 03:54:22
>>780
ごめんそれ違う。
漏れが言ったのは、グーグルトレンドの方。
782:デフォルトの名無しさん
09/04/07 04:47:38
>>780
発想は面白いよ発想は
783:sage
09/04/07 13:13:32
vb.net の private shared は C# でいうとなんですか?
private partial ? private protected?
784:デフォルトの名無しさん
09/04/07 13:17:51
private static
785:デフォルトの名無しさん
09/04/07 13:19:16
thx!
786:デフォルトの名無しさん
09/04/07 14:11:03
VB.netの存在意義がわからない
初心者向けならジェネリックやLinqの拡張をすべきではないと思うんだが・・・
787:デフォルトの名無しさん
09/04/07 14:12:59
VB.NETはVBプログラマ用の隔離病棟もしくはオブジェクト指向リハビリ施設
788:デフォルトの名無しさん
09/04/07 14:13:04
>>786
それは、貴方の考えた存在意義と違うってだけでしょう。
789:デフォルトの名無しさん
09/04/07 18:15:55
C#>VBってのはC#でオブジェクト指向を勉強した奴がやけに言いたがるようだけど
他から見たらチェイサーとクレスタ
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5258日前に更新/200 KB
担当:undef