[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/01 19:54 / Filesize : 272 KB / Number-of Response : 1014
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part91



1 名前:デフォルトの名無しさん mailto:sage [2016/06/29(水) 23:45:15.36 ID:EZjVZgG6.net]
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
echo.2ch.net/test/read.cgi/tech/1455160063/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

446 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 23:11:31.83 ID:SjD2GByw.net]
周りにC#プログラミングをやっている人がおらず、推奨/非推奨の判断ができないので相談させてください
次のような書き方はアリでしょうか

たとえばWindowsフォームアプリケーションのForm1クラスの
直下に
Regex.CacheSize = 100;
などとほかのクラスのプロパティ代入文を書くとエラーでコンパイルが通りませんが、これを
int dummy_int = Regex.CacheSize = 100;
というようにダミーの変数代入を噛ませれば、
コンパイルエラーを起こすことなく書くことができてしまいます

これは普通に使われるようなテクニックですか?
それとも仕様上はコンパイルできるがあまり好ましくない書き方ですか?

447 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 23:20:41.59 ID:SmYH2aqj.net]
使っちゃ駄目。
上の書き方でコンストラクタ内とかで設定。

448 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 23:22:54.69 ID:AFnkuo0i.net]
考えたこともなかったからちょっと感心したわ
視点の違いってすごいわ

449 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 23:39:59.90 ID:pDhW8mKL.net]
コンストラクタが呼ばれた時に暗黙的に変数の初期化が走るとは言え上手くいくのだろうか。
普通はコンストラクタかForm1がロードされた時に代入かな。

450 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 23:45:53.15 ID:SjD2GByw.net]
>>441
ありがとうございます、やっぱりダメですか
ちなみにどういった理由でダメなんでしょう

実際には色々なクラスの色々な所でRegexオブジェクトを定義しているので
なるべく早くキャッシュサイズを拡大したいんですが、
(あまりProgram.csは触りたくないけど)素直にMain()内に書くしかないんでしょうか

>>443
ステップ実行してみたら、Form1のコンストラクタ(InitializeComponent();)よりも前に実行されてました

451 名前:デフォルトの名無しさん mailto:sage [2016/12/09(金) 23:51:08.34 ID:vatll/rz.net]
>>440
こんな仕様初めて聞いたんだが、誰かkwsk

452 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 00:10:15.56 ID:htA28gv+.net]
>>442 >>444
int a=b=100;
みたいな書き方ができること自体は以前どこかで読んだことがあったものの
なんとなく気持ち悪くてこれまで使ったことがなかったのですが、
最近改めて=演算子の戻り値と演算順序(先に実行される「b=100」の結果が100を返すので
それがaにも代入される)を勉強したところだったので、コンパイルできるかなと思ったらできてしまいました

453 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 00:11:39.47 ID:htA28gv+.net]
>>446は442と>>445へのレスでした。

454 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 00:14:55.08 ID:HOF4U6Im.net]
>>446
それは分かる
でも何故エラーが出なくなるのかって話



455 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 00:24:59.06 ID:mt2BmPb5.net]
そもそも単なる文法上の制約だからだろ

そういう制約をわざわざ付けてるってことは、そういう事はやるべきじゃないって思想の表現だと思うが

456 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 02:21:43.03 ID:XBbQ6S0E.net]
>>444
横だし俺はC#専門ではないけど、それってコンストラクタ内に書けばいいだけだよね。
果たして>>440で動くのかも疑問だけど、
仮に動いたとしても、ダミー変数がインスタンス内に残ってしまうのが無駄だよね。

そもそも a=b=c の書き方自体をしない。(ただしRubyの連中はするのかもしれない)
何故かは知らんが、おそらく見にくいという主張をする奴が多いからだろう。
どのみち普通はコーディングルールで禁止してあるし、
行数をケチる以外のメリットもないからいちいち文句を言う価値もないし。

457 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 02:29:36.15 ID:THyFY8cN.net]
>>444
単純に分かり難いから。このスレの反応見ても、普通使わなそうなのが見て取れるでしょ。

Program.csが嫌でなるべく早くというなら、Form1のコンストラクタが良いんじゃないの。
Form1のコンストラクタよりも先である必要ってないでしょ。

