[プログラム板] C#, C ..
[2ch|▼Menu]
466:デフォルトの名無しさん
08/07/29 17:07:15
>>465
x==y/x<y/otherwise
でいいだろ。

467:デフォルトの名無しさん
08/07/29 17:07:53
ふらっとだな。
if (x > y) return 1; とか思いつかない?

468:oth
08/07/29 17:27:22
otherWiseがコンパイル通りません

469:デフォルトの名無しさん
08/07/29 17:31:43
>>466
すいませんが、まるでその式の意味が理解できないんですが
どのように理解したら良いんですか?

>>467
int にキャストしないで
if (ret >0)
 return 1;
のようなものは考えていたけれど、もっとスマートな処理が
あるんじゃないかと思って聞いてみたのです
Comparerの戻り値の正数ってのは、0か負の数じゃなきゃ
なんでもいいんですかね?差の値を入れなくても

470:デフォルトの名無しさん
08/07/29 17:36:39
MSDNの解説ぐらい読めよ……

471:デフォルトの名無しさん
08/07/29 17:38:01
ふらっと池よクズ

472:デフォルトの名無しさん
08/07/29 17:39:50
>>469
スマートと行数が少ないは違うだろ。

比較関数で差を返すのは大昔からよく見るコードだが、
通常、整数型は正負で扱える数の範囲が違うから、何も考えずに符号を反転させるとオーバーフローする。
ちょっと考えればわかることで、まともなプログラマはそんなコードを書かない。

473:デフォルトの名無しさん
08/07/29 17:42:13
>>469
IComparer.Compare(double x, double y)
{
return x - y;
}

474:デフォルトの名無しさん
08/07/29 17:44:57
>>473
馬鹿はすっこんでろ。

475:デフォルトの名無しさん
08/07/29 17:46:08
振り出しに戻る、だなw

476:デフォルトの名無しさん
08/07/29 17:47:20
>>469
MSDN読んでこいよ
バカ丸出し

477:デフォルトの名無しさん
08/07/29 17:52:12
return (x - y).CompareTo(0.0);

478:デフォルトの名無しさん
08/07/29 17:53:28
>>472
そういえば、そうですね。
単純に降順の場合、ret = -ret で返してました。
っていうか、ウェブにあるサンプルってどれも
この返し方してたんで、疑問にも思いませんでした
定数を返した方が安全なんですね

>>473
え、いやそこの所を実装したいのですが
後々も拡張したいので

479:デフォルトの名無しさん
08/07/29 17:53:58
>>477
バカ丸出しだなww
そのCompareTo()の中身が欲しいんだろwww

480:デフォルトの名無しさん
08/07/29 17:55:32
俺が正解書いてやったのにまだやってんの?

481:デフォルトの名無しさん
08/07/29 17:56:07
このスレ昔からそうだけど答えも知らないくせに
文句だけは言う馬鹿ばかりだなw

482:デフォルトの名無しさん
08/07/29 17:56:21
int Compare(double a, double b)
{
if (a - b < 0d) return -1;
else if (a - b > 0d) return 1;
else return 0;
}

483:デフォルトの名無しさん
08/07/29 17:56:56
>>481
お前もそうだろww

484:デフォルトの名無しさん
08/07/29 17:59:00
>>483
お前もそうだろwww

485:デフォルトの名無しさん
08/07/29 17:59:32
>>484
お前もそうだろwwww

486:デフォルトの名無しさん
08/07/29 17:59:53
>>486
お前もそうだろwwwww

487:デフォルトの名無しさん
08/07/29 17:59:57
ふらっとのがまともだな

488:デフォルトの名無しさん
08/07/29 18:00:06
何がおもしろいのやら…
くだらない奴しかいなくなってしまったな…

489:デフォルトの名無しさん
08/07/29 18:00:40
>>490
お前もそうだろwwwww

490:デフォルトの名無しさん
08/07/29 18:01:10
public int CompareTo(Double value)
{
if (m_value < value) return -1;
if (m_value > value) return 1;
if (m_value == value) return 0;

// At least one of the values is NaN.
if (IsNaN(m_value))
return (IsNaN(value) ? 0 : -1);
else
return 1;
}

491:デフォルトの名無しさん
08/07/29 18:02:10
>>488
前からずっとこうだろw
少し上のレスもそうじゃねえか
馬鹿のくせにプライドだけは高いから
すぐに荒れるw

492:デフォルトの名無しさん
08/07/29 18:02:53
普通の比較をしたいなら
int Compare(double a, double b) {  return a.ComaperTo(b); }