458 名前:デフォルトの名無しさん [2016/12/10(土) 03:10:58.12 ID:jJfPnpDE.net]
static IDisposable SubscribeTracer<T>(this IObservable<T> source, string name) {
var disposer =
source.Subscribe(value => Console.WriteLine("{0} : OnNext({1})", name, value));
return disposer;
}
このプログラムは一体なんなのだ。全然わからない。そこで理解しようと思ってラムダ部分を
関数に置き換えてみると
void ramda(string value ){ Console.WriteLine("{0} : OnNext({1})", name, value); };

だあーー、nameを持ってこれない。持ってくるとすればグローバルにするしかない。
 ラムダ関数は単なる匿名関数というだけでなくて、こういう便利な機能があるんだと初めて
分かった。つまり普通の関数にするとスコープを閉じるがラムダにするとスコープが開く。
オープンスコープ機能だ。ダダだい発見だ。と思ってほかにも気が付いた奴がいないかと
「ラムダ関数はスコープを開く」でググってみると、無い。俺の発見だ。w

459 名前:デフォルトの名無しさん [2016/12/10(土) 03:13:11.24 ID:jJfPnpDE.net]
MSの説明 ラムダ式(C#プログラミングガイド)
ラムダ式は、デリゲート型または式ツリー型を作成するために使用できる匿名関数です。 ラムダ式を使用すると、引数として渡したり関数呼び出しの結果値として返すことができるローカル関数を記述できます。 ラムダ式は、LINQ クエリ式を記述する場合に特に便利です。
以下省略(間違いがおおすぎ、、、、)

1行目から間違ってるよな。W デリゲート型をつくるのは delegate int del(int i); この部分で
あって
del myDelegate = x => x * x;
これではないな。
2行目も間違ってるよな。w ローカル関数ってのはC#7(VS2017)からなのでまだサポート
ないだろ。

460 名前:デフォルトの名無しさん [2016/12/10(土) 04:49:24.16 ID:jJfPnpDE.net]
delegate void del(string valule);
static string _name;
static IDis

461 名前:posable SubscribeTracer<T>(this IObservable<T> source, string name)
{
_name = name;
//var disposer = source.Subscribe(value => Console.WriteLine("{0} : OnNext({1})", name, value));
del aa;
aa= eventdo;
var disposer = source.Subscribe( aa(val ) );
}
static void eventdo(string value){
Console.WriteLine("{0} : OnNext({1})", _name, value);
}
452をDelegateで書き換えてみたがコンパイルエラーになる。なんでだ?
[]
[ここ壊れてます]

462 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 08:12:40.98 ID:htA28gv+.net]
>>450-451
なるほど、見にくい・分かりづらいというのは同意見です
(自分もint a=b=0みたいな表現は今回の件まで一度も使おうとしなかったので)
ただ、Form1のコンストラクタに書いても
実行順序はForm1のメンバ変数定義より後回しになってしまうようなので…

Form1のメンバ変数としてRegexオブジェクトを大量に定義しているので
もっと早くキャッシュサイズを拡張しないと意味ないのかな?と

463 名前:デフォルトの名無しさん [2016/12/10(土) 09:33:27.42 ID:jJfPnpDE.net]
すまん。454は自己解決した。
そもそもIObservableをまったく理解してなかった。

464 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 10:41:12.43 ID:scmr7sdZ.net]
>>455
メンバ変数の初期化もコンストラクタでやったらどうかな?



465 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 12:31:00.36 ID:rHn5Q6ti.net]
>>455
変な小細工せずにForm1のコンストラクタを呼び出す前に書くのが筋だと思う。

っていうか、Regexあんまり使わないので自信ないけど、そもそもRegex.CacheSizeなんか設定しなくても
RegexのコンストラクタでRegexOptions.Compiledを指定すれば済むんじゃないの?

466 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 12:43:23.50 ID:rHn5Q6ti.net]
smdn.jp/programming/netfx/regex/1_regex_cached_compiled/
↑によるとCacheSizeが影響するのはスタティックメソッドを使う場合だけ?

>>455はRegexのインスタンスを生成してるみたいだから、だったらそもそもCacheSizeの
設定は無意味ってことかな。

467 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 12:53:41.37 ID:rHn5Q6ti.net]
考えてみたら、どっからでもアクセスできちゃうstaticなプロパティの値が
個々のインスタンスの挙動に影響を与えるような筋悪な設計は
普通はありえないよな

468 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 12:59:36.57 ID:9rLOEiC0.net]
>>459
>>455も設定先はstaticでしょ。そうしないとエラーになるはず

469 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 14:07:24.95 ID:8ZN9Ra/9.net]
キャッシュが影響するのはRegex.IsMatchみたいな静的メソッド使うときだけ
new Regexする時はキャッシュ関係ないと思う

あと、フィールドの初期化はわかりにくいので軽くて副作用のないものだけにした方が良い
正規表現の作成が時間食うなら、コンストラクタで行った方があとあと変更するときによい

470 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 14:32:08.61 ID:ZQIWZdV9.net]
>(あまりProgram.csは触りたくないけど)
ドンドン触れ!
変なこだわりは捨てるべき

471 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 16:30:39.28 ID:SuPtWdia.net]
分かっててあえてやってるなら大きなお世話かもしれんけど、
そもそも処理をFormに書いちゃうところから間違ってるな

472 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 18:25:04.69 ID:9rLOEiC0.net]
>>464
世話焼くならForm1って名前からにしろ

473 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 18:42:35.17 ID:L/PQ4lRu.net]
自前で適当に作ってる自分用アプリならネーミングセンス(とデフォルト名変更)についてとやかく言う必要は無いがな。

474 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 19:02:21.05 ID:YyXkI5ew.net]
Form1とかの名前、あれはもうつけかえるのはやめにしたんだ



475 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 19:07:08.15 ID:BtzSATc1.net]
ListViewのItemを高速に消す方法はないでしょうか?
BeginUpdateをしていても遅くて。3万件のItemから29800件消すといった場合です。

476 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 19:17:12.33 ID:htA28gv+.net]
>>459 >>462
インスタンスの場合はキャッシュ関係ないんですね…勘違いしてました

>>458後半
コンパイルすればキャッシュは無関係、というわけではなかったと思います
キャッシュが少ない状態で何種類ものパターンで静的メソッド(コンパイルオプションつき)を使うと
何度もコンパイルされる羽目になるはずです

>>463
キャッシュの拡大はRegexを使うクラス内に書いておきたいという気持ちがあるんですが
「なるべく早めに」ということならやはりMain()&#8206;に書いた方がいいのかなあ…

477 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 19:19:43.47 ID:0TBYagU6.net]
つうかいいか
そういうのはコードじゃなくて設定ファイルに書くもんだよ

478 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 19:22:20.67 ID:wTYgtvkF.net]
>>468
コントロールを再作成して必要な分だけ追加したら?

479 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:00:23.99 ID:g6CF/PBV.net]
>>468
その前に3万件追加した作業が無駄だよね
0件から200件追加することが出来ないのかプログラムを見直すべき

480 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:24:13.29 ID:BtzSATc1.net]
>>471
ありかもしれません。

>>472
追加と削除のタイミングが違うので・・・

481 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:32:26.08 ID:moWXVb0v.net]
仮想化しててもそんなに遅くなるもんかね

482 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:33:06.95 ID:g6CF/PBV.net]
>>473
3万件をスクロールして閲覧する用途が有るはずもなく、最初から考えが間違っているんだよ
とはいえ、割りとありがちなんだけどね

483 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:46:01.62 ID:iMqvKcIt.net]
VirtualModeなら速いんでねの?

484 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 20:48:19.32 ID:0TBYagU6.net]
お客様は何万件でも表示させるといったらPGが死んでも表示させる
もちろんパフォーマンスの低下は許さない
つまりこれは現実的な用件なんだよね



485 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 21:14:17.86 ID:f57StUOL.net]
御意!

486 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 21:45:14.07 ID:BtzSATc1.net]
VirtualMode速すぎる
なんだこれ
これを待ってました。

487 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 21:53:53.30 ID:mMrYCd0+.net]
Formsは長いことやってたんだけど.net coreでのWebシステムって容易く出来るんけ?
PHPでのMVCフレームワークとかrailsはわかる