独自の比較基準を追求したいなら
int Compare(double a, double b) {
  if ( よくわからない基準で同じならば(x, y) return 0;
  if ( よくわからない基準で大ならば(x, y) ) return 1;
  else return 0;
}

ってことじゃないの?

493:デフォルトの名無しさん
08/07/29 18:04:50
ああ、荒れてしまってすいません

>>482
のようなシンプルな実装で行こうとも思います
もっと式一つで済むようなかっこ良い実装があると思ったんです
すいませんでした

ありがとうございました

494:デフォルトの名無しさん
08/07/29 18:07:37
わざわざ引き算してるのは何で?

495:デフォルトの名無しさん
08/07/29 18:08:03
>>416からの流れほどは荒れなかったなw

496:デフォルトの名無しさん
08/07/29 18:12:07
>>493
君は悪くない
実力の伴わない自尊心の持ち主が多いスレなんだ

NaNの処理が必要だから>>490の実装が正解に近いよ
Reflectorを使って、System.Double.CompareTo(object value)の中身を見てみることをお薦めする

497:デフォルトの名無しさん
08/07/29 18:15:26
>>496
正解に近いんじゃなくて正解だよ

498:デフォルトの名無しさん
08/07/29 18:16:22
>System.Double.CompareTo(object value)
だからさ、それをそのまま使わないか不思議なんだけど

499:デフォルトの名無しさん
08/07/29 18:18:02
>>498
拡張したいんだろ
初心者は変なことやりたがるんだからほっとけ

500:デフォルトの名無しさん
08/07/29 18:18:16
正解に近いという言い回しは、Cカップ好きのあれ思い出すな

501:デフォルトの名無しさん
08/07/29 18:21:27
一つの質問が投下されるたびに内容に関係無く
一悶着あるのがこのスレの掟w

502:デフォルトの名無しさん
08/07/29 18:23:52
>>498
特別なソートしたい場合なんていくらでもあるだろ
色々やってりゃ既製の比較関数じゃ追いつかない
場面は多々出てくる

503:デフォルトの名無しさん
08/07/29 18:35:21
>>496
自己紹介乙

504:デフォルトの名無しさん
08/07/29 18:40:46
>>496
ソースコードを直接見ろでいいじゃない。
質問者がExpress使いという可能性はあるけどさ。

505:デフォルトの名無しさん
08/07/29 18:58:58
>>490
遅レスだが、IsNaNの処理おかしくね?
非数じゃなかった場合、何でreturn 1に決め打ちしてんの?

506:デフォルトの名無しさん
08/07/29 19:06:06
>>505
ソースコード見てこいよ

507:デフォルトの名無しさん
08/07/29 19:25:39
>>505
何を決めうち?
// ここに到達したら少なくともどちらかは非数なので
m_valueが非数でvalueも非数ならば0
m_valueだけが非数ならば-1
m_valueが非数でないならvalueが非数なので1

508:デフォルトの名無しさん
08/07/29 22:05:31
個人的には

if (!IsNaN(m_value)) return 1;
if (!IsNaN(value)) return -1;
return 0;

の方が、分岐が浅くなって好み

509:デフォルトの名無しさん
08/07/29 22:42:53
連想配列、HashMapにあたるコレクションの説明がC#の入門書では異常なほど排除されてますよね。
自分はDictionaryを見つけて使ってますが、みなさんはもしかしてインデクサをMapのように実装して使ってるんでしょうか?
まさかとは思うんですが、独学の人間にアドバイスをよろしくお願いします。

510:デフォルトの名無しさん
08/07/29 22:46:51
いいえ

511:デフォルトの名無しさん
08/07/29 23:12:45
普通にDictionaryだろどう考えても。
場合によってはHashtable使うこともあるが。


512:デフォルトの名無しさん
08/07/29 23:26:30
>>509
Dictionary はまさに連想配列よ。
赤黒木で実装されてる。
STL の map と一緒。

513:デフォルトの名無しさん
08/07/29 23:30:36
>>512
MSのサイトにはハッシュテーブルで実装されてるって書いてあるよ。

514:デフォルトの名無しさん
08/07/29 23:39:50
Dictionary - ハッシュ
SortedDictionary - 赤黒木

ListとDictionaryぐらいは大抵の入門書で解説してあると思ってたわ。

515:デフォルトの名無しさん
08/07/29 23:39:50
Dictionary<,>はただのHashtableのラッパ。

516:デフォルトの名無しさん
08/07/29 23:41:21
Dictionary ハッシュ辞書
SortedDictionary 赤黒木
SortedList 索引をもつリスト
Hashtable Dictionaryの非ジェネリック版


517:デフォルトの名無しさん
08/07/29 23:42:57
>>515はデタラメ

518:デフォルトの名無しさん
08/07/29 23:45:56
SortedListは説明しづらいから逃げてることが多いかな。
わからなければSortedDictionaryを使うのが無難。

519:デフォルトの名無しさん
08/07/30 00:48:17
MSDNライブラリとか規格書とかSSCLIのコードとか読む人あんまり居ないの?

520:デフォルトの名無しさん
08/07/30 00:50:37
509です。カキコして下さった皆さんに感謝しています。
インデクサが定義可能と知り、まさかなと思いまして。でもやっぱりそうでしょうね。

>>514 ListとDictionaryぐらいは大抵の入門書で解説してあると思ってたわ。
まあ、いっぺん見てやってください。Listの解説があるならずいぶん良心的なほうです。。。
>>518 SortedDictionaryは推測するにJavaのTreeMapですね。新知識でした、ありがとうございます。


521:デフォルトの名無しさん
08/07/30 03:07:07
@ITってそこらの入門書より使えると思う俺

522:デフォルトの名無しさん
08/07/30 18:46:12
>>517
ソース読めよ馬鹿

523:デフォルトの名無しさん
08/07/30 19:00:13
>>522
reflectorで確認した限りでは使ってないな。どのあたりで使ってるの?

524:デフォルトの名無しさん
08/07/30 19:18:38
DictionaryBaseと混同してるんだろう
せっかくジェネリックになったのにHashTableなんか使ってたら値型のときに速くならないじゃん

525:デフォルトの名無しさん
08/07/30 20:05:13
URLリンク(www.itmedia.co.jp)
.NET大勝利ですか?

526:デフォルトの名無しさん
08/07/30 20:09:49
日本語がコードネーム?
Vistaは見送ったけどこれは買おうかな

527:デフォルトの名無しさん
08/07/30 20:12:12
どうせ10年後くらいだろ

528:デフォルトの名無しさん
08/07/30 20:18:43
横浜市緑区?
めっちゃ近所なんだが

529:デフォルトの名無しさん
08/07/30 20:23:06
俺んとこの市にも緑町があるぜ、隣の市とかその向こうにも。

530:デフォルトの名無しさん
08/07/30 20:35:07
>>525
大勝利って言われてもな。とりあえずWPFの普及率もっとあげてくれ。

531:デフォルトの名無しさん
08/07/30 20:59:47
Singularity ベースってだけで 9 割方ネタだろとしか正直

532:デフォルトの名無しさん
08/07/30 21:54:51
>>522
ソース読めよゴミ

533:デフォルトの名無しさん
08/07/30 22:01:12
C#によるプログラミングWindows 上/下 (マイクロソフト公式解説書)
はC#2.0でもかなり役に立つ?
C#2.0版まだ、でなさそうだし・・・・
#オライリーのC#本、手打ちしてる位のレベルなんだけど

534:デフォルトの名無しさん
08/07/30 22:18:29
>>533
1.0の頃からあまり変化がない部分が中心の本だから「時代遅れ」の
心配はあまりいらないかもしれない。

ただ俺はあの人の本って一般に評価されてるほど評価する気になれんな。
網羅的なのはいいけどコード変だし。

535:533
08/07/30 22:28:27
>>534
なるほど。ありがとう
明日、本屋によって現物確認してから考えるよ(確かあったはず)
とりあえず行数打って慣れるってレベルだから、いいかなと
#オライリーのも うーん と思わなくもない
#javaからshiftしきれてないからかな

536:デフォルトの名無しさん
08/07/30 23:57:26
ポインタ、クラス、ジェネリックを効率的に習得するには
C -> C# -> C++ という順番がいいような気がする今日この頃。


537:デフォルトの名無しさん
08/07/31 00:04:01
お前の意見なんて求めていない
消えろ

538:デフォルトの名無しさん
08/07/31 01:43:13
Java、C、C#の順でやってきた
C++は危ないコード書き放題の怖い何かって認識しかない

539:デフォルトの名無しさん
08/07/31 02:39:47
C++は言語仕様以外にも安全な書き方、
定番な書き方、インクルードファイルのインクルード順序とか、
まともに使えるようになるまでのインフラ整備にものすごく時間がかかるよ

C++の複雑さと心中する覚悟のある人しか使えないんじゃないかなぁ

540:デフォルトの名無しさん
08/07/31 11:25:26
レジストリのフルパスを表す文字列からRegistryKeyを取得する簡単な方法は
無いでしょうか?

\\HKEY_LOCAL_MACHINE\Software\hoge というキーを取得するには
Registry.LocalMachine.OpenSubKey("Software\\hoge")
で取ることは可能ですが、 OpenSubKeyメソッドがRegistryKeyのインスタンス
のサブノードしか取得できないため、まずルートキーを最低指定する必要があり
非常に面倒に感じます。

フルパスの文字列を解析して それがHKLMなのかHKCUなのか等をいちいち
判定して場合分けして、ルートキーを取得し、さらにそのサブキーを取得というのは
結構あほらしい気がするんですが…。

RegistryKey regKey = Registry.GetKeyFromPath("\\HK_LOCAL_MACHINE\\Software\\Hoge");
のように一気に取りに行く方法はFWに用意されていないんでしょうか?

541:ノムヒョン
08/07/31 11:26:38
using System;
using System.Collections.Generic;
using System.Text;

namespace VirtualMethods
{
class Control
{
protected int top;
protected int left;
/* 画面上でのウィンドウの位置を決めるための式 javaが懐かしい
*
*/
public Control(int top,int left)
{
this.top = top;
this.left = left;
}
// ウィンドウズへの描画をシミュレートします
public virtual void DrawWindow()
{
Console.WriteLine("Program;プログラムを描画します。座標:{0}, {1}", top, left);
}
}


542:ノムヒョン
08/07/31 11:27:50
public class Listbox : Control
{
private string listBoxContents;
// 基本クラスのコンストラクタより引数が1つ増えています。
public Listbox(int top, int left, string contents)
:
base(top, left) // 基本クラスのコンストラクタを呼び出します
{
ListBoxContens = contents;
}
// 派生メソッドでふるまいを変えるための上書きバージョン(キーワード)overrideに注意)
public override void DrawWindow()
{
base.DrawWindow(); // 基本クラスのメソッドを呼び出します
Console.WriteLine("ListBoxへ文字列を書き込みます:{0}", listBoxContents);
}
}
public class Button : Control
{
public Button(int top, int left)
:
base(top, left)
{
}
// 派生メソッドでふるまいを変えるためのの上書きバージョン(キーワードoverrideに注意)



543:ノムヒョン
08/07/31 11:28:46
public override void DrawWindow()
{
Console.WriteLine("Buttonを描画します。座標:{0}, {1}\n", top, left);
}

}
public class Tester
{
static void Main()
{
Console win = new Control(1, 2);
ListBox lb = new ListBox(3, 4, "単独のListBox");
Button b = new Button(5, 6);
win.DrawWindow();
lb.DrawWindow();
b.DrawWindow();


544:ノムヒョン
08/07/31 11:30:09

Control[] winArray = new Control[3];
winArray[0] = new Control(1, 2);
winArray[1] = new ListBox(3, 4, "配列中のListBox");
winArray[2] = new Button(5, 6);

for(int i=0; i<3; i++)
{
winArray[i].DrawWindow();
}
}
}



}
でアクセシビリティに一貫性がありません。基本クラス 'VirtualMethods.Control' のアクセシビリティはクラス 'VirtualMethods.Listbox' よりも低く設定されています。
とでて解決ができません。いろいろ調べてみたのですがもうどうすればいいのかと^^;


545:デフォルトの名無しさん
08/07/31 11:33:20
>>540
そういうメソッド一つ作っとけばあとは使いまわすだけじゃん

546:デフォルトの名無しさん
08/07/31 11:39:05
>>544
エラーメッセージのまんまだよ。
Controlクラスのアクセスレベルがpublicになってない。

547:ノムヒョン
08/07/31 11:40:38
<<546
ありがとうございます

548:デフォルトの名無しさん
08/07/31 12:03:00
ム板ってなんで安価も付けられない糞コテばっかりなん?

549:デフォルトの名無しさん
08/07/31 13:44:27
>>540
元のWin32 APIからそういう風になっているから仕方ないな。
そこもなんとかしろよ.NETとは思うけど。

単発での読み書きなら、Registory.GetValue/SetValueが使えるんだけどね。

550:デフォルトの名無しさん
08/07/31 13:44:34
>>545

まあ、そうなんですが。
ただあんまりあほらしいんで、車輪の再発明のような気がして
なんかライブラリに用意されているのを見落としているのかなと
思ったんですが。

551:デフォルトの名無しさん
08/07/31 13:46:32
>>549

WIN32からしてそうなんですか。
それじゃ無理そうですね…。


552:デフォルトの名無しさん
08/07/31 14:13:07
もともとHKEY_CURRENT_USERとかはパスではなく、
Registory.CurrentUserなんかに相当するWin32の定数だった。

553:デフォルトの名無しさん
08/07/31 18:26:49
デフォルトメーラーの起動で質問が有ります。

デフォルトメーラーの新規メール画面を添付ファイル付きで起動させたく、
現在MAPISendDocumentsで実装しています。

しかし、Outlook、Thunderbird、Eudra、Beckyなどは問題無いのですが
LotusNotesだとNOT_SUPPORTED=26が返されます。

エクスプローラから「送る」→「メール受信者」や、
Excelの「ファイル」→「送信」→「メールの宛先(添付ファイル)」
などはちゃんと動いており、この機能はMAPIを使っているものだと思っていますが、
(これ自体間違っているかもしれませんが・・・)
MAPIを使って他に添付ファイル付きで起動させる方法をご存じの方おりませんでしょうか?

MAPIを使わなくても別の方法でも問題有りません。
いろいろウェブで探してみましたが結論には至りませんでした・・・

554:デフォルトの名無しさん
08/07/31 22:53:14
Formの移動時やリサイズ時に枠線だけ動いたり変形している
のと同じ描画を行いたいのですが、別のダミーのフォームを
Style.Noneで実現しているのでしょうか。その場合はWinProcなどを
用いてWindowMessageを処理して実現可能でしょうか?

その場合はMouseをCursorオブジェクトなどを使って操作して、
OnResizeメソッドなどをプログラム側から発生させてダミーのForm側
にMouseを乗り移らせるようなことが可能なのでしょうか・・・
この辺ご存知の方、できましたらアドバイス等頂きたく(それとも、
あれはデスクトップに直接描画とかしているのでしょうか?)

555:デフォルトの名無しさん
08/07/31 23:15:37
デスクトップにControlPaint.DrawReversibleFrameする簡単な実装は
お気に召さないの?

556:デフォルトの名無しさん
08/08/01 00:59:41
>>555
おお、そのような便利なモノがあったのですか!!
調べてみます!ありがとうございました!


557:デフォルトの名無しさん
08/08/01 11:46:10
すいません、質問です。
C#をベースにしたらしい言語を使ってます。

#includeを使いたいですが、これ自体はないようなので、
どういった手法をとればよいのでしょうか?
importだかusingだかで、他から引っ張って来るような記述はあったんですが、
目的の機能ではないみたいで…。

目的としては、mainを含む上位部分を使いまわししたいんです。
で、下位部分を手動で大量に作って、共通部分の上位部と組み合わせてそれぞれコンパイルするような。

何かありますでしょうか?(´・ω・`)



558:デフォルトの名無しさん
08/08/01 11:47:18
C#をベースにした言語って?

559:デフォルトの名無しさん
08/08/01 11:53:29


560:デフォルトの名無しさん
08/08/01 11:53:57
シーチンコ?

561:デフォルトの名無しさん
08/08/01 12:01:40
特に名称はないみたいです。
ツール内のみのスクリプト扱いなので。

562:デフォルトの名無しさん
08/08/01 12:02:55
ふうやれやれ

563:デフォルトの名無しさん
08/08/01 12:07:01
>>561
どんなツールだか知らんけど、そのツールのベンダーフォーラムなり
ユーザーフォーラムなりそういうものはないのか?
構文だけC#に似せているのか、実際に.NET Frameworkを利用している
のかもわからんし、アドバイスのしようがない。

564:デフォルトの名無しさん
08/08/01 12:30:11
>>563
確かにそうっすね。(´Д`;
フォーラム系はないっす。マニュアルもろくに整備されてなくて。
サポセンもアウアウです、はい。orz

ただ、基本的にはC#を汲んでるらしいので、
ひょっとしたらC#の手法が通るのでは?
と思って質問しました。

565:デフォルトの名無しさん
08/08/01 12:44:12
C#ではCみたいなソースの使い回しはできないんじゃね?

566:デフォルトの名無しさん
08/08/01 13:00:15
ソースを分割するといってもせいぜい、partial classぐらいだろうな
しかもあれはフォームデザイナーのための苦し紛れの構文だし。

むしろC#ライクな言語ってすごく不思議だな。C#をスクリプトとして使いたいならCodeDOMでコンパイルすればいいし
URLリンク(blogs.sqlpassj.org) みたいなやつか?使い方は知らないがw

567:デフォルトの名無しさん
08/08/01 13:34:35
>>564
そのツールって何?

568:デフォルトの名無しさん
08/08/01 13:39:18
>>564
言語の出所をはっきりさせない
理由も言わない
サンプルコードも示さない
お前何しに来たの?

569:デフォルトの名無しさん
08/08/01 13:50:08
>>564
ツール・・・ここらへんっすね。
URLリンク(www.accuratetechnologies.com)
URLリンク(www.necel.com)

>お前何しに来たの?
C#で#includeをする方法を聞きにきました。

570:デフォルトの名無しさん
08/08/01 13:59:42
その言語は知らないけどとにかくC#に#includeは無い
設計するときに無いほうがいいだろうと判断されたから無い

571:デフォルトの名無しさん
08/08/01 14:08:01
DLLにしてしまうのがいいかもね

572:デフォルトの名無しさん
08/08/01 14:19:08
きっとCでもこういうのincludeして悦に浸ってる人なんだよ
#define program int main() {
#define begin {
#define end return 0; }


573:デフォルトの名無しさん
08/08/01 14:30:19
>>569
金払って買ったもののサポセンがないってどういうことよ
1ライセンス100万とかそういうソフトだろ

とりあえず#includeに相当するC#のキーワードは#usingだが
使い方はC++でいうところの
namespace std;
だからまるで別物

とりあえずサンプルコードでもなけりゃ助言しようもないし
上司に相談したほうがはやいと思うぞ

574:デフォルトの名無しさん
08/08/01 14:31:49
×namespace std;
○using namespace std;

575:554
08/08/01 15:06:49
「ドラッグ中にウインドウの内容を表示するかどうか」をWindowsの
オプション設定で決めることができますが、

ドラッグ中にウインドウの内容を - Google 検索
URLリンク(www.google.co.jp)ドラッグ中にウインドウの内容を&start=10&sa=N

この設定がされているか、されていないかを、プログラム側から
知る方法を知りたいのですが、参考になる情報をご存知でしたら
アドバイスをお願いします!


576:デフォルトの名無しさん
08/08/01 15:09:31
>>572
ワロタwでも一部分だけpascalでも意味内から無駄だな。

577:デフォルトの名無しさん
08/08/01 15:10:13
>575
URLリンク(www.google.co.jp)

578:デフォルトの名無しさん
08/08/01 17:21:50
>>571
DLLっすか。それで引っ張ってこれるなら・・・。
中々情報がないですが、漁って見ます。

>>573
サポセンあるにはあるんですが、質問したら
激しく役に立たないサンプルソースがヤル気なく返ってきました。('A`
相談したいんですが、社内での導入が実質初なので。
まともに使ったこと有る人、他にいないんです。

サンプルコード・・・一部抜粋して書いてみました。
役に立たなそうですが。(´Д`;

MessageItem frm_ENG;
public override void OnStart()
{
frm_ENG = GetMessage("ENG");
StartTimer("ENG",200);
Start_test();
}
[Timer("ENG",200, false , false)]
public void OnTimer_t_ENG()
{
StartTimer("ENG",200);
SendMessage(frm_ENG);
}
public void Start_test(){
WriteLine("start");
}

共通的に記述が2500行位で、それを百前後作るんで、
できれば引っ張ってきたいんですよね。

579:デフォルトの名無しさん
08/08/01 17:22:32
>>577
情報、どうもありがとうございました。
助かりました、すぐ調べてみます!


580:デフォルトの名無しさん
08/08/01 19:55:51
>>578
C#つかOO言語触ったことなくね?

581:デフォルトの名無しさん
08/08/01 21:24:42
>>578が2chでヤル気なく質問してきた理由がわかった('A`
気の毒すぎるw
C#とWindowsAPIが混ざってるよね…

Timerを属性指定にして
メソッドに依存させてしまっているあたりセンスのなさが感じられるww

とりあえず>>578が何をやりたいかということと
サンプルソース全部と
あともう微妙にスレ違いなんで、
どっかの放棄されたスレに移るかして、
腰を据えて分析するよりないんじゃないかなw

パズル感覚で協力してくれる人いると思うよww

582:デフォルトの名無しさん
08/08/01 22:08:48
codedom使ってコンパイルしてるだけでC#なんだと思うよ
つか常識的に考えて#includeで展開とか不要でそ…
どんな状況なら必要なんだよ…

583:デフォルトの名無しさん
08/08/01 22:45:15
よくわからんけどincludeなんて前世代的だとおもう

584:デフォルトの名無しさん
08/08/01 23:01:12
なんという蘭学事始。

585:デフォルトの名無しさん
08/08/01 23:27:49
>>583
そうかもしれんが、かといってグローバルな(つまりファイルスコープじゃない)
コンパイル定数を定義しようと思ったらプロジェクトのプロパティに
ちまちま書かなければならん不便さを進歩と言ってよいのか疑問でもある。

586:デフォルトの名無しさん
08/08/01 23:32:02
>>585
定数も、const じゃなくて、static readonly なプロパティ使うことが推奨されてるしなぁ。
private/internal な場合か、円周率みたいに絶対変わらない値だけ const。

587:デフォルトの名無しさん
08/08/01 23:33:43
定数だったら、たとえばColor.Redみたいに、クラスのpublicな要素でぜんぜん不便を感じてないけど。
そういうことじゃなくて?

588:デフォルトの名無しさん
08/08/02 00:03:34
お前は黙ってろ

589:デフォルトの名無しさん
08/08/02 00:05:26
お前がだまれ。

590:デフォルトの名無しさん
08/08/02 02:37:56
>>587
プリプロセッサシンボルを使いたいんだろうね
>>585はプロジェクトのプロパティでしか設定できないと思い込んでいるらしいが

591:デフォルトの名無しさん
08/08/02 05:28:26
>>583
クラス定義とか、テキストエディタさえあればヘッダ除けばすぐに判る点とか、
C/C++やってきた自分としては好きですけどね



592:デフォルトの名無しさん
08/08/02 08:38:54
クラス定義は嬉しいけど、インクルードする順番によってコンパイルが通らなくなったりするのは最悪だった

593:デフォルトの名無しさん
08/08/02 08:56:42
>>591
俺は C++ やってるからこそ、
あのヘッダシステムのせいで
クラスの依存性切るのに pimpl みたいなおまじないが必要だし、
コンパイル速度が低下するし、
インテリセンスの効きが時々おかしくなるし、
include が大嫌いなんだが。

594:デフォルトの名無しさん
08/08/02 09:58:15
C、C++のincludeが遅いのはマクロのせいでしょう

595:デフォルトの名無しさん
08/08/02 10:01:48
C++の

の間違いじゃない?
Cはよほど下手な組み方でもしなければそうそう遅くならないでしょ

596:デフォルトの名無しさん
08/08/02 10:01:52
#includeが欲しいだけならプリプロセッサでもかませばいいじゃん。

597:デフォルトの名無しさん
08/08/02 10:22:18
目立つのはC++になるね。
でもCも速度としては遅いし、ヘッダーを1バイトでも書き換えたら
includeしてる全てのソースファイルを再コンパイルになるのはかわらない。
そういう意味でも遅いよ。

もしマクロがなくて、クラスや関数の定義のみであるなら
リアルタイムコンパイルも可能だよ。

598:デフォルトの名無しさん
08/08/02 10:22:40
C みたいな関数宣言と #define だけのためにあるシステムを、
C++ でクラス定義でも使いまわしたのがそもそもの失敗じゃないか。

private な変数1個追加しただけで、#include してるファイル全部再コンパイルとか
狂ってるとしか言いようがない。

599:デフォルトの名無しさん
08/08/02 10:26:47
そこでpimplイデオムですよってスレ違いじゃねぇかよ

600:デフォルトの名無しさん
08/08/02 10:41:17
>>590
すまんその「思い込んでる」のは俺だけど、
俺の「思い込み」だというならもったいぶらずに君のいう別の方法を教えてくれよ。

分かってると思うけど議論の流れからいってIDEでプロジェクトの設定いじるより
不便な方法だったなんの意味もないわけだが、そこは踏まえて頼むよ本当。

601:デフォルトの名無しさん
08/08/02 11:11:56
>>600
普通に教えてくれでいいんじゃね?
頼みかた感じ悪いと思う
いつもそうなん?

602:デフォルトの名無しさん
08/08/02 11:35:10
VSのマクロでCSharpProjectConfigurationProperties3.DefineConstants触るとか

603:デフォルトの名無しさん
08/08/02 11:39:48
>>599
既出 >>593

>>600
定数定義用の static なクラス作って、
絶対に変わらないと言い切れる定数は public const フィールド、
そうでなければ public static readonly なプロパティ。

604:デフォルトの名無しさん
08/08/02 11:41:14
あと、#if SYMBOL 用のシンボル定義は、
むしろヘッダファイルでできるべきではなく、プロジェクトのプロパティですべき
というのが MS の判断。

605:デフォルトの名無しさん
08/08/02 11:54:44
>>604
なんだよやっぱりプロジェクトのプロパティでしか出来ないんじゃないかw

だから「べき」って、確かにそうかもしれんがその不便さを進歩って言えるんかい、
つってんだよ。

606:デフォルトの名無しさん
08/08/02 11:55:40
設定ファイルを直にいじれよ

607:デフォルトの名無しさん
08/08/02 12:06:03
多重継承禁止とかもべき論で導入されたわけで

608:デフォルトの名無しさん
08/08/02 12:10:29
DebugやReleaseの他にもプロジェクト構成を作って切り替えるのが正攻法
逆にいえばそれで足りる用途にしか使ってほしくないんだろう

609:デフォルトの名無しさん
08/08/02 12:12:34
C++はtemplateを導入した時点で、#includeでマクロがどうこうといった次元からすでに超越してる。
技術的には可能でもC++のtemplateを模倣する言語は現れないだろう。

610:デフォルトの名無しさん
08/08/02 12:14:17
C++はあと文字列mixinみたいな機能が入れば完全にプリプロセッサと縁が切れるな

611:デフォルトの名無しさん
08/08/02 12:17:23
>>605
これのことでしょ
URLリンク(msdn.microsoft.com)

暑いんだからあんまりぎゃーぎゃー喚くなよ

612:デフォルトの名無しさん
08/08/02 12:25:45
>>609
Dとかどうよ

613:デフォルトの名無しさん
08/08/02 12:30:47
>>608
それが正攻法だというのは否定してないよ。
構成の切替方法はあれで便利だし。

ただIDEのあのたった一行の入力欄に「全部の定数を定義する必要がある」のは
不便で使いにくいって言ってるだけ。

しかも(当たり前だが)作った構成の数だけ同じことをする必要がある。
そこにミスが入った場合、非常に発見しにくいとも思うんだが。。

614:デフォルトの名無しさん
08/08/02 12:38:02
あっちこっちのファイルに飛び散るより遥かにましだと思うが

615:デフォルトの名無しさん
08/08/02 14:36:11
>>605
「できる」みたいに言ってるやつと >>604 は別人だろ。

できる風に書いてるやつは多分よく読んでないだけ。
要するに、お前の書き込みによく読む価値はないと判断されてる。

616:デフォルトの名無しさん
08/08/02 14:50:34
実に自分を世界の中心に置く「セカイ系」的発想だね。
俺やアイツの誤読はお前の文章に読む価値がないからだ、ってかw

まあ、自分を世界の中心に「俺様中華思想」もいいかもしれんが、
だったら自分の言葉を自分に適用したらどうだろう。
つまりもう少し他人にとって有益な情報を書けよって意味だが。

617:デフォルトの名無しさん
08/08/02 14:51:54
黙ってスルーする能力もないのかよ

618:デフォルトの名無しさん
08/08/02 14:54:44
能力というのは目的合理的に物事を推進する力のことを言う。
では「スルーする能力」という時の「スルーする」ことの目的ってなんだ?
少なくとも俺にとってはそんなものはない。

むしろ馬鹿は叩いておいた方が場のため本人のため、そして自分自身の精神衛生のため、
と思っての行動なんだけどね。

619:デフォルトの名無しさん
08/08/02 14:59:03
というか .csproj はただの MSBuild の XML ファイルなんで
テキストエディタで開いてゴリゴリ編集できるんだがそういう
基本的な話は知らんのか?
VS からならプロジェクトのアンロード → **.csproj の編集。

…ついでに言うと、VS 側の CSharpPackage が変な proj ファ
イルでも普通に動くので VsPackage めんどいとき(ビルドとIDE
から適当にファイルが見えて編集できればいい)は .csproj 流用
するといいみたいな。


620:デフォルトの名無しさん
08/08/02 15:27:10
csprojのほうはいいんだが、slnのほうは変なGUIDが付いてるので手でいじれん・・・
どっかに何入れればいいか公開されてるのかな?


621:デフォルトの名無しさん
08/08/02 15:36:53
適当でいい

622:デフォルトの名無しさん
08/08/02 15:58:49
ソリューション周りの情報なら VSSDK の

URLリンク(msdn.microsoft.com)

この辺しか知らん。
・・・が、俺は基本的にいじるのは IDE 上からだなぁ。依存関係とか。


623:デフォルトの名無しさん
08/08/03 10:39:27
XmlSerializerでstaticなクラスをXMLに保存できないですよね?
アプリ設定情報をstaticにしてどのクラスからもすぐに楽に参照したいんですけど、
staticクラスにするとXmlSerializerは使えないですよね?

624:デフォルトの名無しさん
08/08/03 10:41:21
シングルトン

625:デフォルトの名無しさん
08/08/03 10:49:08
>>623
・MySettingクラス(仮称)をstaticクラスじゃなくてsingletonにする。

または

・MySettingクラスはstaticのまま、内部の実装としては別のHogeSettingクラスの
インスタンスをもちこいつをXMLシルアル化するようにして、外部にはSaveSetting/LoadSetting
メソッドを公開する。

626:デフォルトの名無しさん
08/08/03 11:20:33
シングルトンでいきます

ありがとうございました!

627:デフォルトの名無しさん
08/08/04 11:32:44
stringの配列を指定した列挙型の組み合わせに変換したいのですが、
@のところでコンパイルエラーになってしまいます。
どのように実装したらいいんでしょうか・・・


public class ConvertToEnum<T> where T : Enum ←@
{
private T _value;
public class ConvertToEnum(string[] texts)
{
foreach (string s in texts)
{
_value |= Enum.Parse(typeof(T), text, true);
}
}

public T Value
{
get { return _value; }
}

}


[Flags]
public enum TestEnum
{
AAA = 001, BBB=002, CCC=004
}
string[] texts = { "AAA", "BBB", "CCC" };
TestEnum value = ConvertToEnum<TestEnum>(texts).Value;
value : 007

628:デフォルトの名無しさん
08/08/04 11:45:19
コンパイルエラーの内容読むこともできないの?

enumとかdelegateとかで制約は無理

629:デフォルトの名無しさん
08/08/04 15:00:54
staticコンストラクタでif (!typeof(T).IsAssignableFrom(typeof(Enum))) throw new Exception();
でおk
でもその例でクラスにする意味がわからない
ConvertToEnum<T>(string[] text)でいいよね

630:デフォルトの名無しさん
08/08/04 17:51:29
>>629
クラスにしたのは元のソースがクラスだからです
必要な部分だけ残したら上の形になりました

えーと、Generic制約でEnumを指定できないと、
Aの部分の | 演算子が使えません…

foreach (string s in texts)
{
_value |= Enum.Parse(typeof(T), text, true); ←A
}

_valueをint型にしてもBの部分でコンパイルエラーです…

public T Value
{
get { return (T)_value; } ←B
}

上手な実装の仕方はないでしょうか…

631:デフォルトの名無しさん
08/08/04 18:02:54
リフレクション

632:デフォルトの名無しさん
08/08/04 18:24:52
where T : struct, IConvertible としておいて

value = default(T);
foreach (string s in texts) {
value = (T)Enum.ToObject(typeof(T), value.ToInt32(null) | ((T)Enum.Parse(typeof(T), s, true)).ToInt32(null));
}

633:デフォルトの名無しさん
08/08/04 18:45:43
List<List<int>>型変数に入ってるすべてのintを返すIEnumerable<int>がほしいんだけど、
Linqとか使うと1行で可能?

634:デフォルトの名無しさん
08/08/04 18:59:33
listlist.SelectMany(list => list);

635:デフォルトの名無しさん
08/08/04 19:08:50
>>634
ありがd。

636:デフォルトの名無しさん
08/08/04 19:30:09
|=を使わんでも、文字列をカンマ区切りにして、
Keys k = (Keys)Enum.Parse(typeof(Keys), "Control, Alt, T", true);
みたいにすればいい。

637:デフォルトの名無しさん
08/08/04 20:49:00
>>634
おおそんなのが・・・

638:デフォルトの名無しさん
08/08/04 21:19:43
>>634
こういうのが頭の中にすんなり入ってこないorz

639:デフォルトの名無しさん
08/08/04 21:32:35
var array = new[] { new {A="あ", B="いう"}, new { A="え",B="お" } };
var flat = array.SelectMany(x => new[] { x.A, x.B });
Console.WriteLine(string.Concat(flat.ToArray()));
こういう例のほうがわかりやすいかな

640:デフォルトの名無しさん
08/08/04 21:35:33
ラムダ式を華麗に扱えるようになりたい

641:デフォルトの名無しさん
08/08/04 21:40:18
C#3.0でRayToracingとかのArticleあったけれど、あのソースがラムダ使いこなしたサンプルの一つとみていいもんかね。

642:デフォルトの名無しさん
08/08/04 21:46:35
バイト配列の変換について教えてください。
バイナリファイルよりReadAllBytesでデータをバイト配列に格納後、指定の
バイト数分のデータを2進数の文字列に変換するメソッドを作成しています。

8バイトまではBitConverterメソッドで数値変換し、Convert.ToStringで
2進数の文字列に変換できるのですが、9バイト以上はBitConverterメソッドが
対応していません。この場合、何か良い方法があるのでしょうか?

よろしくお願いします。



643:デフォルトの名無しさん
08/08/04 21:48:22
手抜きするならBitConverter.ToStringとString.Replace

644:デフォルトの名無しさん
08/08/04 21:49:07
どうでもいいが数値変換したらリトルエンディアンになっちゃうぜ

645:デフォルトの名無しさん
08/08/04 22:09:26
クリスタルレポートとMicrosoft.Reportingのどっちを使おうか悩む。
普通なら昔からあるものは情報も豊富でバグも枯れてて使いやすい
はずだが、クリレポは悪評ばかり・・・

646:デフォルトの名無しさん
08/08/04 23:09:18
>>638
このケースではクエリ式の方がとっつきやすいかな。
from list in listlist
from x in list
select x;

慣れてくればSelectManyを思い出せるようになる。かも。
ILではどっちでも同じことなんだけど。

647:デフォルトの名無しさん
08/08/04 23:24:50
>>638
SelectMany は正直無理だと思う。

そのために、
from listist in listlist
from x in list
select x
みたいな記法がある。
これで listlist.SelectMany(list => list) と同義のはず。

648:デフォルトの名無しさん
08/08/04 23:26:01
>>641
あれは結構邪道だけどな。

クエリ式が関数型言語っぽい記述できるのをいいことに、
C# 内で関数型言語プログラミングしてるっていう。

クエリ式の目指すところではなくて、副産物的なものだと思う。

649:デフォルトの名無しさん
08/08/04 23:56:31
Validatorクラスでの正規表現チェックって
クラサバでもwebでも使えますか?

650:デフォルトの名無しさん
08/08/05 02:19:49
>>633 >>634 に便乗して、
List<List<List<int>>> listlistlist; から IEnumerable<int> を得るには、

listlistlist.SelectMany(listlist => listlist).SelectMany(list => list);
か、
listlistlist.SelectMany(listlist => listlist.SelectMany(list => list));
みたいな感じでOK?

もっと良い書き方があったりするのかな?


651:デフォルトの名無しさん
08/08/05 05:45:41
>>650
それでOK。

652:デフォルトの名無しさん
08/08/05 08:49:25
>>650
それでもいいけど、それは関数化すべき気がする。

static IEnumerable<T> Concat<T>(IEnumerable<IEnumerable<T>> listlist)
{
 return listlist.SelectMany(list => list);
}

を作って、Concat(Concat(listlistlist));

653:デフォルトの名無しさん
08/08/05 08:55:21
メソッドと関数って何が違うの?

654:デフォルトの名無しさん
08/08/05 08:56:39
メソッドはクラスの一部だけど関数はそうじゃなかったような・・・
というか関数はそもそもC時代の名残だし

655:デフォルトの名無しさん
08/08/05 09:03:34
>>653
昔の名残。
OOP 用語的にはメソッド、昔の名残的にはメンバ関数。

単に関数っていうと、グローバル関数(C# では定義できない)のことだけど、
非 OOP 言語ではグローバル関数として定義するような static メソッドのことを関数って呼んだりする。

関数化ってのも、メソッドとして独立させろって意味。
サブルーチン化って言った方がいいかも。

656:デフォルトの名無しさん
08/08/05 09:08:55
サブルーチンって更に化石用語な気が。

657:デフォルトの名無しさん
08/08/05 09:29:32
Procedure / Function、Sub / Function のように
関数とサブルーティンを分ける言語も多いね。
サブルーティンを戻り値のない関数としたのはCあたりからだったかな。

658:デフォルトの名無しさん
08/08/05 10:25:21
BackGroundWorkerとThreadってどっちがパフォーマンスいいの?

659:デフォルトの名無しさん
08/08/05 10:38:04
気にするほどのもんでもない

660:デフォルトの名無しさん
08/08/05 11:21:39
>>307
.Where 以降の構文は、3.5から追加されたものだと
思うのですけれども、なんと呼称されているでしょうか?

オブジェクト内のメソッド呼び出しのようですし
Linq とはまた別の新しい技法のような気がします。

てか、Where, ToList, ForEach が一般的過ぎて検索しにくい・・・

661:デフォルトの名無しさん
08/08/05 11:22:42
拡張メソッド
実態は静的メソッドの呼び出し

662:660
08/08/05 11:39:51
URLリンク(72.14.235.104)

というかドキュメント嫁、じぶん
基本型のbuiltin関数を暗黙的にオーバーロードしてる
いうのが何か引っかかる・・・Where, ToList, ForEachは
どこに所属してるメソッドなのかという、Linq難しいな…orz

663:デフォルトの名無しさん
08/08/05 11:53:22
for m in Assembly.LoadFrom("Hoge.dll").GetType("Hoge.Tool").GetMethods():
 where(m => (!m.IsPublic && !m.IsPrivate && m.Name[0] == 'A')):
  for elm in m.ToList():
   Console.WriteLine(elm)

.Where(m => (!m.IsPublic && !m.IsPrivate && m.Name[0] == 'A'))
.ToList().ForEach(Console.WriteLine);

sql みたいな書き方をしてる事例ちょくちょく見かける
あれはシンタックスシュガーみたいなもんかしらん

URLリンク(209.85.175.104)(VS.80).aspx+IsPublic+IsPrivate&hl=ja&ct=clnk&cd=3&gl=jp&lr=lang_ja

IsPublicは fieldinfo のメソッドか・・・
C#だとメソッドもフィールドの一種なのかな、C++と違うとか

664:660
08/08/05 12:01:18
URLリンク(209.85.175.104)

ドよめ
滝に打たれてチネ…orz

665:デフォルトの名無しさん
08/08/05 22:50:40
>>660
それもLINQ。

from x in list where x > 10 select x; みたいなのはLINQクエリ式。
list.Where(x => x > 10); みたいなのはメソッド形式のLINQ。

>>663
そう、構文糖衣。
from x in listX
from y in listY
select x * y;
みたいな構文が、メソッド形式ではどうやってもスマートな書き方できなかったから導入されたらしい。

666:デフォルトの名無しさん
08/08/05 23:37:27
>>665
その例だと

listX.SelectMany(x => listY, (x y) => x * y)

こうなるけど、例としては不十分な気がする
これくらいにしないと

from x in listX
from y in listY
where x > y
select x * y;

listX.SelectMany(x => listY, (x, y) => new { x, y })
.Where(z => z.x > z.y)
.Select(z => z.x * z.y);

あと、let入るとさらに面倒になるな

667:デフォルトの名無しさん
08/08/05 23:45:10
user32.dllのAnimateWindow()を呼び出しているのですが、
CPU負荷が大きくてガクガクします。
負荷を下げる方法ってありませんか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4947日前に更新/181 KB
担当:undef