488 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 22:08:22.01 ID:0TBYagU6.net]
基本がしっかりしてれば簡単だよ
そのためにUIフレームワークに依存しないように作れっていつも言われるだろ

489 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 22:09:21.73 ID:mMrYCd0+.net]
>>481
さんくす
手を出してみるわ
何を選んでもMFCのドキュメントビューよりは良いだろうってのが心の拠り所です

490 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 22:28:44.20 ID:moWXVb0v.net]
仮想化せずにListViewで3万アイテム扱ってたのか・・・

491 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 22:31:16.68 ID:BtzSATc1.net]
仮想化するとInsertionMarkが使えないみたいです。
どうしましょうか?

492 名前:デフォルトの名無しさん mailto:sage [2016/12/10(土) 23:55:43.96 ID:VtzX6XaJ.net]
>>468
発想を変えて、ListViewを作り直したら?

493 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 07:29:54.22 ID:9qlRR3sU.net]
>>484
WM_SETREDRAWで描画停止してやれば、Virtualでなくても3万件ぐらいいけると思う。
やり方は、検索すれば出てくる。

494 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 08:09:32.73 ID:tSe+v4ik.net]
3万件用と200件用は別のListViewを用意して、Visibleで切り替えるとか



495 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 10:51:04.21 ID:rgeKQ1h1.net]
質問させてください。
Microsoft Press の「プログラミング.NET Framework 第2版」という本に、下記の記述があるのですが、

【【【【【引用ここから】】】】】
internal sealed class Transaction {
 private DateTime timeOfLastTransaction; // 最後にトランザクションが行われた時間を記録するフィールド

 public void PerformTransaction() {
  Monitor.Enter(this); // thisオブジェクトのロックを取得
  // トランザクションを実施...

  timeOfLastTransaction = DateTime.Now; // 直前のトランザクションの時間を記録
  Monitor.Exit(this); // thisオフジエクトのロックを開放
 }

 public DateTime LastTransaction { // 最後にトランザクションが行われた時間を返す読み取り専用プロパティ
  get {
   Monitor.Enter(this); // thisオブジ工クトのロックを取得
   DateTime dt = timeOfLastTransaction; // 最近のトランザクションの時間を一時変数に保存
   Monitor.Exit(this); // thisオブジェク卜のロックを開放
   return dt; // 保存された日時を返す
  }
 }
}
【【【【【中略】】】】】
プロパティの実装でEnterとExitと一時変数dtが必要なことに注意してください。
破壊されている可能性のある値を返さないようにするために、これが重要です。
あるスレッドがPerformTransactionを呼び出している問に別のスレッドがプロパティにアクセスすると、これが起こりえます。
【【【【【引用ここまで】】】】】

Monitorでロックをしてるのに、なぜ「あるスレッドがPerformTransactionを呼び出している問に別のスレッドがプロパティに
アクセスする」ことがありえるのでしょうか?

496 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 11:00:53.02 ID:E1v0n/uN.net]
>>488
プロパティの実装でEnterとExitと一時変数dtが必要なことに注意してください。
破壊されている可能性のある値を返さないようにするために、これ(enter/exit/dtの存在)が重要です。
(enter/exit/dtが存在しないなら、)あるスレッドがPerformTransactionを呼び出している問に別のスレッドがプロパティにアクセスすると、これ(破壊されている値を返すこと)が起こりえます。

つまり(きちんと)ロックしてるならアクセスすることはない

497 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 11:14:59.06 ID:rgeKQ1h1.net]
すみません。質問の書き方がマズかったですね。
それと、もう一度自分でよく考えて、自己解決しました。

疑問に思ったのは、

・複数スレッドが同時にアクセスしないようにするために、EnterとExitが必要なことは
 わかるが一時変数dtはなぜ必要なのか?
・Enter〜Exitでロックしてても、PerformTransactionの呼び出し中に別スレッドが
 アクセスすることがありえるのか?
・その問題を回避するために、いったん一時変数dtに退避する必要があるという意味か?

ということでした。

しかし、よく考えれば、疑問が解消しました。

・dtが無いとreturnで値を直接返すことになる
・そのためにはreturnをEnterとExitで囲む必要がある(がそんなことはできない)
・だから、dtに入れてる

ってだけのことですね。お騒がせしました。
回答いただいた方、ありがとうございました。

498 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 14:59:01.41 ID:o/YiWCEr.net]
>>486
WM〜でなんかやるならInsertionMark云々だって自己解決できるような気が

499 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 22:39:52.04 ID:9qlRR3sU.net]
>>491
描画止めるくらいであればウインドウメッセージとかよくわからなくてもググって数行コピペするだけで出来るし、既に非Virtualで作ったものをVirtualに変更するより手っ取り早いかなと思って。

500 名前:デフォルトの名無しさん mailto:sage [2016/12/11(日) 23:37:43.42 ID:rW4zRmsa.net]
InsertionMarkってNearestIndexが使えないだけみたいで
そこだけ計算で出してやれば使えました。
お陰で高速な動作ができるようになりました。ありがとうございました。

501 名前:デフォルトの名無しさん [2016/12/14(水) 22:10:21.05 ID:zGQk9RuM.net]
正規表現Regexのインスタンスを作る際の文字列指定をするときに、
@を先頭につけているのを見るのですが、
これはどういったことでしょうか
必要なのでしょうか

502 名前:デフォルトの名無しさん mailto:sage [2016/12/14(水) 22:16:24.21 ID:LQhYfqJw.net]
>>494
\を大量に書かなくていいようにするため

503 名前:デフォルトの名無しさん mailto:sage [2016/12/14(水) 23:05:36.02 ID:PdV20HuV.net]
Rubyには、こういう関数があるけど、C#には無いの?

rp = Regexp.escape("$bc^")
\$bc\^

Regexp.escape(string) -> String
string の中で正規表現において、特別な意味を持つ文字の直前に、
エスケープ文字(バックスラッシュ)を挿入した文字列を返します

504 名前:デフォルトの名無しさん mailto:sage [2016/12/14(水) 23:08:32.15 ID:+dTErpY/.net]
そのまんまのがあるが
Regex.Escape(string)



505 名前:デフォルトの名無しさん [2016/12/14(水) 23:16:39.96 ID:zGQk9RuM.net]
>>495
494です
ありがとうございます

506 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 08:46:01.32 ID:3NUBKOAZ.net]
完全に市場はJavaの圧勝が決まったようだ。

507 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 12:09:47.56 ID:VtGam84M.net]
>>499
へーすごいね

508 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 12:57:24.49 ID:4tPXC7sh.net]
金箔貼っても糞は糞。を思い出した。

509 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 13:45:31.77 ID:7KRIzock.net]
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja

510 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 13:55:12.96 ID:8Dy0z+2t.net]
chrome.webRequest.onBeforeRequest.addListenerでこれブロックしてる
"*://b.st-hatena.com/*",
"*://b.hatena.ne.jp/entrylist/*",
"*://b.hatena.ne.jp/entry/image/http*",
"*://b.hatena.ne.jp/entry/json*",
"*://b.hatena.ne.jp/bc/or/http*",
"*://api.b.st-hatena.com/entry.count*",
"*://cdn-ak.b.st-hatena.com/*",

511 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 19:32:58.03 ID:aesj07do.net]
c#で書かれた解析機を吐き出すyaccみたいなツールってないの?

512 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 20:28:20.48 ID:u3iwxuUX.net]
自分に合ったのを探せ
https://en.wikipedia.org/wiki/Comparison_of_parser_generators

513 名前:デフォルトの名無しさん [2016/12/19(月) 00:22:28.34 ID:hPPOameE.net]
テキストボックスでValidatingを実装し、e.cancel=trueにした場合について2つ質問があります。
1.フォームの×ボタンを押してValidatingが発生しe.cancel=trueになっても、form.closingを実装するとフォームを閉じれるとネットブログであったのですが、
これはどういった仕組みでしょうか?
cancelになっても別のコントロールについては実装すれば、その処理が走るのでしょうか。
また、msdnでのそこに関する説明はどこにありますでしょうか?
2.そもそも,フォームの×ボタンでValidatingを走らせないようにするにはどうしたらいいでしょうか?

514 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 14:59:52.95 ID:/uogIQCg.net]
2つと言いつつ1に3つぐらい質問があるように見える

> form.closingを実装するとフォームを閉じれる
実装するとじゃない。
Closingイベントのイベントハンドラでe.Cancelをfalseに設定したら閉じられる。

> これはどういった仕組みでしょうか?
Validatingで設定したe.CancelがClosingで設定されるe.Cancelで上書きされるだけ。

> cancelになっても別のコントロールについては実装すれば、その処理が走るのでしょうか。
ちょっと何言ってるか分からない。

> msdnでのそこに関する説明はどこにありますでしょうか?
ValidatingとClosing(FormClosing)のページにないんなら、ないんじゃない?

> フォームの×ボタンでValidatingを走らせないようにするにはどうしたらいいでしょうか?
WM_CLOSEをハンドルする方法とか提案されてる
d.hatena.ne.jp/dotnetmemo/20060702/1151839515



515 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 21:55:11.26 ID:m20BeiOW.net]
前から疑問だったんだがValidatingでフォーカス移動封じるタイプのUIって誰が得するんだ?

516 名前:デフォルトの名無しさん mailto:sage [2016/12/19(月) 23:07:10.38 ID:nxaByp7v.net]
開発者の保身に役立つ
ユーザビリティ何それ

517 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 22:02:28.59 ID:OBoWPQLO.net]
VisualStudioでスキャフォールディングっていうの?
あのC#コード生成ってどうやってんの?
右クリックメニューのコマンドで画面開いてパラメータ入力したらコードがいくつかババっと出力されてプロジェクトにインクルードされて時にはconfigまで書き換わるあの便利なやつ

518 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 22:13:35.55 ID:I2xL3xVw.net]
子供発見

519 名前:デフォルトの名無しさん mailto:sage [2016/12/21(水) 23:15:00.27 ID:EydnUon0.net]
>>510
テンプレートで生成してるだけだよ
自分で同じようなことやりたければT4でも調べてみたら

520 名前:デフォルトの名無しさん [2016/12/22(木) 00:41:34.58 ID:0KrqUh09.net]
>507
506です。遅くなりましたがお答えありがとうございます。

補足で質問です。
> cancelになっても別のコントロールについては>実装すれば、その処理が走るのでしょうか。
ここに関しては、validatingでe.cancel=trueにしたら、そもそもclosingが走らないかと思っていたのですが、そういうことではないのでしょうか。validatedまでキャンセルになるということでしょうか。

521 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 00:52:26.00 ID:3F8kH50r.net]
closingにデバッグポイント置いてそこで停まったら実行されるってことだろ
そんくらいもできないのかよ

522 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 10:02:04.72 ID:i/pZa1E8.net]
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja

523 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 10:12:48.15 ID:hYDEOt1H.net]
mbgdnfmdelffjdhkdggilmphfdihnmcj をNGワード設定だな。この開発者そこらに張りまくってやがる

524 名前:デフォルトの名無しさん mailto:sage [2016/12/23(金) 13:13:48.39 ID:/B2iyB1G.net]
そうなの?登録しとこっと…ハッ



525 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 06:16:26.82 ID:WEJSRv5C.net]
PythonのコードをC#で書き直してるんだけどさあ
C#で関数の引数に関数を指定することって出来ないのかな?

具体的にしたいことは関数の傾きを求めることで、たとえば適当な関数
float A(float x){return x^2;}
があったときに、傾きを求める関数
float B(関数, float x){return xでの傾き;}
みたいなものを作成して
d = B(A(), 0.1f);
のような呼び出し方をしたいんだけど・・・・なにかそれに近いC#のコードの記述方法ってないかな?

526 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 06:53:00.31 ID:kPI05Gb3.net]
delegate じゃ駄目なの?

527 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 06:56:25.78 ID:iV5eYun0.net]
float B(Func<float, float>, float) ということなのかな

528 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 07:23:08.42 ID:WEJSRv5C.net]
>>519-520
デリゲートを使うのが一番近い記述ができるのかな?
そうするとミスって複数メソッドを登録したときの処理も記述しとかなきゃなんないかな・・・・

529 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 07:41:28.77 ID:qXNVWWNf.net]
>>518
関数を引数にしたいなら520でいいけど

そもそもC#で任意の関数を引数にして傾きを求めるのは無理だと思うよ
引数の関数が微分可能かどうか(下手すると連続かどうか)も保証されてないのに

530 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 09:21:29.09 ID:3LTJc3r/.net]
微分可能であることの保証ができないなんてどの言語でも一緒だろ
イベントハンドラ以外のデリゲートでマルチキャストを使う馬鹿もいない(いたら今すぐやめろ)から無視していい
あとそういう計算にfloat使うと激しく誤差が出るからfloatじゃなくてdouble使え
Pythonの浮動小数点数もdouble精度だ

531 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 10:31:06.47 ID:dPbQS77J.net]
>>522
微分可能とか最近覚えた用語を使いたくてしょうがないんだな w

532 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 10:37:23.24 ID:qXNVWWNf.net]
あらかじめコーディングされた関数たちしか使わないなら、導関数も事前に用意しておけばいいよね

>>523
mathematica等の数式処理言語ならできるよ

533 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 12:25:20.15 ID:1tLIoM8k.net]
関数の数値微分は機械学習とかシミュレーションとかで普通に使うぞ

534 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 15:05:19.64 ID:uriaUnJG.net]
数学とC#の関数の定義の区別ができないお子ちゃまですか。



535 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 15:50:11.41 ID:IXC75mXH.net]
おまえはC#の関数で、俺は数学の関数だ!
そこになんの違いもありゃしねぇだろうが!

536 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 15:52:59.52 ID:51ELz7Bu.net]
空のWebアプリプロジェクトからASP.NET MVCをインストールして適当にビューを作ったんだけど
マークアップエディタのインテリセンスにViewBagがないって怒られます
コードエディタでは普通にViewBagにアクセスできます
これはいったいどういうことなんでしょうか

537 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 16:49:07.86 ID:uriaUnJG.net]
式をこねくり回したいんだろう。

自分ですうしきクラスを作れよ。

538 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 17:01:13.35 ID:WEJSRv5C.net]
>>522
たしかに解析的に正しい微分できないけど、僅かにXをずらしてそれっぽい数値を出したいんです

539 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 17:07:45.02 ID:3KzFEnUI.net]
微分可能かとどう実装するかは別の問題だからどうでもいいなw
ちょっと大げさめだが、俺ならinterface使う

540 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 18:08:40.53 ID:2kirY5E3.net]
>>531
何が言いたいのかよく分からんけど普通にこういうのじゃいかんの?
static double GetSlope(Func<double, double> func, double x, double delta = 1e-6)
{
  var left = func(x - delta/2);
  var right = func(x + delta/2);
  return (right - left) / delta;
}

541 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 19:30:16.14 ID:dPbQS77J.net]
>>533
いや実装方法はわかってるでしょ
python からの移植なんだし
>>531>>522 が微分可能とか言い出してるからそれへの説明だと思うぞ

542 名前:デフォルトの名無しさん mailto:sage [2016/12/24(土) 22:57:47.19 ID:ZPnvY2Gu.net]
>>524
えっ?

543 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 01:15:18.80 ID:2bXL0gSr.net]
音声付の外国語の単語学習アプリを
作ろうとしてます。
数千の単語の音声を、少数のファイルで扱うには
どのような方法使えばいいんでしょうか?

544 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 02:05:37.96 ID:1Va0hmvu.net]
全部つなげて1つのファイルにしておいて、
欲しい時にはその単語データのオフセットと長さを指定して取り出して再生、かな



545 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 02:11:45.12 ID:xhZEf65t.net]
圧縮された音声データでそんな高精度のシークが可能なのかなw

っていうか、今時のWindowsってたいがいの言語の音声合成エンジンがタダで提供されてなかったっけ?

546 名前:デフォルトの名無しさん mailto:sage [2016/12/25(日) 02:18:12.49 ID:tQvSe6Qr.net]
>>538
バイト配列にしてつなげてサイズと順番のインデックス作ればいいだけ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef