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


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

ふらっと C#,C♯,C#(初心者用) Part136



1 名前:デフォルトの名無しさん mailto:sage [2018/03/03(土) 15:09:05.75 ID:SBEkwl3H.net]
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part95
mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part135
mevius.5ch.net/test/read.cgi/tech/1517749348/

■コードを貼る場合は↓を使いましょう。
ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
referencesource.microsoft.com/
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

511 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 19:29:35.04 ID:RopZoVkn.net]
>>499
> 例えば Where(…).DefaultIfEmpty(-1).First() みたいなこと?
そう。元のコレクションに -1 があったら使えないけど

512 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 20:06:30.63 ID:WPuMsPfE.net]
>>494
プログラマなんざ99%キチガイだから正しいだろ?
根拠あげろって?皆さんが根拠だろうにご冗談を

513 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 20:49:58.95 ID:emfSYqOj.net]
public static class MyLinqExtensions {
public static T? FirstOrNull<T>(this IEnumerable<T> s) where T : struct {
foreach (var i in s) return i;
return default(T?);
   // return s.Cast<T?>().FirstOrDefault();
}

public static void ForEach<T>(this IEnumerable<T> s, Action<T> a) {
foreach (var i in s) a(i);
}
}

class Program {
static void Main(string[] args) {
var s = new [] {7, 0, 1, 2, 13, 3, 4, 5};

var x = s.Where(i => i >= 11).FirstOrNull();
if (x != null) Console.WriteLine(x);

s.Where(i => i >= 11).Take(1).ForEach(Console.WriteLine);
}
}

514 名前:デフォルトの名無しさん [2018/03/24(土) 22:39:25.79 ID:eOg1kWoS.net]
俺、そんな大ごとになるようなことを聞いちゃったのかな・・・・・

515 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 22:41:42.98 ID:Y93sH5Wg.net]
このスレはlinqを異常に嫌っているおじいちゃんが生息してるから注意してね

516 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 22:43:55.34 ID:Y8GXLzWd.net]
>>503
週末よくある光景だから気にすんな

517 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 22:49:20.91 ID:NMOsnRxi.net]
WEBサイトのデータを取得するコードを書いているのですが
サーバのデータを書き換えて、クライアントからアクセスしても
キャッシュされた値が取得されてしまい困っています。

キャッシュポリシーというのでキャッシュしない設定が出来る様です。
以下コードを書きましたが、エラーが出てしまいます。

何が原因なのでしょうか?


using System.Net; //WebClient
using System.Net.Cache;

****************************************************

HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;

******************************************************

エラー
Error 8 The type or namespace name 'HttpRequestCachePolicy' could not be found (are you missing a using directive or an assembly reference?)
Error 11 The name 'request' does not exist in the current context
Error 10 The name 'HttpRequestCacheLevel' does not exist in the current context

518 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 22:57:42.79 ID:ADnClyNC.net]
>>506
コードも張らないとアドバイスできんがな

519 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:01:20.44 ID:NMOsnRxi.net]
>>507



WebRequest req_1 = null;
req_1 = WebRequest.Create(str_url);
res = req_1.GetResponse();

でWEBサーバに設置したデータを取得しています。



520 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:03:09.08 ID:S2nO/hPq.net]
>>506
https://msdn.microsoft.com/ja-jp/library/system.net.cache.httprequestcachepolicy(v=vs.110).aspx
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
WebRequest request = WebRequest.Create(uri);
request.CachePolicy = noCachePolicy;
uriに文字列設定したら普通にビルド通るけど、他に何やってる?

521 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:04:36.74 ID:NMOsnRxi.net]
>>509
ありがとうございます。
凡ミスしてました!

using System.Net.Cache;

を別のソースファイルに書いてました、、、

522 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:07:50.50 ID:bzBaKL6p.net]
なぜいまどきWebRequest?

523 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:11:22.61 ID:NMOsnRxi.net]
エラーは消えましたが、WEBサーバ上で書き換え前の値が取得されてしまいます。
うーん、キャッシュポリシーの設定はあっているはずなのですが。
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;

524 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:13:30.74 ID:NMOsnRxi.net]
>>511
今ナウいのは何に使うんですか?


WEBサーバ上にはというファイルをおいてます。
[ hoge_status.dat ]
1,aaa
2,bbb
3,ccc

そして、サーバ上で「2,bbb」→「2,babaa」に
書き換えて、クライアント(C#)から上のコードを実行した時に
「2,bbb」が取得されてしまいます。

525 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:16:00.40 ID:rHDBuOYV.net]
https://code.i-harness.com/ja/q/81ef3

526 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:24:46.34 ID:NMOsnRxi.net]
ありがとうございます。
サイトに記載の内容を参考に↓のコードを書きました。


namespace ns_test
{
public class c_udoxn
{
[DllImport("WinInet.dll", PreserveSig = true, SetLastError = true)]


Error 29 The type or namespace name 'DllImportAttribute' could not be found
(are you missing a using directive or an assembly reference?)

すると今度は、DllImportAttributeが見つからないというエラーがでます。
何か間違っていますか?

527 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:27:01.58 ID:NMOsnRxi.net]
using System.Runtime.InteropServices; // DLL Import

これでエラー消えました。

528 名前:デフォルトの名無しさん mailto:sage [2018/03/24(土) 23:32:05.55 ID:NMOsnRxi.net]
解決しました!!
ありがとうございました!

529 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 00:22:20.31 ID:30He22WI.net]
How can I view the allocation unit size of a NTFS partition in Windows 10?



530 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 02:55:25.41 ID:QkJGWpF+.net]
>>518
fsutil fsinfo ntfsinfo

531 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 02:58:05.04 ID:Z3IDZNHN.net]
>>511
>>513
いまだとHAPかな?

532 名前:デフォルトの名無しさん [2018/03/25(日) 03:08:23.05 ID:eoB6ZVmc.net]
特定のクラスのインスタンスを探したり列挙したりすることって出来ないのでしょうか?

A a = A();//オブジェクトの生成をどこかに記録するとか面倒なこと無しに
A b = A();
A c = A();
FindObjects(A).ForEach(・・・・・);//雰囲気としてはこんなことがやりたいんです

533 名前:デフォルトの名無しさん [2018/03/25(日) 03:09:02.83 ID:eoB6ZVmc.net]
嗚呼、今見たらnewが抜けてた・・・・

534 名前:デフォルトの名無しさん [2018/03/25(日) 06:50:33.94 ID:ODva5YKs.net]
コンパイラの選択次第で出来上がりの性能でそんなに変わる?

535 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 07:44:12.53 ID:iS73Z4MS.net]
>>521
できない
お前が言ってるのを実現してしまったら、
var a = new Message(text: "うんこ");
a.Print(); //textに渡した内容を出力する
で一行目と二行目の間にaの内容が勝手に他所から書き換えられている可能性を常に考慮しないといけなくなるんだぞ?
初心者ならピンとこないかもしれないけどね
初心者がプログラミング言語を学ぶときは常に以下のように考えることが大切
・これを作った人は自分より遥かに頭が良く経験豊富である
・普通の方法でできないのは、それが悪いことだから

536 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 08:04:35.72 ID:vPJlyNvz.net]
>>521
コンストラクタでどこかに記録しときゃいいだけじゃね?
任意のクラスでやりたいならコンパイラに手を入れるなりしないと無理

537 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 09:55:55.34 ID:Z3IDZNHN.net]
>>521
生成後、List<A> Alistにaddすれば可能。

538 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 10:33:10.02 ID:sIW0PrXb.net]
グローバル変数が大好きなんだな

539 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 10:36:47.24 ID:XLrMHO3h.net]
時代はグローバル



540 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 10:37:55.50 ID:5WPMat6H.net]
>>521
class A{
 public static readonry List<A> allList = new List<A>();
 public A(){
  allList.Add(this);
 }
 public void Dispose(){
  allList.Remove(this);
 }

自分ならこうやってクラス内のstaticに入れておく

541 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 10:40:15.38 ID:BGDDphgd.net]
>>521
参照するだけなら自分に属しているフォームやクラスは列挙できるだろ
あとは名前で探せよ

542 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 10:54:23.63 ID:5WPMat6H.net]
明示的にDisposeを呼ぶのが面倒というなら、
リストに入れるのを弱参照にしてデストラクタを実装すれば全自動に出来るよ

543 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 10:57:31.10 ID:BGDDphgd.net]
>>531
探して代入したものでDisposeやCloseもできる。インスタンスの書き換えはできない
521が何のためにやりたいかによる

544 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:09:02.92 ID:Ol/c1EKt.net]
レガシーシステムで一番困るのはグローバル変数
これ以外は簡単にリファクタリング出来るがグローバル変数だけは簡単にはいかない

545 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:20:06.56 ID:vPJlyNvz.net]
普通の知能持ってたら>>529みたいにクラス内のスタティック変数でやると思う
グローバル連呼してる奴は知能足らなさすぎじゃね?

546 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:21:28.40 ID:Kz38QhUD.net]
他言語のグローバル変数マンがpublic staticマンになる

547 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:31:07.75 ID:sIW0PrXb.net]
>>534
ただ、
UnkoWorld-●UnkoArea-●Unko
みたいな関係にしたくなったとき
それでやってると
ウンコみたいにウンコウンコになるんちゃう?

548 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:34:42.78 ID:Ol/c1EKt.net]
>>534
パブリックなら同じ
最初に書くときにらくだからって堕落して思考停止してグローバルを使うと
だんだん考える力が衰えてこういう判断ができなくなる

549 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:40:28.11 ID:Ol/c1EKt.net]
パブリックスタティック書くお^q^
グローバル連呼は知能がたらないお^q^
ぼくはかしこいんだお^q^
おっおっ^q^


これがグローバル変数を使う人間の末路です
恐ろしですね



550 名前:デフォルトの名無しさん [2018/03/25(日) 11:42:06.07 ID:hyW7/lyL.net]
末期やな>>538のグロ厨

551 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:42:40.12 ID:sIW0PrXb.net]
俺も一瞬いいかな?
とか思ったけどpublicにされた時点ですべてが駄目なことに気づいた

552 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:45:41.52 ID:/CvrewET.net]
具体的にどういうときにそうしたくなるか書いてあればヒントがでてくるかもしれないけど
一般的になんでもかんでもそうしたいと言うのはNGだと思う

553 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:53:10.41 ID:yM5ntbb+.net]
>>529のケースだとpublicにする必要ないよね

554 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 11:58:50.34 ID:/CvrewET.net]
ローカルで使い捨て目的でAを作ったとしても
明示的にdisposeしないと消えない
c++のnew deleteのメモリリーク問題を回避するためにガベージコレクションの仕組みができたのに
また逆戻りするだけ

555 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:01:37.82 ID:Ol/c1EKt.net]
privateならOKってのも短絡的だよな
独立に生成したはずのオブジェクト同士が外から見えない部分で密かに連携し合っているとか破滅の臭いがプンプンするぜ

556 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:02:42.33 ID:sIW0PrXb.net]
>>542
>>529はNG
こうやって使いたくないときもこうなっちゃうじゃん
static抱えちゃうのは悪手

557 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:10:21.24 ID:/CvrewET.net]
public じゃなかったらどうやって要素を列挙するんだよ

558 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:15:08.82 ID:sIW0PrXb.net]
>>546
多分仕様がウンコ
客と詰めきれてない
コードばっかり見てるとバカになるやつの典型
外の空気でも吸ってきたらよい

559 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:16:49.43 ID:vPJlyNvz.net]
>>546
えっ? w

まあパブリックにしても外部から書き換えられないなら大抵は問題ない
>>537とかはパブリックと言うだけで思考停止してる老害なんだろうな



560 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:20:32.55 ID:/CvrewET.net]
>>548
えじゃねーよ
考えてなかっただろ

561 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:22:41.04 ID:yM5ntbb+.net]
>>545
フレームワーク側でstaticをガンガン使ってるけどそれには文句言わないの?

562 名前:デフォルトの名無しさん [2018/03/25(日) 12:26:42.83 ID:eoB6ZVmc.net]
そうか、>>521で書いちゃったのが実現できるようにすると、いつまでもインスタンスへの到達可能性が残ってGCが機能しなくなるのか
全然わからなかったわ

563 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:27:48.76 ID:/CvrewET.net]
>>551
そういうこと
目的を絞った特殊な状況でしか使えない

一般的に使うのはNG

564 名前:デフォルトの名無しさん [2018/03/25(日) 12:29:14.40 ID:hyW7/lyL.net]
>>551
ならんわw

565 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 12:42:56.52 ID:PVODPgu2.net]
いつもそうだけど、本質を少しも突かない頭の悪いやり取りしかないねw

論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
俺はないことはないと思う。

ただ、揚げ足取りかもしれんが、>>529はList<T>をそのまま公開してるのはまずい

566 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 13:09:44.61 ID:5WPMat6H.net]
>>554
実際やるときはさすがにprivateにしてstatic ForEachを実装するし、
ライブラリ化するならセーフティとしてリストをWeakReference<T>にしてデストラクタで自動削除するよ
ただ掲示板でそこまで長々と書く気はないだけで

567 名前:デフォルトの名無しさん [2018/03/25(日) 13:13:01.00 ID:Tb46nDVy.net]
指定の時刻を過ぎたらbackgroundworkerを止める仕組みを作りたいのですが
なにかおすすめの方法はありますでしょうか?

568 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 13:27:59.98 ID:lVxRvEma.net]
>>555
クラスの扱いの話がクラス自身を変更しちゃってる実装に違和感

569 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 13:51:57.79 ID:JPEij3S4.net]
>>556
それだけだとどこで時間を確認するべきかすらわからん
仕様きちんと決めてから質問して



570 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 13:55:31.94 ID:5MzIJnBg.net]
>>549
はあ?
そう言うイテレーター作る

571 名前:だけだろ w []
[ここ壊れてます]

572 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 14:09:46.22 ID:5MzIJnBg.net]
>>551
デストラクタでリストから外せばいいだけ
もしくはIDisposableにしてdispose( )で外すとかでもいい

573 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 14:39:30.42 ID:HUiARVtR.net]
>>560
参照が残った状態でデストラクタが働くの?

574 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 14:41:03.20 ID:5WPMat6H.net]
>>561
世の中には弱参照というものがあってな

575 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:22:13.04 ID:Ol/c1EKt.net]
そういやここ初心者スレだったか
>>548みたいなのも居るか

576 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:29:41.34 ID:Zk7ZAw6P.net]
また元の質問者蚊帳の外に置いて盛り上がっている
オレオレ仕様で議論されても誰の役にも立たないんだよ

577 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:39:34.96 ID:vPJlyNvz.net]
>>563
グローバルガーって知ったかして恥ずかしいからって粘着するなよ w

578 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:40:34.61 ID:Ol/c1EKt.net]
>>565
は?

579 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 15:48:44.21 ID:XJO2spvZ.net]
初心者スレでマウントするイキリオタクにはなりたくないね



580 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:05:42.72 ID:vPJlyNvz.net]
グローバルガーでマウント取ろうとして失敗したID:Ol/c1EKtをそこまでバカにしてやるなよ w

581 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:28:46.20 ID:n/bZLhLz.net]
インスタンス生成と生成されたインスタンスをコレクションに追加するのは別のクラスの役割

>>521はコレクションの要素を型でフィルタリングできたらいいわけだから素直に実装したほうがいい

582 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:28:46.85 ID:rmzLSBrs.net]
よう分かりませんけど、このスレをプリントアウトして明日朝一番で精神科にかかることをお勧めします
このIDが僕です!って正直に言うんだよ

583 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:46:03.35 ID:TrFdb9nA.net]
>>569
わざわざクラスを増やす必然性はないだろ

584 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:50:54.77 ID:5WPMat6H.net]
>>569
クラス単体で閉じてる機構をわざわざ外部に別けて何がしたいんだよ
メンテナンス性が下がるだけじゃん

585 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:55:50.35 ID:sIW0PrXb.net]
>>572
いや、この仕組みが入っているがために使えない状況が出てきちゃうんじゃね?

586 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 16:57:56.62 ID:sIW0PrXb.net]
本来クラスAがクラスA足る為に必要な処理じゃないんだよ
リストに追加なんてのは

587 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:00:09.33 ID:n/bZLhLz.net]
>>571
>>572

きみたちマジか!!
オブジェクト指向設計原則の基礎だぞ
それを破るだけのメリットがあるユースケースなのかな?

588 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:11:36.39 ID:5WPMat6H.net]
>>573-575
そこまで言うなら実際に書いて見せてみろ?

589 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:19:41.51 ID:sIW0PrXb.net]
>>576
普通にlist外に出せよ



590 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:27:26.70 ID:+wly4/Cl.net]
>>577
グローバルがだいしゅきなの?

591 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:35:09.99 ID:vPJlyNvz.net]
>>577
へっ?
外出ししてグローバルにしろとでも言うのか? w

592 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:37:41.15 ID:+wly4/Cl.net]
>>575
型として絶対使わない機能を分離してどうするの?
オブジェクト指向の目的もしかして理解してない?

593 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:38:38.10 ID:sIW0PrXb.net]
>>579
誰もグローバルなんて言ってないけど
どっから出てきたん?

594 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:44:59.40 ID:+wly4/Cl.net]
>>581
どこの誰がどんなスコープでList持つ想定でいるの?

595 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:45:57.80 ID:sIW0PrXb.net]
>>582
まあ、それ次第だよな

596 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:49:26.15 ID:+wly4/Cl.net]
>>583
A.ForEachでアクセスする変数をA以外に持たせたら漏れなくグローバルになるけど、何を思ってAの外に出せと言ったの?

597 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:50:30.14 ID:sIW0PrXb.net]
>>584
ならねーよ
死ねよ

598 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:50:49.15 ID:vPJlyNvz.net]
>>581
なら
> 普通にlist外に出せよ
のlistをどこに置くのか言ってみろよ

599 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:52:11.71 ID:sIW0PrXb.net]
>>586
使うやつが勝手に作ればいいじゃん
クラスAにはなんの関係もないことだ



600 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:52: ]
[ここ壊れてます]

601 名前:42.22 ID:vPJlyNvz.net mailto: はい、逃げた w []
[ここ壊れてます]

602 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 17:53:06.16 ID:sIW0PrXb.net]
>>588
は?どこが?

603 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:04:31.71 ID:5WPMat6H.net]
>>587
自身の生成したインスタンス一覧を保持するのはclass Aの基本要件だが、
何でお前はそれを無視してclass Aの仕様そのものを変えたがるんだよ

604 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:11:58.07 ID:sIW0PrXb.net]
>>590
え?要件定義でそんなの出てくるの?
頭おかしいからだろ?

605 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:12:36.02 ID:Vv01uOP7.net]
初心者がマウントのために吠えあうスレになってんなw
>>521は作成したインスタンスをコレクションで持っていれば終わる話なのに

606 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:13:47.46 ID:+wly4/Cl.net]
>>591
あたまわっるー

607 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:16:24.49 ID:a4i6A50g.net]
>>591
要件定義クソワロタwww

608 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:17:30.34 ID:sIW0PrXb.net]
>>592
だよね

609 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:17:53.31 ID:h+QwjUa5.net]
たった数行のコードなりUMLなり書けば伝わる話なのに、
何十行も日本語書き連ねて言い訳してる時点で初心者以下だと思うのね

俺の考えた設計が最高と思うならC#で書けよ
書けないなら黙れ、素人



610 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:18:45.66 ID:sIW0PrXb.net]
>>596
でもお前単発じゃん
ご自慢の主張したいコードが付いてないけど?

611 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:19:20.14 ID:xrxDySNz.net]
しょうもな
一般論を言えば>>587が正しいが、これでは質問者の要件は満たせない。

>587は必要があってシングルトンにしてるクラスについて、
そんなことしなくても使う側が一つのインスタンスだ作ればいいじゃないか、って言ってるのと同じ

612 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 18:23:46.34 ID:sIW0PrXb.net]
>しょうもな
>一般論を言えば>>587が正しい
ここで止めろよ
初心者の質問なんだからよ
正しいこと覆して話進める価値あるの?

613 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 19:06:07.44 ID:vPJlyNvz.net]
>>592
> >>521は作成したインスタンスをコレクションで持っていれば終わる話なのに
いや、そんなことはみんなわかっててそのコレクションをどこに置くんだって話
老害レベルの知ったかがグローバルとか口走ってごまかすのに必死になってるだけ w

614 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 19:43:00.47 ID:Ol/c1EKt.net]
グローバル変数を使うど素人はさっさと転職したほうがいいぞ

615 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 19:50:31.57 ID:XLrMHO3h.net]
え?まさかプロがこんな所覗いて浅い知識ひけらかしてる訳じゃないよな?

616 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 20:11:31.70 ID:sIW0PrXb.net]
>>602
時代はグローバル

617 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 20:13:55.09 ID:XLrMHO3h.net]
>>603
山田くん、座布団一枚!w

618 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 21:08:37.79 ID:ntckGCHi.net]
Nugetでdll等をインストールする時にApp.configも一緒に差し替える事って可能なのでしょうか?
無理ならApp.configを書き換える手段を知りたいです

EntityFrameworkをインストールするとプロジェクトのApp.configも一緒に書き換えられてると思います
これと同じことがやりたいです

619 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 21:18:29.22 ID:o6f1Dm/5.net]
>>520
しらなんだー
使ってみます!


仕事でプログラム組んでた時にはいろいろと新技術を追いかけて勉強してたんだけど、
仕事じゃなくなるととりあえず、やりたい事を達成する為に
必要な機能をおいかける様になりますな。



620 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 23:07:48.90 ID:30He22WI.net]
引数ありで起動した場合はフォームを表示させずに処理させたいんだけど……?(°_ 。)?(。_ °)?

621 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 23:12:48.41 ID:B8f0LaKL.net]
出来るよ

622 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 23:48:35.48 ID:n/bZLhLz.net]
>>576
>>580

あおりじゃなく君たちがマジだったってのはわかったよ
質問者が明示的に指定した要望を満たす事だけを考えてるから話が噛み合わなかったのね

指定されたwhat

623 名前:が正しい前提でhowを考えるか
正しくない可能性も考慮してwhyを含めて考えるか
視点の違い
[]
[ここ壊れてます]

624 名前:デフォルトの名無しさん mailto:sage [2018/03/25(日) 23:59:44.77 ID:fmRuNsvM.net]
「○○なことがしたいんだけど…」

「その要望は正しくないから考えを改めるべきだ!」

正しくないからやらない
プログラマとは思えない凄い斬新な発想だな

625 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:09:13.21 ID:v9FPJIaO.net]
素直に「ぼくにはできましぇん(泣)」って言えばいいのにね

626 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:11:47.31 ID:YTVmG1TL.net]
質問でも回答でもないレスは他でやれ
>>607
わかりやすい方法の一つ
Visual StudioでWindowsFormで作るとProgram.csが作られるから書き換える
static class Program
{
[STAThread]
static void Main(string[] args)
{
if (0 == args.Length)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
return;
}
//ここから下に引数があった時の処理
}
}

627 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:13:56.74 ID:m3Kkye2j.net]
とりあえず初心者用スレで語るの辞めてもらえませんか

628 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:16:17.47 ID:QH+aPMzj.net]
ヨーダ記法はやめてくれ…

629 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:24:06.83 ID:cY1aRMKv.net]
>>610
設計しない下請けプログラマー的発想だな



630 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:31:10.42 ID:XKiwACKR.net]
元請けだと実際>>610は普通にあるね
ほとんど全ての案件において、客の妄想のとおりに作るなんて不可能だし、できたとしても結果的に客の利益にならない

631 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:36:48.08 ID:PvcYNBhB.net]
>>615-616
よく知恵袋にいる質問者にSEKKYOしてる奴みたいなことしてんのか
お前らさては無職だな?

632 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:42:45.85 ID:vpzWQp7E.net]
またボケ老人同士のの繰り言合戦が始まった

繰り返すが、論点は>>521,>>529的な仕組みが必要になるケースがあるかどうか。
恐らくないことはない。

一般論としては要件の合理性に疑問を持つことは悪くないが、
上記の通りこの件に関してはただの言い掛かり

633 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 00:50:14.64 ID:Dv2PEULu.net]
より素晴らしい設計が本当に頭に浮かんでるならそれを見せればいいのにね
何も開示しない、ただ頭ごなしに否定するだけなら、言っちゃなんだけど何も作れない素人の戯言だよね

634 名前:デフォルトの名無しさん [2018/03/26(月) 02:26:07.62 ID:wzFW36Lw.net]
こういうコントロールの構造なんですが、Buttonがクリックされた時にTextBoxの文字を変更したいんですが、どうするのがベストでしょうか?
今は、Buttonから、ParentでFormまで辿って、そこからTextBoxまで辿り着いてるんですが、凄い非効率な気がします・・・

これと同じ構造のインスタンスが最大70個くらい出来ます。

Form - Panel1 - Panel2 - TextBox
    - Panel3 - Panel4 - TabControl - TabPage - Panel - Button

635 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 02:43:07.18 ID:cavhWqCs.net]
直接インスタンスを指定できないの?
private void Button_Click ( ... )
{
  this.HogeTextBox.Text = "hoge";
}

636 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 04:07:03.39 ID:AffV6ek/.net]
イベントメソッドの共通化や、自作のボタンクラスの話だったりといった特殊なことをしたいのかな?
普通は上にある通りクリックイベントでテキストボックスの値を変えるだけ70個ボタンがあるなら70個書けばいいだけなんだけど

637 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 07:56:24.40 ID:M54ZFy+S.net]
スタートボタンを押すとbackgroundworkerのwhileループを実行し、キャンセルボタンを押すと停止するプログラムを作りました

これを9時になると自動でスタートし、17時になると停止するプログラムにしたいのですがどうすればいいでしょうか?
自動停止時にはキャンセルボタンを押した時と違いそれ専用の処理を行いたいです。

638 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 08:10:40.35 ID:DzDpiGFR.net]
コントロールの種類・処理が異なるなら、
各コントロール毎に、イベントハンドラーを付ける

逆に、コントロールの種類・処理が同じなら、
各コントロールの親に、イベントハンドラーを付けて、親で処理する

同じような関数を、たくさん作るのは良くないから

639 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 08:15:42.61 ID:DzDpiGFR.net]
>>623
「windows タスクスケジューラ」で検索!



640 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:37:28.74 ID:KMiayiKp.net]
どういった方法を使えばいいかすらわかりません
タスクスケジューラーはなしでやりたいです。

641 名前:デフォルトの名無しさん [2018/03/26(月) 12:43:13.71 ID:ErqiV+UW.net]
自分で自分を起動するメタプログラムやね

642 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:49:56.47 ID:ZELYO3P5.net]
>>626
なんで?
それだともうサービスアプリみたいな方法しかないけど
苦労の割にタスクスケジューラと変わんないよ

643 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:54:28.04 ID:4B0nX6es.net]
>>623
タスクスケジューラなんて関係ないから騙されちゃダメwww

要は今はUIのボタンを押して人が手動で開始/停止してるのを
開始時刻/停止時刻で自動でやりたいってだけでしょ?

そんなのタイマでも使って時計をポーリングするだけ。
何が難しいのよ逆に

644 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 12:59:57.75 ID:ZELYO3P5.net]
アプリは起動してる前提でいいの?
終了してると動かないけど

645 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:02:31.43 ID:oo+qoL1t.net]
何が難しいかと言えば、ボタンが有るだけに「閉じるボタン」押されてアプリが落ちる件

646 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:06:38.61 ID:PvcYNBhB.net]
また常駐アプリの概念すら知らない初心者が知ったかでアドバイスしてる

647 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:13:11.57 ID:4B0nX6es.net]
これ前も書いたけど、常駐なんて概念は20年以上前のシングルタスクのDOSの概念
今時何の意味ももたない

何が知ったかだよアホかほんと

648 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:17:42.44 ID:xJxqYO19.net]
マルチタスクで常駐が意味無いなんて初めて聞いたがどこ情報だよ
ソース出してみ?

649 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:18:39.78 ID:4UQMW5SP.net]
windowsで○○時にアプリを起動したいという目的に一番かなっているのはタスクスケジューラー
linuxでもcron使う局面

ずっと起動しっぱなしのアプリやサービスでポーリングやタイマー使うこともできるけど無駄



650 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:21:52.38 ID:PvcYNBhB.net]
>>635
『アプリを起動』なんて言葉は>>623のどこにも書いてないけどな

651 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:28:09.86 ID:xpW3ZJwT.net]
単に起動するだけならタスクスケジューラーでよいと思うのですが
時間が過ぎたら、それ専用の動きをして停止したいのです
なのでタスクスケジューラーでは難しいかなと
timerで検索したり、同じような悩みの質問を探してみると必ず「タスクスケジューラー!」という回答者がいるのですが、求めているのはそれではないんです!

652 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:29:55.97 ID:4UQMW5SP.net]
時間が過ぎたらってただ単にDatetime.Nowが指定した時間を経過したかどうか調べるだけだけど

653 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:31:09.52 ID:xpW3ZJwT.net]
>>629
タイマーを使って時計をポーリング?
という方法で調べてみます
ありがとうございます

654 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:32:01.24 ID:4UQMW5SP.net]
backgroundworkerのwhileループで指定された時間を超えてるか調べる
もし超えてたら何かをして終了

655 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 13:32:30.43 ID:xpW3ZJwT.net]
>>638
その方法を調べてみます

656 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 14:27:09.74 ID:oo+qoL1t.net]
>>632
ボタンが有るGUIのあるソフトなんだから、普通にユーザーがウインドウを閉じることを想定すべきだよ
対策は閉じるを無効にするとか、GUIと本体を分離するとか、ユーザー教育でなんとかするとか、パソコン自体をソレ専用にするとか
何処らへんで妥協するか考えないとな

657 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 14:47:34.51 ID:PvcYNBhB.net]
「大変!右上の×押したらプログラムが終了しちゃう!」

だから常駐化しろよって話だろ?

658 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 14:51:53.23 ID:b4TsAUH3.net]
それでいつ開始すんだ?
朝7:00に起動するとして
前日18:00に閉じて
朝8:00に開いたので起動
でおk?

659 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 14:55:32.88 ID:EeYp3eGw.net]
聞かれとこと答えずに必要のないこと聞き返したり聞かれていないこと回答する人たち
oo+qoL1t
b4TsAUH3



660 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 15:04:02.11 ID:b4TsAUH3.net]
>>645
いいじゃん
後は質問者が抜けを塞げばいいよ

661 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 15:08:18.93 ID:b4TsAUH3.net]
職業柄すべてのケースをマトリックスで表現しないと組ませてもらえないから気になるんだよ

662 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 15:09:01.34 ID:DzDpiGFR.net]
ポーリングは、やったらダメなのが常識だろw
素人が助言してる

CPU が動き続ける。
CPU使用率が100% になって、フリーズするだけw

663 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 19:03:18.07 ID:Hi5Z0lMV.net]
>>648
1秒タイマーでもCPU負荷なんてゼロも同然だよ
まさかノーウェイト全力ループさせることしか思いつかないとか?

664 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 19:06:27.36 ID:lrnbqywH.net]
デスクトップアプリでAzureのデータベースと接続したいのですが、一般的に接続文字列等はどうやって隠蔽するんでしょうか

ハードコーディングしてもリバースエンジニアリングされたらモロバレになるので気になります

665 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 19:12:25.54 ID:2N4AiZYB.net]
>>650
sqlazure.jp/b/sqlazure/sqlazure_teamblog/336/

666 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 19:21:09.66 ID:Sl5sXtlN.net]
>>650
FPGAまで落とし込むんだ

667 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:20:01.51 ID:e5zVULSK.net]
現在の日付時刻が設定した日付時刻より後か前か判断するにはどうしたらいいでしょうか?
datetime同士で引き算とかは可能なのですか?

668 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:26:27.62 ID:SPNFNX7k.net]
>>653
キーワードわかっているものはさすがにググれ
https://msdn.microsoft.com/ja-jp/library/system.datetime(v=vs.110).aspx
減算・後の数値かどうか。メソッドも演算子も全部書いてある

669 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:52:26.85 ID:e5zVULSK.net]
ありがとう御座います
datetime同士の計算結果であるtimespanはtimespan>=0やtimespan<0で場合分けしても差し支えないのでしょうか



670 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:55:12.57 ID:VM7iT5OR.net]
>>655
いや普通にDateTime同士で大小比較できるぞ

671 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:00:38.75 ID:/1kq2kd6.net]
いや、それ以前に
>>654がせっかく
> 演算子も全部書いてある
って言ってるんだからちゃんと見ようよ
https://msdn.microsoft.com/ja-jp/library/system.datetime.op_lessthan(v=vs.110).aspx

672 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:08:40.49 ID:e5zVULSK.net]
なるほど、datetimeで大小比較すればいいのですね
ありがとう御座います

msdn分かりにくくありませんか?
難しい(*_*)

673 名前:デフォルトの名無しさん [2018/03/26(月) 22:18:02.65 ID:AHHYeqDL.net]
>>658
分かりにく

674 名前:「よね
俺も前からそー思ってけど言い出しにくかった
[]
[ここ壊れてます]

675 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:36:24.40 ID:pJYeIgRu.net]
unixtimeを4.0でDateTime型に変換するにはどうすればよかたい

676 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:42:13.90 ID:iiFlz3sh.net]
>>660
4.0とは?

677 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:56:15.63 ID:e5zVULSK.net]
backgroundworker開始時に次の17時になるdatetimeを取得してループ開始、ループ毎に現在のdatetimeと設定のdatetimeを比較して過ぎていたら停止させようと思うのですが
次の17時のdatetimeを取得する方法はありますか?

678 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:34:03.76 ID:Hi5Z0lMV.net]
c# datetime unixtime

679 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:48:44.24 ID:lh4NSg1Q.net]
>>662
datetimeそのものじゃなくても時間だけならHourを比較したらいいよ

var h=Datetime.Now.Hour;

if( h>=9 ){ ... } //9時以降なら



680 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:56:49.96 ID:pJYeIgRu.net]
>>661
.netです

681 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:02:34.95 ID:RoQzbf+s.net]
>>664
それがすごい気になるんですが
9時以降っていうのは何時までを指すのでしょうか?
極端な話次の日の8時とかになっても条件を満たしますか?

682 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:06:42.35 ID:5DREL+sj.net]
>>665
.NET Framework4.0のこと?もうとっくにサポート切れてるけど合ってる?

683 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:06:43.46 ID:1syCFnvF.net]
どこ基準のUNIXTIMEか知らないけど1970年1月1日からの経過秒数だから
var origin =new DateTime(1970,1,1);
var unixtime=DateTime.Now-origin;

タイムゾーンは自分で好きなようにしてください

>>666
Hourはあくまでも時間の部分だけだから0時になったら満たさなくなる
条件はよく考えて自分で設定すること

684 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:08:14.05 ID:1syCFnvF.net]
ああ抜けてる

var origin =new DateTime(1970,1,1);
var unixtime=( DateTime.Now-origin ).TotalSeconds;

685 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:20:12.69 ID:RoQzbf+s.net]
なるほど、ではループが30分の場合
終了を23時50分に設定してしまうと止まらず動いたままになる可能性もあるということですね

686 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:30:37.92 ID:i+K8FLsM.net]
>>662
var n = DateTime.Now; // 今
var s = n.Date.AddHours(17); // 今日の17時
var x = n < s ? s : s.AddDays(1); // 次の17時
while (DateTime.Now < x) {
// 次の17時まで何かする
}

687 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:33:39.52 ID:1syCFnvF.net]
Datetimeのコンストラクタはいろいろなパターンがあるからどうとでも作れる
DatetimeはTimespanを足して新しいDatetimeもつくれるので

まあじっくり見て勉強することだな

終了条件をどのように設計してるのか知らないけど特定の日付の特定の時刻を設定してたら
途中で休止などして時刻を過ぎた後、再度復帰した場合すぐ終了してしまう
そして、指定時間以降だったらまたすぐ動くことになる

などどういうことを想定するよって何を選ぶかは変わる

688 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:34:17.93 ID:1syCFnvF.net]
>>671
思いっきりバグコードだけど

689 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:36:06.00 ID:RoQzbf+s.net]
>>671
これいいですね!
解決しそうです。ありがとうございます。
xの?や:の意味がわかりませんがとりあえずコピペします
ラムダ式みたいなものかな?



690 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:36:42.86 ID:RoQzbf+s.net]
>>673


691 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:38:51.06 ID:i+K8FLsM.net]
>>673
えっ!?

692 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:40:05.98 ID:1syCFnvF.net]
>>675
>>676
勘違いしてた
9時スタートで5時終わりの話を引きずってるのかと思ってた

693 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:42:26.00 ID:tVuDF99u.net]
>>667
え、ソースは?

694 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:43:09.93 ID:RoQzbf+s.net]
よかったです
?はifで:はelseみたいなものですかね?
便利ですね

695 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:46:08.70 ID:1syCFnvF.net]
16時59分スタートなら1分でストップ
17時00分ジャストなら次の日の17時まで24時間でストップ

696 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:52:08.65 ID:i+K8FLsM.net]
>>671は17時直前に呼び出すと何もしないで終わる可能性があるな
do whileのほうがいいかもしれん

697 名前:デフォルトの名無しさん [2018/03/27(火) 00:52:53.72 ID:dhIDlkWy.net]
終了を17時30分にしたい場合は以下のようなコードで大丈夫でしょうか?

var n = DateTime.Now; // 今
var s = n.Date.AddHours(17).AddMinutes(30); // 今日の17時30分
var x = n < s ? s : s.AddDays(1); // 次の17時30分
while (DateTime.Now < x) {
// 次の17時30分まで何かする
}

698 名前:デフォルトの名無しさん [2018/03/27(火) 00:54:52.06 ID:dhIDlkWy.net]
>>680
こんな感じでも特に問題はありません。
むしろわかりやすくて希望通りです。

699 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:55:47.09 ID:7SLvU9BO.net]
DateTimeなんてめったに使わんけど、使ってみたら値型のくせにイミュータブルで
なんだか使いづらいね

// 時分秒が指定した値となる現在より後の直近の日時を返す
public static DateTime GetNextDateTimeFromNow(int hour, int min, int sec)
{
  var now = DateTime.Now;
  var next = new DateTime(now.Year, now.Month, now.Day, hour, min, sec);
  return next > now ? next : next.AddHours(24);
}



700 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:56:05.12 ID:1syCFnvF.net]
>>682
試せばいい
DateTime.Nowじゃなくて自分てnew Datetime()して
自由にnを作って試せばいい

701 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 00:59:24.75 ID:1syCFnvF.net]
>>684
AddHours(24)なのはなぜ?
うるう秒があったらずれる(そんな仕組みは多分ないけど)

702 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:00:54.28 ID:1syCFnvF.net]
AddDaysでもずれるか

703 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:04:20.64 ID:5DREL+sj.net]
>>678
ググれば一発やろ

704 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:05:23.72 ID:Q5x4N+CR.net]
無限ループやってる奴はわざとなのかガチなのか

705 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:11:21.45 ID:t3gWSj15.net]
仕様が全く見えて来ない

706 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:13:48.60 ID:t3gWSj15.net]
9:00~17:00でいいんだよな?

707 名前:デフォルトの名無しさん [2018/03/27(火) 01:16:52.17 ID:dhIDlkWy.net]
とりあえずその時間帯ですが21時から5時までとかにも対応するようにしたいです。
とりあえず出来そうです助かりました。

708 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:17:51.30 ID:5DREL+sj.net]
>>669
.NET4.6以降ならBCLに専用のAPIが用意されてるからこんなことしなくていいんだけどね

709 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:19:00.55 ID:tVuDF99u.net]
>>693
糞会社が4.0止まりなんだ



710 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:20:41.65 ID:rY6p5Eum.net]
>>694
4.0はもうサポート対象外だし、Windows Server 2012も非対応なのに使わざるを得ないとか同情するわ

711 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:24:49.59 ID:t3gWSj15.net]
>>692
最大実行時間は何時間なん?
21時〜3日後の21時までなんて可能性は排除できるん?
平日と休日とで違いはないん?
とかね
なんか仕様がモヤっとしてんじゃん

712 名前:デフォルトの名無しさん [2018/03/27(火) 01:30:08.36 ID:dhIDlkWy.net]
>>696
だいたい8から13時間程度の稼動になります!

713 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:30:24.22 ID:ff4RZBmU.net]
4.X系ならアップグレードのコストはそんなにかからないだろうに
お前が変えさせるか、辞めちまえ

714 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:36:06.94 ID:t3gWSj15.net]
>>697
最大よ最大
返答に範囲が返って来ると気が狂うん
イレギュラーケースの最大を聞いてん

715 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:49:34.53 ID:XpaqG/wa.net]
最大13時間です!
すいません!

716 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 03:45:35.94 ID:7OwU1Hvz.net]
同期プリミティブ
www.tokumaru.org/techterm/primitive.html

ポーリングは、ダメの見本。常識

ランデブーとか、待ち合わせしたいだけだろ。
それ

717 名前:ゥ、非同期で、callback してもらえば良いだけw []
[ここ壊れてます]

718 名前:デフォルトの名無しさん [2018/03/27(火) 04:03:08.18 ID:E80vD2cb.net]
task.delay(100)とTheading.sleep(100)ってどう違うの?

719 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:45:14.33 ID:i+K8FLsM.net]
素人ってやたらとポーリングを嫌うよね



720 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 09:12:45.31 ID:8h15hFzc.net]
CPU100%とか言ってるし無限ループと勘違いしてるんだろ

721 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 09:37:19.37 ID:84JRCCml.net]
まあ素人さんはしょうがない

722 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 09:39:14.11 ID:kmAPzdoZ.net]
>>702
Thread.Sleepは指定した時間自分のスレッドを停止する
Task.Delayは「指定した時間停止するスレッド」を生成する
Task.Delayは単独では意味がないのでawaitなりContinueWithなりする

723 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 09:48:09.70 ID:rY6p5Eum.net]
async/awaitの勉強しているんだが、async voidやasync Taskのメソッドをawait無しで呼び出したらそのメソッドの処理は投げっぱなしになるの?

724 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:48:57.49 ID:fbReATtq.net]
そだよ。

725 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:21:35.26 ID:7OwU1Hvz.net]
そもそも、MS が、50ms 以上掛かる処理は、同期処理するなって言ってるだろ。
非同期処理にして、callback してもらうようにって

「ポーリング」で検索して、色々な記事を読め

726 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:28:13.60 ID:xeybzECW.net]
何がそもそもなんだw
>>709の世界ではDateTimeの比較演算に50msもかかるのかw
30年前のPC-98だってそんなにかからないと思うけどww

ネタなのかマジなのか知らんけど、そもそもHW資源を直接触れないOS上で動くコードは
一件コールバックのように見える処理も実態はポーリング

単にそれがシステム側のコードに隠蔽されてるだけ

727 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:35:46.40 ID:GW1/xmrB.net]
spin lock なんてものは無かったんや
 いやぁ勉強になるなぁ

728 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:38:24.18 ID:rY6p5Eum.net]
>>708
サンクス

729 名前:デフォルトの名無しさん [2018/03/27(火) 12:39:38.04 ID:nnyxYnJQ.net]
元々タスクスケジューラで十分な話をよくもここまで長々と続けられるな



730 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 12:44:03.80 ID:Eb35YKQg.net]
質問にとは関係ない部分で知識をひけらかしたい奴がいるから

731 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 13:12:24.26 ID:8gmuwQWV.net]
仮にオレがこのソフトを作るとしたら、NotifyIconのデザインで小一時間悩むところから始まるだろうね

732 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 13:45:19.52 ID:7OwU1Hvz.net]
何時間も待つ処理だろ。
50ms を超えてるから、非同期処理を使えって、MS が言ってる

自分でプログラミングで、ポーリングしたらダメ

OS の内部処理とは関係ない

733 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 13:53:27.94 ID:Eb35YKQg.net]
思い込み激しい奴だな

734 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 14:12:37.92 ID:9YSJ28+H.net]
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?

c:\test

aaa.txt
bbb.txt
ccc.txt
...etc

指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。

アンパンマン → バイキンマン

といった具合です。

735 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 14:24:49.80 ID:zZm0N0X4.net]
スレチ

736 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 14:35:31.77 ID:ClOSXPHI.net]
1秒タイマーでタイムアウトするたびに目的の時刻を越えたか
調べるだけでいいじゃないの
違ったら即抜けるだけなのに、50msも掛かる処理じゃねーよ
なんでわざわざタスクスケジューラー使わにゃならんのだ

737 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:21:58.88 ID:1rmw5Lza.net]
>>709
ぜんぜん理解してないじゃん

738 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 18:28:00.64 ID:84JRCCml.net]
コミュ障は病気だからやむを得ないが
読解力は人並みに身につけてから書き込んで欲しいよなw

739 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 19:38:51.59 ID:8gmuwQWV.net]
タイマーのインターバルは10秒とか100秒だけじゃなくて、10年でも100年でも設定できるんだから
起動時に開始と停止までの時間を計算してタイマー設定すれば
ポーリングしなくても良いんじゃね?



740 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 19:41:02.82 ID:RNGaKb4X.net]
>>723
時刻合わせせずPCの時計を常に基準にするのか
というか仕様や設計の話は他でやってくれないかな

741 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 19:46:25.47 ID:a4CYTpTn.net]
>>723
Timerのインターバルはint型でmsec指定
1年の秒数は31536000秒

あれぇ?

742 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:12:24.26 ID:foR5XOpk.net]
>>724
PCの時刻を基準にしないでどうすんの?
純粋に興味あるから教えてくれ

743 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:34:44.17 ID:8gmuwQWV.net]
>>725
wpfばかり使ってたんで、DisptcherTimer基準にしていたわ
悪いな

744 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:36:49.79 ID:D1lCzr9q.net]
初心者の陥りがちなミス

Timeの精度を信用してしまう
途中で時刻修正の入る場合などを考慮しない

745 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:40:14.18 ID:8gmuwQWV.net]
>>724
今のPCはネットに繋がっていれば時間は自動で合わせてくれる
インターネットに繋がっていない前提ですか?

746 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:42:13.82 ID:RAm1FIuU.net]
そおです

747 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:51:58.53 ID:SJRVUf0s.net]
>>710
30年前ってPC9801あったっけ?

748 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:56:33.38 ID:vavxlF2f.net]
>>731
初代は1982年(36年前)

749 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:58:54.08 ID:FNmJga7y.net]
こういうインフラの煩わしい制約からコアになる処理を分離したい
ワーカー側は終了再開するためのapiを用意して時間や終了再開するタイミングの事は一切考えない
時間を管理するクラスが適切なタイミングでそれらのapiを実行する

というのが正解な
時間管理クラスが内部でループぶん回そうがシステムコール使おうがそれはどうでもいい



750 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:05:37.51 ID:D1lCzr9q.net]
c#環境では指定時刻にイベントを起こすAPIは用意されてない

751 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:12:23.97 ID:9YSJ28+H.net]
指定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?

c:\test

aaa.txt
bbb.txt
ccc.txt
...etc

指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。

アンパンマン → バイキンマン

といった具合です。

752 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:13:34.93 ID:D1lCzr9q.net]
>>735
スレチ

ここはc#のスレ

753 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:14:46.44 ID:1tsj2UvO.net]
>>701
callbackはどんな条件のものをどうやって作るんだ
>>729
時刻合わせのタイミングでインターバル補正するコードは思いつかないな
時間定期的にcheckするだけのものをどこまで難しくする気だコイツら

754 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:22:44.33 ID:rY6p5Eum.net]
>>737
お仕事でなんでこの仕様からこんな糞コードが生まれるんだろと不思議に思うことあるけど、このスレの流れ見たらある意味納得だわ

755 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:23:33.47 ID:8gmuwQWV.net]
>>737
1秒ポーリングでも最大1秒弱の誤差が出るわけだが、内蔵時計ってそこまで精度悪いの?
実用上問題ない誤差に見えるがちょっと気にしすぎじゃね?

756 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:30:26.48 ID:xeybzECW.net]
どうでもいい
そんな盛り上がるネタじゃないだろうw
いい加減止めたら?

757 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:43:38.37 ID:RAm1FIuU.net]
他に居場所がないのでしゅよw

758 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 21:44:08.38 ID:FNmJga7y.net]
悲しいね

759 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 22:08:17.45 ID:t3gWSj15.net]
1秒ポーリングでやろうぜ

現在時刻が開始〜終了時刻の範囲
 起動Flagなし
  起動処理
  起動Flag立てる
現在時刻が開始〜終了時刻の範囲外
 起動Flagあり
  終了処理
  起動Flag下ろす

(*゚∀゚)bできた!



760 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 22:29:48.19 ID:FkzRU/Z7.net]
回答者の方は基本情報持ってるもんですか?

761 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:11:24.08 ID:a4CYTpTn.net]
持ってるけど少し勉強すれば誰でも取れる資格に意味なんてあるの?
精々資格手当で給料が5000円プラスされる程度の価値しかないぞ

762 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:19:17.56 ID:LCPGZ3qz.net]
5000円の価値も分からないとか働いたことないのかな?

763 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:32:40.08 ID:FNmJga7y.net]
うちは1万増える

764 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:34:25.90 ID:zFrY2ZyB.net]
5,000円も上乗せとかウラヤマ過ぎだろ
うちなんて高度取っても報償金30,000円だけ
基本や応用ではなにもでない

765 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:42:52.53 ID:7OwU1Hvz.net]
10年以上やってる奴でも、基本情報技術者は取れない

大卒の新米が、こんなの簡単に取れますよねって言ったら、
中堅社員は皆、新米をにらみつけていたw

企業の資格取得率は、年1%(100人中1人)ぐらいだろ。
10年いても、9割の社員は、資格を取れない

766 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:53:23.07 ID:FNmJga7y.net]
申し込みしたけど忙しくて受験できない人は沢山居るけど受験して落ちる人はいない

767 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:53:50.72 ID:3aWOhLkC.net]
俺は応用情報まで持ってて+1万だなー

>10年以上やってる奴でも、基本情報技術者は取れない
……冗談だろ?

768 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:58:15.55 ID:3aWOhLkC.net]
さておき、建築士だの医師だの弁護士だのみたいに
「この職務に就くには、○○の資格が必要」とかいう業界じゃないんで
本当に、ただ給料が増えるだけではあるな (採用試験でもまあ有利にはなるかもしれん)

増えたら増えただけ嬉しいもんではあるが
年間で+12万なら、家電の買い替え費用くらい楽に捻出出来るし

769 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:58:26.75 ID:9YSJ28+H.net]
定したディレクトリの中を一発で全て置換する何か便利なソフトはありますか?

c:\test

aaa.txt
bbb.txt
ccc.txt
...etc

指定したディレクトリの中に複数のファイルがあります。
その中にある特定の文字列を全て一括で置換したいです。

アンパンマン → バイキンマン

といった具合です。



770 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 00:00:54.89 ID:02fULCHO.net]
botかな

771 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 00:09:13.46 ID:pf/Jvdmo.net]
>>752
普通は資格手当ては基礎賃金扱いだからボーナスや残業計算対象でもっと貰えるよ
基本情報で5000は羨ましいけど資格手当て込みのベースにしてるパターンもあるから一概にいいとはいえないかもね

772 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 00:16:20.41 ID:0was1dJs.net]
Ruby の、Dir.glob で書ける

Dir.glob('C:/test/*.txt') do |file|
# gsub(/アンパンマン/, 'バイキンマン')で全部を置換する
end

773 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 00:44:23.36 ID:Im6j951B.net]
C# もしくは 既に要件を満たすツールがあれば教えてください。

774 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 01:02:57.21 ID:GnpAMkN4.net]
>>753
マジレスするとVisualStudioで可能

775 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 01:13:32.94 ID:qs/6O+TS.net]
>>757
WindowsでC#使ってるならVisual Studio使ってるんだろ?
フォルダーを指定して置換でいいと思うが
https://msdn.microsoft.com/ja-jp/library/a40ywt0a.aspx

776 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 07:24:31.11 ID:1/4U3eU2.net]
>>753
awkやろ
百歩譲ってRubyとかのP系言語
C#は向いてない

777 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 07:34:12.04 ID:NtzDkwr+.net]
powershell

778 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:10:34.35 ID:LHMXaAz3.net]
public Pixel(IList<byte> data, int index)
{
B = data[0];
G = data[1];
R = data[2];
Index = index;
}

var list = new List<(int x, int y)>();

// 何故か背景色がFFA07A固定なのでそれ使って適当に
list.AddRange(pixels.Where(x =>
Math.Abs(x.R - 0xFF) < 5 &&
Math.Abs(x.G - 0xA0) < 5 &&
Math.Abs(x.B - 0x7A) < 5
).Select(x => (x.Index % width, x.Index / width)));


ビットマップをPixelクラスに読み込んで特定の色(FFA07A)のピクセルを検出しているのですが
         (x.R - 0xFF) < 5
ここのRGBから16進数をマイナスして5未満の意味がわからないのですが
なぜこんな計算をしているのでしょうか?

779 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:12:50.37 ID:6nNahb2+.net]
止まるんじゃねぇぞ…



780 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:21:23.63 ID:Im6j951B.net]
>>759
VS2017にそんな機能があったんですね。便利!

VS2010じゃその機能はないよね?

781 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:33:50.78 ID:r3METhPg.net]
>>762
そのコードを書いた奴に聞けよ

782 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:42:38.68 ID:qs/6O+TS.net]
>>764
2008 でもある
https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2008/a40ywt0a(v=vs.90)
たぶんもっと前からあったような気がする

783 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 22:52:23.87 ID:Im6j951B.net]
>>766
知らなんだ。サンクス

784 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 00:01:16.76 ID:LDL0rnP5.net]
>>762
その前にMath.Absが付いとるじゃろ
目的の値との差をとって、その絶対値が5未満
つまり、ぴったり一致しなくても±4までの誤差ならOKとしている

785 名前:762 mailto:sage [2018/03/29(木) 00:10:37.10 ID:3/dH7jim.net]
>>768
なるほど!誤差の為ですか
ちょっとした技を使ってたんですね
ありがとうございました。

786 名前:デフォルトの名無しさん [2018/03/29(木) 12:17:07.66 ID:48quLBzg.net]
質問です。よろしくお願いします。
ttps://tb.click-sec.com/fx/historical/historicalDataDownload.do?y=2018&m=01&c=21&n=USDJPY
をブラウザで開くとzipファイルのDLが始まるので、これをC#でDLしようと思ったのですが、
このURLのままだとSystem.Net.WebClient.FileDownloadでもWebBrowserコントロールで開いてもzipファイルのDLができません。
どうすればいいのでしょうか。 👀
Rock54: Caution(BBR-MD5:8e40a50a3146c71e5aa506574dbd07bd)


787 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 12:30:39.81 ID:49BUJ49m.net]
諦める

788 名前:770 mailto:sage [2018/03/29(木) 12:50:22.61 ID:48quLBzg.net]
IEに開かせればできるかもと思ったのでやってみます。

789 名前:デフォルトの名無しさん [2018/03/29(木) 14:42:04.00 ID:fRxUhejE.net]
すまんが、イベントハンドラーを空っぽにするのってどうやんの?



790 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 15:00:44.15 ID:mcXZqOx8.net]
nullから空っぽのラムダ式を入れる
もしそのイベントを持つクラスの外からやりたいと言ってるならそれは無理
無理と言うより、そんなことをしたいと思うこと自体が間違ってる

791 名前:デフォルトの名無しさん mailto:sage [2018/03/29(木) 19:35:16.02 ID:2ivypk2R.net]
>>773
-= イベントハンドラ;

792 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 11:54:45.53 ID:LK6mi3V8.net]
ユニットテストについて質問
例えば計算クラスのテストをするときは

[TestCase(-2, 2)]
public void AbsTest(int a, b){
 int n = Math.Abs(a);
 Assert.AreEqual(n, b);

こういう風に正しい値を予め手計算で用意しておくものなの?

793 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:24:31.95 ID:Aig7x3ki.net]
>>776
一般的にはその通り
間違っても n = a < 0 ? -a : a とかやってはいけない
ちょっと考えたら分かると思うけど、そういうのは全く意味のないオレオレテスト
手計算がどうしても困難なら、デバッガで動かしてその結果が合ってるかを検証してその値をコピペしとけ
少なくとも意図しないデグレの検出には役立つ

794 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:34:29.62 ID:LK6mi3V8.net]
>>777
ありがとう!
チェック項目が増えると引数が酷いことになるから何か間違えてるのかと思ってた

795 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 12:46:02.45 ID:Aig7x3ki.net]
>>778
それはテストの観点を適切に直行化できてないんじゃないか?
引数xが3以上のとき結果は必ず負になることが期待されるとしたら、
テストは3と3を超える値を引数に入れて、それぞれの結果yについて y < 0 が真となることを確認すればいいんだぞ
何を確かめたいのかを明確にしてそれをそのままコードで書くんだよ

796 名前:デフォルトの名無しさん [2018/03/30(金) 14:10:01.41 ID:tnFi4c/U.net]
LinqのJoinメソッドに渡すメソッドなんだけど、ラムダ式で書く方法が全然理解できないぜ・・・・
多分、掲示板で解説するのも難しいと思うので、やさしく解説してるページやら本やらがあったら教えて!!!

797 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 14:45:38.48 ID:L1eApEVG.net]
>>780
どれがわかりやすいかなんて人それぞれだから宛にならないよ
ラムダ式でぐぐって良さそうなら熟読してわからない所を質問するといい

798 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 14:48:53.79 ID:CpZcazmB.net]
ラムダ式とか正規表現とか、記憶してるやついないから大丈夫
毎回ググればいい

799 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 15:28:55.57 ID:87KFZNYL.net]
ラムダ式って、無名関数の構文糖だろ

func (引数1, 引数2) => 戻り値

(a, b) => result



800 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 16:00:30.28 ID:BIk3pBCX.net]
λを採用した祖の言語LISPなんてわざわざ(lambda〜)と毎回書いてるのに変な略称=>なんて許されんばい
λと書きんしゃい

801 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 16:46:29.66 ID:kajlCXLR.net]
またはじまった

802 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 17:32:32.77 ID:+cAt7TAV.net]
ランバダのPVはエロかったなあ
関係ないけど

803 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:08:45.57 ID:qHFB3R53.net]
>>780
この本よかったぞ
基本的な知識はあるがLINQ、ラムダ、推論型の知識があやふやならおススメ

「C#プログラマーのための 基礎からわかるLINQマジック! 」
https://www.amazon.co.jp/dp/product/B01FEZ7QNY/ref=as_li_tf_tl?camp=247&creative=1211&creativeASIN=B01FEZ7QNY&ie=UTF8&linkCode=as2&tag=bookmeter_book_image_image_pc_logoff-22

804 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:19:24.61 ID:LI6oPksr.net]
人脈?

805 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:25:17.02 ID:QYlpMr10.net]
質問失礼します。
以下のようなプログラムを書いたところコメントに書いたようなメッセージが表示されますが、
このメッセージに従ってインライン化しようにも、どのように修正すれば良いか分かりません。
これはIDEのバグだと思って無視しても良いものなのでしょうか。

インライン化の有無は可読性だけの問題でパフォーマンスなどに影響はないのだと思いますが、
このようなメッセージが表示されたままプログラムを完成とするのはあまり気分がよくありません。
プログラムの修正方法や、このようなメッセージに対する考え方など、
分かることがあれば教えていただけないでしょうか。よろしくお願いします。

static void Main(string[] args)
{
void getMessage1(out string _message) => _message = "x is 1.";
void getMessage2(out string _message) => _message = "x is not 1.";

int x = 1;
string message; // IDE0018 変

806 名前:数の宣言をインライン化できます
if (x == 1)
{
getMessage1(out message);
}
else
{
getMessage2(out message);
}

Console.WriteLine(message);
}
[]
[ここ壊れてます]

807 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:42:11.73 ID:q+LDJ3nt.net]
そんなもん買っても十中八九忘れる
基本ネットに転がってるコピペで食いつなぐのが一流

808 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:44:40.56 ID:LI6oPksr.net]
>>789
なんでoutを使うのかが分からないんだけど

809 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:49:12.82 ID:+cAt7TAV.net]
>>789
"IDE0018"でググったら一発で解説が見つかるんだけどw
何でその長文タイプうする前に検索しないのよw
そこが分からん



810 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:57:29.01 ID:roepBgfb.net]
>>789
これ、どうしろって言ってん?

811 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:57:31.26 ID:LI6oPksr.net]
>>792

そういうことを言ってるんじゃないと思うけど…

手元にあるc#7.1じゃ再現しないんだけど

812 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:59:03.69 ID:LI6oPksr.net]
普通に考えるとスコープから外れるからインライン化できないはずなのにインライン化を進めてくるってことでそ

813 名前:789 mailto:sage [2018/03/30(金) 19:11:19.76 ID:QYlpMr10.net]
早速たくさんのレスありがとうございます。
お返事に少し時間がかかってしまいそうなので、上から順に書き込みたいと思います。
お待たせしてしまって申し訳ありません。

>>791
レスどうもありがとうございます。
色々なクラスで定義されているTryParseやIDictionaryのTryGetValueは
使いやすいと感じていて、それを参考に定義したメソッドをifの内側で使おうとしたのが
>789のようなプログラムを書いた経緯です。
しかし確かに複数の情報を返却したければそれ用のクラスを定義すれば良いことですし、
C#7ではタプルも構文化されているので、もはやoutは時代遅れということでしょうか。
C#にはいくつか負の遺産もあるということなので、その辺りについても勉強したいと思います。

814 名前:789 mailto:sage [2018/03/30(金) 19:21:12.54 ID:QYlpMr10.net]
>>792
説明が不十分で申し訳ありません。
>>795の方が分かりやすく説明してくださっているので蛇足になってしまうかも知れませんが、
私が検索した範囲では、
string message;
getMessage1(out message);

getMessage1(out string message);
に直せば良いということは分かったものの、変数の定義と関数の呼び出しとの間に
(今回の例のifのような)別のコードがあって、それが移動できないように見えても
メッセージが表示されてしまう場合があるということです。

ただ、「移動できないように見える」という部分に自信がなかったのと、
仮にそれが正しかったとしてもこのようなメッセージをどの様に受け止めれば良いのかが
よく分からなかったので質問させていただきました。

815 名前:789 mailto:sage [2018/03/30(金) 19:31:31.59 ID:QYlpMr10.net]
>>793
IDEがなんと言ってきているのか、とういことでしょうか。
サンプルコードを空行も含めて上から数えて7行目のコメント文なのですが、
「IDE0018 変数の宣言をインライン化できます」というメッセージが表示されます。

それとも、私がどのようなお返事を期待しているかとういことであれば、
このメッセージに対処するためのプログラムの修正方法や、
このようなメッセージに対する考え方などを教えていただけないかと考えています。
しかし、私の期待していること自体が見当はずれということもあると思うので、
それ以外でも何か気がつくことがあれば教えていただけると嬉しいです。

816 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:34:47.70 ID:roepBgfb.net]
msに
これ壊れててん?
ってメール出してみよう

817 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:44:57.86 ID:DYwliZHB.net]
VSとターゲットのフレームワークのバージョンを書いてないのがいまいち

818 名前:789 mailto:sage [2018/03/30(金) 20:00:44.22 ID:QYlpMr10.net]
>>794
早速検証までしていただいてどうもありがとうございます。
また、本来書くべきC#のバージョンが抜けてしまっていて申し訳ありません。

>>789
を始めに確認したときのターゲットフレームワークは4.6.2だったので、
以下の対応表によればC#のバージョンは6.0ということになるのでしょうか。
https://qiita.com/nskydiving/items/3af8bab5a0a63ccb9893

しかし、その後ターゲットフレームワークを4.7.1や3.5に変更して試してみても
やはり同じメッセージが表示されました。

あと、これも後出しになってしまって申し訳ないのですが、
あからさまな構文エラーと違ってこのメッセージはコンパイルするまで表示されないようです。

IDEはVisual Studio 2017を使用していて、OSはWindows 10 Pro 64 bitです。
他に何かお伝えすべきことがあれば教えていただけると嬉しく思います。

よろしくおねがいします。

819 名前:789 mailto:sage [2018/03/30(金) 20:06:29.84 ID:QYlpMr10.net]
>>795
分かりやすく補足していただいてどうもありがとうございます。
C#のバージョンについてもそうですが、正確にお伝えするための情報の確認が不十分でした。
これはプログラミング以前の問題だと思うので気をつけていきたいと思います。申し訳ありません。



820 名前:789 mailto:sage [2018/03/30(金) 20:18:53.64 ID:QYlpMr10.net]
>>799
アドバイスどうもありがとうございます。一日程度このスレッドを拝見してみて、
私の勘違いという証拠が見つからなければマイクロソフトに報告してみようと思います。

報告する場合、Visual Studio の
「ヘルプ(H)>フィードバックの送信(F)>問題点の報告(P)」を利用しようと考えていますが、
もし他におすすめの連絡先などがあれば教えていただけると嬉しく思います。

821 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:21:01.69 ID:keCNvJ3G.net]
つまりこう書けるよってことじゃないの?

if(x == 1) getMessage1(out string message);
else getMessage2(out string message);

822 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:23:34.69 ID:sxHgkaP9.net]
>>803
https://www.google.co.jp/search?client=opera&q=IDE0018&sourceid=opera&ie=UTF-8&oe=UTF-8
https://vimalakitty.blogspot.jp/2017/09/10-01.html

823 名前:789 mailto:sage [2018/03/30(金) 20:32:11.02 ID:QYlpMr10.net]
>>800
おっしゃる通りで、大変失礼いたしました。申し訳ありません。
>>801と内容が一部重複してしまいますが、これまでの内容を改めて整理したいと思います。
(これまでいただいたレスの表現を一部お借りしています)

問題の概要:
関数のout引数に関して、スコープから外れるためインライン化できないと思われる場面で
インライン化を推奨するメッセージが表示されることがある

問題を再現するコード及びメッセージの内容:
>>789

問題が再現する環境:
Windows 10 Pro 64bit
Visual Studio 2017
ターゲットフレームワーク:3.5/4.6.2/4.7.1 で確認

備考:
コードのコンパイル後にメッセージを確認

以上です。他に何か書くべきことがあれば教えていただけると嬉しいです。
どうぞよろしくお願いいたします。

824 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:37:12.26 ID:+cAt7TAV.net]
>>803
何でそうなるw
だから、まずググろうよ"IDE0018"で

そうすればこれはC#7の追加機能に起因する警告であり、不具合ではないとすぐに分かる。
何でそんな長文タイプする手間は惜しまないのにちょっと検索する手間は惜しむのよw
意味が分からん

ちなみに、この警告を無視するにはこうするんだってさ
https://developercommunity.visualstudio.com/content/problem/159716/is-there-a-way-to-disable-ide0018-globally.html
これもググってれあばすぐに自分で見つけられてるはず

825 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:40:09.19 ID:keCNvJ3G.net]
一行ならブロックスコープ外せるから>>804だと思うんだけど自分の6.0環境では試せなくて悲しい

826 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:59:52.66 ID:keCNvJ3G.net]
ごめん、無理だね
ブロック外してもスコープはローカルになっちゃうみたい

827 名前:789 mailto:sage [2018/03/30(金) 21:13:54.63 ID:QYlpMr10.net]
>>804>>808>>809
修正方法のご提示とご検証どうもありがとうございます。問題は>>809にお書きいただいたとおりです。

ただ、お書きいただいた通り問題はスコープにありますので、
Console.WriteLine(message);をifとelseの両方の中に書けばこの問題は起こりません。
この程度の内容を2回書くことは大した問題になりませんし、
この部分に対応するコードが長くなってしまった場合もメソッドとして切り出せば同じことですので、
いただいたレスを読みながら、>>789のようなプログラムを書くこと自体が筋が悪くて、
やはり>>804に適合するプログラムになるよう全体を修正するべきなのかなとも考えました。
ただ、メソッドとして切り出す方法であらゆる状況に対応できるかどうか自信がないので、
いずれにしても確信は持てていない状況です。

828 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:24:37.09 ID:DYwliZHB.net]
>>807
いつまでトンチンカンなこと言ってんの?

829 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:25:20.49 ID:DYwliZHB.net]
例のおじいちゃんかよ
レスして損した



830 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:28:28.22 ID:+cAt7TAV.net]
>>811
トンチンカンでもおじいちゃんでもないからw
こんなググればすぐに理由も対処法もわかる話でMSにクレーム付けたら
質問者が恥をかくだけ

831 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:30:10.03 ID:DYwliZHB.net]
NG推奨

832 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:30:33.31 ID:roepBgfb.net]
>>813
じゃ、どうしろって書いてあんの?
リンクのどこ見ればいいかわかんないよ
対象のコード貼ってくれ

833 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:30:33.58 ID:+cAt7TAV.net]
>>814
もうした

834 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:31:54.48 ID:DYwliZHB.net]
おじいちゃんに触れても無駄だよ
いつまでも間違いに気づいてないしレスも読んでないから

835 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:32:50.48 ID:+cAt7TAV.net]
>>815
無視するか気になるなら>>867で対処する
当たり前でしょう

836 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:33:56.46 ID:roepBgfb.net]
>>818
じゃ、バグってんじゃんw

837 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:34:34.33 ID:+cAt7TAV.net]
>>819
だから何でそうなるw
意味が分からない

838 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:35:21.33 ID:DYwliZHB.net]
>>819
おじいちゃんはまだ何が起こってると言う話なのか判ってないからレスしても無駄
スコープもわからないから

839 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:36:16.37 ID:+cAt7TAV.net]
>>821
トンチンカンなことを言ってるのは君の方なんだけど、自覚がないってのは幸福でいいねw



840 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:37:18.61 ID:roepBgfb.net]
>>820
いや、バグでしょコレ
だってこんなん指摘してきた同僚がいたらキチガイじゃん

841 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:37:22.84 ID:MnRWcQoL.net]
>>810
Visual Studio のバグでしょ
とりあえず頓珍漢野郎の>>807のリンク先に抑止方法書いてあるからそれでしのげばいいかと

842 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:38:22.07 ID:+cAt7TAV.net]
っていうか、>>789みたいなコードが警告されるのはむしろ当たり前。
outの変数を使いまわしするなんてよい作法とは言えないからだ

843 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:39:20.19 ID:DYwliZHB.net]
ジジイはトンチンカンすぎてダメだな
いつまでたっても成長しない

844 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:40:20.48 ID:MnRWcQoL.net]
使い回しとかほんとに意味わかってないんだな w

845 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:41:00.76 ID:roepBgfb.net]
>>825
使うからoutしてんじゃん
ガイジが過ぎるぞ自重しろ

846 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:41:07.53 ID:+cAt7TAV.net]
しかし、バグバグいってる連中はちゃんとググって解説記事読んでるのかねw
こんなのが同僚だったら張り倒すよw

847 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:41:48.65 ID:DYwliZHB.net]
ジジイは失礼なので取り消しておじいちゃんにまた戻す

848 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:42:50.83 ID:roepBgfb.net]
>>829
ありえねーレベルのアホだなw
outしたの使わないでどーすんだよ

849 名前:789 mailto:sage [2018/03/30(金) 21:45:40.64 ID:QYlpMr10.net]
>>805
参考ページのご紹介どうもありがとうございます。
このページは拝見したのですが、問題の解決に至る道筋を見つけることができませんでした。
(確認したページのうち主要なものはあらかじめお伝えしておくべきだったかもしれません。
 申し訳ありません。)

質問させていただいている身でこのようなことをお願いするのは大変心苦しいのですが、
もしお時間に余裕がありましたら具体的な修正方法のご説明をお願いすることはできませんでしょうか。
ご説明の中で私の疑問を理解していただければ幸いですし、
いただいたご説明で問題が解決できれば願ってもないことです。

煽るような文章で答えを引き出すような形になってしまい大変申し訳ありませんが、
私の説明能力の無さゆえの苦肉の策ということで、どうぞ失礼をお許しください。



850 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:46:08.85 ID:rq+fXpbo.net]
ガイジでいいだろ
本人もそう言ってる

851 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:49:29.47 ID:DYwliZHB.net]
>>832
とりあえず別のことに時間使ったほうがいいよ
ひまーな時に思い出して修正されたか確かめるといい

うちじゃ全然再現されないからどうしようもない

852 名前:789 mailto:sage [2018/03/30(金) 22:03:34.15 ID:QYlpMr10.net]
ID:+cAt7TAV 様
警告の抑制方法についてご案内いただきどうもありがとうございます。
他に解決策が見つからなければマイクロソフトに問題を報告し、
マイクロソフトに修正していただけるまで教えていただいた方法で警告を抑制したいと思います。

ただ、他の方にいただいたレスも拝見し、やはり私としてはこのメッセージが適切であるとは確信できずにいます。
もしお時間に余裕がありましたら、>>832のお願いを ID:+cAt7TAV 様にもさせていただけないでしょうか。
お願いの方法も内容も大変失礼なもので申し訳ないのですが、どうぞお許しください。

853 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:06:55.10 ID:+cAt7TAV.net]
まあ質問者がここのお馬鹿さんを代表してMSに質問してみたらいいと思う。
恥をかくのも勉強のうちかも

個人的にはちょっと調べてちょっと自分の頭で考えれば分かるはずのことを理解しようとせず、
「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど

つーか、ちょっと考えれば、この警告は余計なお世話のように思えて
一定の合理性があることぐらいすぐ分かると思うんだけど、ガチで分からない奴もいるんだね世の中には

854 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:10:00.19 ID:+cAt7TAV.net]
>>835
だから、警告の意図はout変数を値を戻す以上の目的で使うのはよい作法じゃないよ、
ってことでしょう。

外側のブロックでも値を使いたいなら別の変数にコピーしてねと

855 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:14:49.66 ID:roepBgfb.net]
は?こんなのバグだろ

856 名前:789 mailto:sage [2018/03/30(金) 22:22:13.29 ID:QYlpMr10.net]
たくさんご反応をいただきどうもありがとうございます。
とても勉強させていただいています。
お返事が遅くなってしまい申し訳ありません。

予想以上のレスの多さでこの話題に触れてくださった方すべてにお返事するのが難しくなってきましたので、
大変勝手ながら、これ以降、直接私の書き込みにアンカーを付けてくださった方と
特に教えていただきたいことがある方へのメッセージのみ書き込みたいと思います。どうぞよろしくお願いします。

>>825
皆さんのお話を聞いて、コードの無作法が警告メッセージの直接または間接的な原因なのではということを
かなり感じてきました。ただ、作法に関する私の理解が不十分でどうにも宙に浮いたような感覚なのです。
もしよろしければ、>>810考えについてコメントなどをいただくことはできないでしょうか。よろしくお願いいたします。

857 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:29:53.50 ID:MnRWcQoL.net]
>>836
どう書けばいいのかを書いてからほざけば? w

858 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:30:40.89 ID:CA+6T7VZ.net]
トンチンチン

859 名前:789 mailto:sage [2018/03/30(金) 22:32:45.82 ID:QYlpMr10.net]
>>824
レスどうもありがとうございます。
やはりバグと考えるのが妥当なのかなという気持ちが強くなってきました。

これだけたくさんのレスをいただき、バグであろうというご意見もいただいているので
もうマイクロソフトに報告を出してしまってもいいかなという気もしているのですが、
一応>>803に書いたとおり一日置いてから報告しようかと思います。

ただバクだとしても、このバグが今まで大した問題にならなかったということは
再現するためのコードに多かれ少なかれ作法の問題があるのではという気持ちもあり、
色々と勉強させていただきたいと考えています。



860 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:37:24.89 ID:MUNCeVRK.net]
>>842
現象再現するソリューション一式をアップローダにあげたら何か進展あるかもよ

861 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:04:09.64 ID:L1eApEVG.net]
>>789
以下の書き方ってビルド通るっけ?
ビルドエラーの時は原因と関係ない警告でたりするからmessage=nullみたいに何かいれれば解決したりしない?

string message;
if (x == 1) getMessage1(out message);
else getMessage2(out message);
Console.WriteLine(message);

後outメソッドではなく、戻り値で文字列を返すのが普通
根本的な解決じゃないけどoutキーワードを使わないgetに直せば警告を消せる

862 名前:789 mailto:sage [2018/03/30(金) 23:06:10.14 ID:QYlpMr10.net]
>>834
アドバイスとご検証どうもありがとうございます。

再現性の問題については、警告のカスタム規則セットなどは使っていないつもりなのですが、
そのあたりの理解が不十分でお伝えすべきことが不足してしまっているのかも知れません。
念のため、解説ページなどを読むなどしてもう一度確認したいと思います。

また、とりあえず別のことに時間をということについて、お心遣いをとても嬉しく思います。
ただ、せっかくこれだけの反応をいただけたのだからできる限りのことを吸収して…という
殊勝(?)な考え以上に、私が感じた問題に多くの方が興味を持ってくださったことが嬉しく、
娯楽という意味でもう少しこの場にお邪魔させていただきたいと思っています。

863 名前:789 mailto:sage [2018/03/30(金) 23:33:26.14 ID:QYlpMr10.net]
>>837
大変勉強になるコメントどうもありがとうございます。この観点はまったく気づいていませんでした。
確かにout変数の使い道をそこまで限定することで警告は表示されなくなりますし、
この制限はプログラムの保守性を高める効果もありそうです。
これで私個人の、警告が表示されて気持ちが悪いという問題は解決したように思います。
どうもありがとうございます。

ただそれはそれとして、今回の警告はやはり意図されたものではないと思うのですが、
もしよければこの点についてもご意見をお聞かせいただけないでしょうか。

私がこのように思うのは、以下のコードで警告が表示されないというところにあります。

864 名前:789 mailto:sage [2018/03/30(金) 23:33:45.21 ID:QYlpMr10.net]
bool tryGetMessage1(int _x, out string _message)
{
if (_x == 1)
{
_message = "x is 1.";
return true;
}
else
{
_message = default(string);
return false;
}
}
void getMessage2(out string _message) => _message = "x is not 1.";

int x = 1;
if (!tryGetMessage1(x, out string message))
{
getMessage2(out message);
}

Console.WriteLine(message);

865 名前:789 mailto:sage [2018/03/30(金) 23:34:33.28 ID:QYlpMr10.net]
>>837の制限に従えば上のプログラムのifの部分は次のように修正されるべきです。
しかしこの例では警告文表示されず、従って警告文は>>837の制限を課すためのものではないと思われるので、
「今回の警告は意図されたものではない」という結論に至りました。

int x = 1;
string message;
if (tryGetMessage1(x, out string message1))
{
message = message1;
}
else
{
getMessage2(out string message2);
message = message2;
}

866 名前:789 mailto:sage [2018/03/30(金) 23:56:19.78 ID:QYlpMr10.net]
>>843
アドバイスどうもありがとうございます。
今更ですが、警告が表示されるコードを含むソリューションをアップロードしてみました。
https://dotup.org/uploda/dotup.org1498398.7z.html

867 名前:789 mailto:sage [2018/03/31(土) 00:03:56.30 ID:a/TgDl8y.net]
>>844
レスどうもありがとうございます。
お書きいただいたコードでは、ビルドは通りますが>>789と同じ警告文が表示されました。
これは message = null と書き換えても同じようです。

戻り値で文字を返すべきだというのはおっしゃるとおりだと思います。
ただ>>796のような理由もあり、out変数でも警告が表示されずにすまないか思って質問させていただきました。

868 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:04:10.00 ID:r1Fcmmf3.net]
>>849
えー、このスレで解決しないといけないの?
初心者スレの領域越えてない?

869 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:04:41.30 ID:r1Fcmmf3.net]
しかも無駄に長文だしちょっと控えてよ



870 名前:789 mailto:sage [2018/03/31(土) 00:25:14.41 ID:a/TgDl8y.net]
>>851 >>852
申し訳ありません。
もともと不具合なのかどうかの判断もできずこのスレで質問させていただきましたが、
IDEの不具合であるとすれば、おっしゃるとおりここで解決を目指すことではないと思います。

ただ、もしこの問題に興味を持ってくださる方がいて、問題が再現されないようであれば、
>>849のソリューションファイルでもお試しいただければ嬉しく思います。

これ以降は、「IDEのバグ修正」という方向の話について私の方から書き込むことは控えたいと思います。
しかし、すでに私が書き込んでしまった内容にお返事をいただいた際のレスについてはお許しください。

以上、長々と失礼いいたしました。

871 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:25:16.57 ID:p9TP0 ]
[ここ壊れてます]

872 名前:5UX.net mailto: >>806
Visual Studio 2017のバージョンは?
最新版(15.6.4)で>>849のソリューションビルドしたけど、IDE0018は出なかった。

後、ID:+cAt7TAVは頓珍漢な上に指摘を一切聞かない人だから無視した方が良いよ。
[]
[ここ壊れてます]

873 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 02:11:28.67 ID:r7WFMRHn.net]
>> 853
Visual Studio 15.5.7 だけど IDE0018 は出なかった

リファクタリングしたらどうなるの?
https://codezine.jp/article/detail/9861?p=4

874 名前:789 mailto:sage [2018/03/31(土) 08:06:10.45 ID:Mw1mdL1r.net]
レスどうもありがとうございます。お返事が遅くなってしまい申し訳ありません。
日中はVisual Studioを使えそうになく、申し訳ないのですがきちんとしたお返事は夜になってしまうと思います。
中途半端な内容になってしまいますが、ひとまずいただいたレスにお返事したいと思います。
後ほど改めて書き込みますので、失礼をお許しください。

>>854
Visual Studio 2017のバージョンについてご報告できておらず申し訳ありません。
恥ずかしいことに最新版を使うという意識も持てていなかったので、古いバージョンを使っているかも知れません。
(ただ、古いバージョンで検証して下さった>>855様もIDE0018は出なかったとのことなので、
 なにか他のところに問題があるのかなとも思っています。)

>>855
ご検証どうもありがとうございます。
>>854様の結果と合わせて2つのバージョンで再現しなかったとのことなので、
私は何かとても基本的なところで間違いを犯してしまっているのかも知れません。
リファクタリング機能については、ご指摘をいただいた上で試したわけではないので後でまた確認しようと思いますが、
問題の箇所では動作しなかったように記憶しています。

875 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:08:51.24 ID:r1Fcmmf3.net]
>>855
不具合報告スレでも立ててそっちでやれよ

876 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:43:46.87 ID:+WsDcfNX.net]
別にいいよ
片っ端から透明あぼーんするだけだし

877 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:51:48.82 ID:OaeapR1O.net]
>>836
> 「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど
1年も前にバグと判明して解決してる
https://developercommunity.visualstudio.com/content/problem/8924/ide0018-false-suggestion.html

> 恥をかくのも勉強のうちかも
実践乙 w

878 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:03:24.19 ID:9aphfiP0.net]
>>789
正解だけ教える

bool TryGetMessage1(out string x) { x = "1"; return true; }
bool TryGetMessage2(out string x) { x = "2"; return true; }

string GetMessage(int x) {
if (x == 1 && TryGetMessage1(out var s)) return s;
if (TryGetMessage2(out var s)) return s;
return null;
}

WriteLine(GetMessage(x));

879 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:07:37.87 ID:r1Fcmmf3.net]
>>860
これが恥の上塗りか



880 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:42:07.43 ID:x9Yyswdb.net]
(結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)

881 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:44:49.99 ID:LMRl+wCl.net]
>>860
これは主旨が違うじゃん

882 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:45:43.39 ID:O8yBke8L.net]
ワッチョイないからNGがタルい

883 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:03:27.79 ID:9aphfiP0.net]
>>863
もともと修正方法教えろって言ってるんだからこれが正解だよ

884 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:09:24.39 ID:LMRl+wCl.net]
ワッチョイ必要だな

885 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:32:48.06 ID:OaeapR1O.net]
>>862
> (結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)
罵倒されてもしょうがないよね
って感じですけど?
しかも恥の上塗りしてる奴までいるし w

886 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:32:50.70 ID:IoBwmw2C.net]
>>865
>>789と出力結果が違うのに正解とか何ほざいてんのw

887 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:17:13.71 ID:G6tH+bWp.net]
FirstOrDefaultについて教えて下さい。
List<T>をFirstOrDefaultで条件のものを返してきた場合、
それは参照先のアドレスが返ってくるのでしょうか?
それとも写像としてコピーされたものが返ってくるのでしょうか
取り出したものの値を更新したときに、元のListは更新されますか?

888 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:28:08.82 ID:IoBwmw2C.net]
数分で試せることをなぜやらない

889 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:34:02.83 ID:r1Fcmmf3.net]
List<int>とかとList<MyClass>とかで違うよね的な?



890 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:39:45.66 ID:UG1yVXDX.net]
やってることは同じ(値をコピーしてくる)だけど結果が違ってくると言うこと

891 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:48:48.09 ID:feZwED6X.net]
教習所の教官「生徒が減ったので褒めちぎったら運転技術は向上!合格率も事故率も改善!俺はなんで今まで怒ってたんやろう?」 [274141358]
https://leia.5ch.net/test/read.cgi/poverty/1522384054/
5 名前:番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイWW d3e8-gBuS)[] 投稿日:2018/03/30(金) 13:30:33.99 ID:F53Z/ySd0
よく考えたら本当にジャップ案件だよな
初心者に対して怒鳴り散らしてどこが悪いかは一切教えない
部活と一緒だわ

892 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:04:38.32 ID:fwgHW5nR.net]
>>869
List<T>とかHashSet<T>とか初めから使えるやつはTが値型か参照型かだけ考えればいいよ
あと「Listが更新されるか」という言い方はTが参照型だと意味が曖昧になるから改めたほうがいいかと

ふと↓こんなのが頭をよぎったけど意味が分からなければスルーしておくれ
class MyList<T> : IList<T> where T : ICloneable { ... }

893 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:14:25.21 ID:UG1yVXDX.net]
IListは実装したことないな
実装例は見かけるけどOSSで実装してるのは見かけない

894 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:27:15.53 ID:fwgHW5nR.net]
>>875
>>874でIEnumerableでもICollectionでもなくIListを選んだのには深い理由があるのよ
文字数という理由がね
まあIsReadOnlyプロパティとかどうかとは思うよ

895 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:49:04.27 ID:G6tH+bWp.net]
ご指導ありがとうございます
Tが値型か参照型かというところが意識から抜けておりました
適当に組んで試してみて、その違いも確認できました

896 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:55:49.06 ID:tzO3VEeA.net]
モニタの解像度によらず実寸A4サイズのウィンドウを開いて2pの×を座標ランダムに20表示
それをクリックするというアプリを開発しようと思ってます。
最初モニタの解像度取得してモニタの実寸をユーザーが入力して、
そこからA4サイズは何ドットになるか計算してというのをフォームで作り始めたんだけど、
これだと×や他のボタンも全て計算して調整しなければいけないのかと気づきました。

WPFで開発するとこういうモニタサイズにかかわらず実寸で表示って簡単に処理できるの?

897 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:16:01.57 ID:l8CCe9Lg.net]
実寸はモニタ変更するたび変えないと駄目じゃん
フルHDのスマホとモニタじゃちげーし

898 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:27:51.62 ID:47Bv8u8/.net]
ユーザーが勝手にWindowsのDPI設定を変更してない限りはできるけど、
今更オワコンWPFに手を出すくらいならHTMLで作ることを強くお勧めする
CSSならmm単位で実寸指定できるからWPFよりも簡単だよ

899 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:34:37.92 ID:FNt76Udy.net]
>>868
お前は返しまでくだらないな



900 名前:デフォルトの名無しさん [2018/03/31(土) 17:37:43.10 ID:GqrQqkMZ.net]
イベント処理でキー読み込むのと、ただ単にキー読み込むのではどう違うの?
実行すると速度が全然違うんだけど...

901 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:38:31.40 ID:io+mDfEy.net]
例の教育心理系君か
AWS S3にHTML/CSS/JavaScript置いてURL教えるのが一番手っ取り早いだろうな
結果もJavaScriptからS3 APIで保存するようにすれば完全サーバーレスだ
その程度なら料金は月10円もしない

902 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:58:49.73 ID:tzO3VEeA.net]
ご無沙汰しておりました。
教育心理系のものです。
ようやっとC#の本読み終えて作り始めましたけど、
実世界での用紙とか×とかの大きさを統一しないと実験結果に影響が出るので実o単位で画面表示が必要なことに気づきました。

a. ディスプレイ解像度はC#で取得できたので、後は実モニタサイズをユーザーに入力してもらえば、小学生の算数レベルでA4用紙のウィドウは作れる

でいいかと思ったんだけど、
そうすると×の大きさや当たり判定の範囲まですべて計算しなければいけず、
なんかあほらしいことをやってるのか??
と疑問に思ってきました。

ブラウザ上に表示するとユーザー側でctrl+スクロールで表示の大きさ変えられちゃうんですよね。
実世界でのo単位での大きさを固定したいってあまりなさそうな要求だし、aでやってくしかないのかなぁ。

903 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:02:33.45 ID:UG1yVXDX.net]
そこまでやるなら被験者とモニターの距離も計測して一定にしないと…

904 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:12:00.40 ID:NJrC8qba.net]
なぁに網膜に直接書き込んでしまえばw

905 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:20:56.75 ID:/DPGnFFi.net]
いいね!

906 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:35:00.07 ID:tzO3VEeA.net]
>>885
その通りですね。
同じような実験で被験者の姿勢によりスコアが変わるらしいので。

907 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:42:00.60 ID:AhiWvdUc.net]
>>878
WpfにはViewBoxと言う拡大縮小自在なモジュール在るから上手くやりゃなんとかなるよ

908 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:59:42.15 ID:tzO3VEeA.net]
>>889
ViewBox調べてみます。
少しフォームベースで初めてみたんですけど、
これから勉強するならWpfとフォームどちらで作るのがおすすめですか?

フォームでもゴリゴリやっていけば狙ったものはつくれそうな感じはするんですけど、
wpfのほうがいいというのも聞いたりして悩み中です。

909 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 19:11:47.57 ID:AhiWvdUc.net]
>>890
件の用途だとformsは厳しいと思われるのでwpfを奨めるが、情報少ないから習得は簡単じゃないと思うよ
もし、不特定多数への配布を考えているならwpfの進化形であるUWPを使うのを奨める



910 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 19:59:43.42 ID:kEu+XyQj.net]
>>882
ただ単に読み込むのはどのタイミングでどうやってるの?

911 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:17:53.84 ID:tzO3VEeA.net]
>>891
wpf情報少ないんですか・・・。
UWPも書籍はまだ少ないみたいですね。
ど素人なので学習のための情報は欲しいなぁ。

フォームでも×を線で描いてしまえばなんとかなりそうなんですけど、
拙速コードでも早期論文化を目指してフォームでやるか
将来のためにUWPを勉強するか悩みますね。

912 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:26:11.30 ID:Tt7WJg3O.net]
>>893
WPFでもFormでもスケーリングはページ変換使うだけだから難しくないと思う。

■ Formを使う場合の問題点

- 自動でスケーリングされるのはグラフィックだけ。コントロールやそのフォントは
コードでスケーリングや座標変換する必要がある


■ WPFを使う場合の問題点

- GDI+ほど簡単じゃない

- 多数の図形を描画する場合はパフォーマンスが問題になる

913 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:01:55.63 ID:l8CCe9Lg.net]
何処の座標を実寸通りにしたいか?
だけでformでいいだろ
なんでボタンまでやる必要があるんだ?

914 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:04:08 ]
[ここ壊れてます]

915 名前:.01 ID:tzO3VEeA.net mailto: A4相当の大きさのウィンドウ表示って調べてみると難しいんですね。
DPI取得もなんかOSで100%以外の拡大表示にしてると当てにならないみたいだし、
ディスプレイの大きさはユーザーが実測値入力で妥協してももいいのかな・・・。
[]
[ここ壊れてます]

916 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:09:29.60 ID:g9lQ5N9X.net]
厳密な同環境を求めてるみたいだが、
マウスの移動速度で無理が出ると思う

917 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:25:11.42 ID:l8CCe9Lg.net]
>>896
だからできねぇって
スマホもフルhdだろ?
モニタもフルhdだろ?

918 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:26:20.15 ID:Tt7WJg3O.net]
>>896
一応モニター自身が持つEDIDとかいう情報に表示領域の物理サイズが含まれているらしい

WPFはどうだったか知らんけど、FormはOSのDPI設定を無視して指定ピクセルサイズでFormを
表示させられると思った。

だからDPIさえ分かれば目的の物理サイズのウィンドウを表示することは難しくないはず

919 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:40:05.11 ID:IoBwmw2C.net]
>>898
さっきからスマホスマホうるさい
WPFの時点でデスクトップWindows固定だって理解できないの?



920 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:48:21.76 ID:r1Fcmmf3.net]
>>900
えー、だから解像度に対するモニタのサイズが決定しねーと駄目でしょって話何だけど?
スマホを例に挙げたのはあんな小さいなりして解像度はフルhdだから

921 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:55:14.06 ID:IoBwmw2C.net]
ユーザーがモニタサイズを入力って何回も書いてあるじゃん
それじゃ不満なの?

922 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:55:29.08 ID:vbALr7Yq.net]
デスクトプPCとタブレットPCにでもしときゃ良いだろうに

923 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 23:28:19.33 ID:r1Fcmmf3.net]
>>902
逆にそこまで決定してると疑問が出るのが謎

924 名前:デフォルトの名無しさん [2018/03/31(土) 23:45:29.31 ID:U08lgUq5.net]
やっぱりC#もバカばかりなんだなあ
現代の三大バカ
ペチパー、ジャバパー、シーシャーパー
で決定やねw

925 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 00:58:58.57 ID:AmnK79El.net]
教えてください。

以下のような事をしたいと思います。
再現のために最低限必要なところだけを抜き出しているので、これだけだと意味が不明ですが、
同じような処理があちこちにあるので処理をまとめるため、このような事をしています。

public void Execute( string sql )
{
using (var command = new System.Data.SqlClient.SqlCommand(sql.ToString() ))
{
}
}

これをビルドしても警告等は出ませんが、コード分析の実行を行うと SqlCommand のところで
CA2100 の警告が出ます。意味は以下のページの通りです。

https://msdn.microsoft.com/ja-jp/library/ms182310.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-3

要するに関数パラメータで受け取った文字列にはなにが含まれているのか分からないので危ないよ、と言われているのだと思いますが
出来れば上の関数を利用する形式で進めたいと思います。
この形式のまま CA2100 を回避する手段のアドバイスをいただけると助かります。

926 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:09:42.05 ID:v0T9GXCI.net]
>>906
生のテキストを送るなバカ
PrepareなりSqlParameterなり使ってSQL文とデータを分離しろバカ
詳しくは「C# インジェクション対策」でググれバカ

927 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:10:28.60 ID:RE1ojOXr.net]
MDT_RAW_DPIで物理的なppiに近い値が返ってくるからそれ使えで済む話、で終われば良いんだが
あれちゃんとした値が返ってくる保証が無さそうなのがねー

928 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:21:16.42 ID:GUPc3ba+.net]
C#は、C++を難しく感じる人が使う言語だから。

929 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:26:38.59 ID:Cu8+FDkh.net]
文法だけならC言語が一番好き
クラス以降いらねー



930 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:39:12.76 ID:AmnK79El.net]
>>907
それはやってる。
再現する最低限までコードを削った結果としてその部分が見えなくなってるだけ。

931 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:43:15.77 ID:UKmXoisc.net]
>>906
なんでToStringしてんの?

932 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:45:10.58 ID:AmnK79El.net]
>>912
あ。ごめん。
いろいろ試してたときのコードが残ってました。
.ToString() がなくても再現します。実際にもそんな事してません。

933 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 02:06:42.96 ID:1BdiydkK.net]
急にタメ語になるのほんと草

934 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 02:10:36.19 ID:Cu8+FDkh.net]
>>911
えー?
でも出てる警告ってSQLインジェクションの警告ちゃうのん?

935 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 04:52:35.48 ID:fKZaPfKf.net]
>>911
ほんとにやってる?
このコードだけ出されても警告でるに決まってるし、リンク先のような対策しろとしか言えない

936 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 05:05:19.22 ID:fKZaPfKf.net]
>>906
一応コード分析で警告表示させないようにするだけでいいなら、SuppressMessage属性を付ければでなくなる
チームでやってるならメンバー全員の許可は必須

937 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 09:03:31.17 ID:gIH0xNQX.net]
>>906
ちゃんとリンク先読んでる?

メソッドに渡された文字列引数から構築された文字列を使用して IDbCommand.CommandText プロパティが設定されています。

って書いてあるんだからSqlCommamd.CommandTextに外部からもらった文字列を設定した時点でその警告になるよ
パラメーター云々はその後の話
その形式のまま使いたいなら>>917が書いてる通り抑止するしかない
ちゃんとやるならやりたいこと毎に関数作ってSqlCommamd.CommandTextに固定の文字列を設定するようにしないとダメ

938 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 10:20:28.44 ID:JxTU817j.net]
ストアド使いなさいよ

939 名前:906 mailto:sage [2018/04/01(日) 13:39:58.60 ID:AmnK79El.net]
レスをくださった皆さん、ありがとうございます。

>>917
現状では、 教えていただいた属性をつける方法を相談して、NG ならこのまま警告を残す。って方向かなと思います。
一応、先のリンク先の以下に当てはまるのでセキュリティ的には問題ないと考えます。

>警告を抑制する状況
>コマンド テキストにユーザー入力が含まれない場合は、この規則による警告を抑制しても安全です。

>>918
>ちゃんとやるならやりたいこと毎に関数作って
同じような処理があちこちにあるのを嫌って、906 のように出来ないかなと考えました。
ただ、一般的なやり方ではなかったかも知れません。

>>919
ストアドとは、たとえばこのリンク先の事で正しいですか。
https://code.msdn.microsoft.com/windowsdesktop/DataAccess-howto-32c91bf0

自分が試した限りでは CA2100 が出ました。
いままではストアドでも execute 付けて普通に SQL 文として実行してましたが、こういう方法もあったのだと勉強になりました。
またストアドはローカルDB では問題ないのですが、基幹DB では使わせてもらえないようです。軽く聞いてみた範囲での事ですが。



940 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:26:06.48 ID:+XMM3OWE.net]
20年以上前にcを使っていたことがあるという状態で、c#を独学で学び始めたところです
極めて初歩的な話だとは思いますが、どうしてもわからないので教えてください

下記のコードで、「未割り当てのローカル変数'num'が使用されました」というエラーが出て
コンパイルできません。

try-catch構文の後の Console.WriteLine(...) を、try節の中に中に入れるとコンパイルが
できるのですが、try - catch構文以降は、変数のスコープが失われてしまうということなの
でしょうか。

using System;

class ExceptionTest
{
static void Main()
{
int num;
string s;
try
{
Console.Write("enter a number : ");
s = Console.ReadLine();
num = Int32.Parse(s);

} catch(Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Your number : " + num);
}
}

941 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:40:32.32 ID:ut+4lapb.net]
>>921
もしtryブロックの中で例外が発生した場合、

> Console.WriteLine("Your number : " + num);

この行に到達した時点でnumの値はどうなってるでしょうか?

942 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:48:12.04 ID:GWiU0YBt.net]
未定義

943 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:50:28.41 ID:JxTU817j.net]
>>921
null許容型にするか、素直に0で初期化しておく

944 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:50:55.68 ID:JxTU817j.net]
>>920
ストアドはそのとおりです

945 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:51:15.76 ID:/o+55+4t.net]
>>921
スコープの問題ではなく、try節のnum代入に到達しない可能性があるから
文脈からすれば仰る様にnum出力をtry節に含める、あるいはint num = 0;等…
C#はそういうの然り、C/C++よりガチガチに厳しい

946 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 19:28:44.37 ID:fxgoPYx5.net]
そのうちc#にもdeferが導入されるみたいだけどそういうのでボコボココンパイルエラーが出るようになるのか

947 名前:デフォルトの名無しさん [2018/04/01(日) 19:39:39.66 ID:xe0krAxA.net]
>>926
C/C++でだって未初期化の値を使うコードを書くべきじゃ無いけどな

948 名前:906 mailto:sage [2018/04/01(日) 21:34:56.28 ID:AmnK79El.net]
>>925
thx

949 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 23:12:20.14 ID:ECJY99tL.net]
未初期化の(可能性がある)変数は、参照できない。バグ



950 名前:デフォルトの名無しさん [2018/04/02(月) 12:27:49.40 ID:7SJzoey2.net]
必ず初期化されるやんC#

951 名前:921 mailto:sage [2018/04/02(月) 12:31:36.23 ID:sF1TxYYm.net]
皆様ありがとうございます
変数numが定義されていないというエラーだとばかり思っていたのですが、初期化されていないという意味だったのですね
理解できました

952 名前:921 mailto:sage [2018/04/02(月) 12:37:01.02 ID:sF1TxYYm.net]
>>931
私もそう思っていたのですが、違うのでしょうか
手元に書籍がないので、参考にしている本にはなんと書いてあるか不明ですが、
c#では整数型の変数は自動的に0で初期化される、と書いているサイトも
あるようです

953 名前:921 mailto:sage [2018/04/02(月) 12:39:19.98 ID:sF1TxYYm.net]
>>933
訂正
クラスのフィールド変数は初期化されるけれど、メソッド内のローカル変数は初期化されないのですね
誤解していました

954 名前:デフォルトの名無しさん [2018/04/02(月) 18:07:44.63 ID:6bvpmFc5.net]
C#技術者は他の言語に比べて年収はいいんですか?

955 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 18:13:31.05 ID:XIES5nIM.net]
>>935
ここが技術板なのでプログラマ板で聞いてください

956 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 20:42:37.26 ID:6Vp1brVM.net]
winformsのTableLayoutPanelで2つの列を作成したとき、プログラムの実行中に左右の幅をマウスで調整することはできますか?

957 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 20:44:29.22 ID:MPXX1X60.net]
>>937
どのコントロールでもMouseDown/Move/UpイベントとSize指定ができればいくらでもできる

958 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 22:39:46.16 ID:zzbs2RRz.net]
解釈の原因は解釈者が持つ自分ルール。解釈の自由は責任を伴う
言葉風紀世相の乱れはそう感じる人の心の乱れの自己投影。人は鏡
憤怒は一時の狂気、無知無能の自己証明。中途半端な知識主ほど激昂
「真実は一つ」は錯誤。執着する者ほど矛盾を体験(争い煩悩)
他人に不自由(制約)を与えれば己も不自由(不快)を得る
問題解決力の乏しい者ほど自己防衛の為に礼儀作法マナーを要求
情報分析力の低い者ほどデマ宗教フェイク疑似科学に感化洗脳
自己肯定感の欠けた者ほど「己の知見こそ全で真」に自己陶酔
人生経験の少ない者ほど嫌いキモイ怖いウザイ憎い想定外を体験
キリスト教は世界最大のカルト。聖書は史上最も売れているト本
全ては必然。偶然 奇跡 理不尽 不条理は思考停止 視野狭窄の産物
人生存在現象に元々意味価値理由目的義務使命はない
宗教民族領土貧困は争いの原因ではなく口実動機言訳(原因帰属錯覚)
虐め差別犯罪テロ紛争は根絶可能。必要なのは適切十分な高度教育
体罰は指導力問題解決力の乏しい教育素人の独善甘え怠慢責任転嫁
死刑は民度の低い排他的集団リンチ殺人。「死ねば償える」は偽善
核武装論は人間不信と劣等感に苛まれた臆病な外交素人の精神安定剤
投票率低下は社会成熟の徴候。奇人変人の当選は議員数過多の証左

感情自己責任論 〜学校では教えない合理主義哲学〜 m9`・ω・)

959 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:16:17.88 ID:VPR2x1c1.net]
2chビューワのスレ欄のように、listViewでマウスオーバーするとその行の文字にアンダーラインが入るようにしたいです。
やってみると、以下のサイトにそれに近い方法がけいさいされていたのですが、サイトに指摘があるように画面がちらつきます。

ListViewのアイテムがポイントで選択、シングルクリックでアクティブにできるようにする - .NET Tips (VB.NET,C#...)

https://dobon.net/vb/dotnet/control/lvpointselection.html
そのため、ちらつきを抑制する方法を探したところ、いろいろ出てきましたが、どこにどのコードを記述すればいいのかさっぱりわかりませんでした。
下記サイトが一番丁寧な気がしましたが、これを参考にしてもフォーム上にlistviewが出てきません。

ListViewを更新したときのちらつきを抑制する(C#メモ): amongの雑記



どうすれば、ちらつきを抑えたlistviewを作成することができるのでしょうか?教えてください。



960 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:17:15.94 ID:VPR2x1c1.net]
すいません、
>ListViewを更新したときのちらつきを抑制する(C#メモ): amongの雑記
についてはNGワードとなってしまいました
下記のURLのスペースを抜いたものです。
amonution.sb lo.jp/article/45398035.html

961 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:31:51.83 ID:MPXX1X60.net]
>>940
これもどのコントロールでも同じなんだがコントロールにダブルバッファのプロパティを付け加えた新しいコントロールを作ってそれを使う
おなじdobonのサイトに「リフレクションを使って、DoubleBufferedプロパティにアクセスする」もある
https://dobon.net/vb/dotnet/control/doublebuffered.html

962 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:50:34.23 ID:VPR2x1c1.net]
>>942


963 名前:信ありがとうございます。
初心者なもので
>ダブルバッファのプロパティを付け加えた新しいコントロールを作ってそれを使う
これの方法がよくわからないのです。

そのページも見たのですが、
>public class DoubleBufferingListView : ListView
以下の部分を全体のコードのどこに記述ればいいのか、記述したあとそれをどうやって使うのか、というのがそもそもわからないのです。
[]
[ここ壊れてます]

964 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:53:34.69 ID:6Vp1brVM.net]
>>938
すみません、もう少し詳しくおしえていただけないでしょうか?

もとの文では分かりづらかったかもしれませんが、コントロール中の左右の幅(比率)を変更したいです。
(デザイナ上でやるように、つまみを掴んで左右に動かすイメージです)

965 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:54:11.10 ID:VPR2x1c1.net]
とりあえず、namespaceの直下に貼り付けてみてビルド→うーん、エラーか
public partial class Form1 : Formの下に貼り付けてみる→動いたが、じゃあ次に何をすればいいのかわからん。

こんなレベルです。

966 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:03:03.60 ID:BdcH2dSM.net]
>>943
クラスとして記述してデザイナに表示されなければ新しく作ったコントロールを含めたアセンブリを一度ビルドする
dobonのどこかにもやり方あるんじゃないの
>>944
MouseDown:
マウスが押されたe.Location(をスクリーン座標に変える)を変数に記録する
決められた位置で押された場合にフラグをセットする
MouseMove:
フラグがセットされていれば現在の座標と記録していた座標の差分を計算してSizeを変更する
MouseUp:
フラグを破棄する

967 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:16:48.21 ID:Bkifwxhh.net]
>>946
public partial class Form1 : Formの直下に記述して、F7を押してビルドして、form1.cs[デザイン]タブを開いてみましたが、
特に何か増えたような様子はありませんでした。
ご指摘事項を正しく実行できてますでしょうか?

968 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:25:08.53 ID:h9dQUiAD.net]
>>946
>>937です。
分かりやすく説明ありがとうございました。明日すぐ実装してみます。

969 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 10:13:42.24 ID:Bkifwxhh.net]
すいません、これで解決しました。

System.Windows.Forms.Control のダブルバッファリングをさくっと有効にする - kawanon
d.hatena.ne.jp/m_kawanon/20100708/1278587297



970 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:10:02.31 ID:tN12x087.net]
リッチテキストボックスのスクロールバーだけ、ドラッグしてもバーがついてこないのですが、
私だけでしょうか?

971 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:29:32.68 ID:vN2mpw+F.net]
業務用アプリをオサレな画面にしたいんだけどWPF使ってそこらのテーマ拾ってくるのが手っ取り早いかね

972 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:35:42.00 ID:VCT3rU1H.net]
>>951
WPFのテーマなんてクッソ古臭いデザインの10年近く前からメンテされてないのしかないぞ
WebかUWPで今風のフラットデザインにしましょう

973 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:39:30.70 ID:LPfCppd2.net]
デザインパターンって大事ですか?

974 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:42:17.43 ID:TkuXyycY.net]
普通は大事じゃない
メジャーな一部の奴だけなぞっておけばいい

975 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 00:15:51.60 ID:Lt0+eORa.net]
>>951
Material Design In XAML Toolkitが今風で良い感じだよ。
タブが必要なら同じ作者のDragablz Tab Controlも併せてどうぞ。

976 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 00:29:06.64 ID:scqJAZTy.net]
>>953
全身シングルトンで武装して備えろ

977 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 01:35:51.04 ID:gGAYD4mI.net]
ざっと知っておくに越した事は無い
使うかどうかは別としてね

むしろ、「これはやるな」っていうアンチパターンを覚えた方が良いかもだ

978 名前:デフォルトの名無しさん [2018/04/04(水) 02:58:58.46 ID:3/OGlZbi.net]
バグってハニー

979 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 07:59:24.78 ID:ClxMGJax.net]
material designとかタッチメインならいいけど、マウスメインのデスクトップアプリならmaterial designはスペースが無駄すぎる



980 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 20:33:02.49 ID:n4eM316R.net]
excelファイルを操作する必要があり、いろいろ調べたらclosedXMLを使うのが良さそうという
結論に達したのですが、詳しい解説のあるサイトや書籍はないでしょうか。

ファイルの開き方、セルの参照方法などは普通に見つかるのですが、提供されている
メソッドの一覧とか、発生する例外とか、実用上知っておくべきことを知りたいのです
(主にエラートラップをするためです)

公式ドキュメントがどこにあるかすら発見できなかった程度の英語力ですが、ドキュメントの
ありかを教えていただければ、辞書を引きながらでも調べてみます

981 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 20:50:20.08 ID:K+0BZuJc.net]
Excel操作はCOM Automation以外には手を出すな
地獄を見ることになる

982 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 20:53:47.86 ID:Uk0C/m1f.net]
ClosedXMLはマジ大変

983 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:05:58.11 ID:Ft6CGKk+.net]
村の禁忌に触れたような言い様だなw

984 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:27:26.09 ID:mQqkiub7.net]
泣く子はいねかー

985 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:30:08.25 ID:PCVfDfH6.net]
ExcelのCOMオートメーションはサーバーでの動作保証が無い時点でゴミなんすよ

986 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:32:26.97 ID:BmbE00Mi.net]
>>960
https://github.com/closedxml/closedxml/wiki

使ったことないけどExcelDataReaderも速さの面ではいいってどっかの記事で見た

https://github.com/ExcelDataReader/ExcelDataReader

987 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 22:21:19.70 ID:noE6VTyE.net]
エクセルファイルなんてグレープシティのスプレッド買えば一瞬で終わるだろ

988 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 22:50:52.54 ID:OrTn2AQm.net]
WPFってどういう用途なら使うべき?
文献やネット検索が少なくて使えん

989 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:00:46.54 ID:T8BktjHU.net]
EPPlus



990 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:21:00.13 ID:Lsgd0/8M.net]
>>968
いかなる用途でも使うべきではない
MSの推奨はElectronとASP.NET

991 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:34:42.99 ID:Lt0+eORa.net]
やたらElectron推す人いるけど、言うほどMSが勧めてるかなぁ

992 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:42:42.72 ID:9CBA0Lmr.net]
Electronは縦書きエディタすら作れない駄目なやつ
表示はどうにでも出来るが入力が機能的に絶対無理とか俺が費やした半日を返せよ

993 名前:960 mailto:sage [2018/04/04(水) 23:46:48.80 ID:n4eM316R.net]
>>961-966
触れてはいけないものに触れてしまったかのような反応ですが、なんとかドキュメントを
読んで頑張ってみますわ・・・

>>967
趣味で書いてたVBAマクロをスタンドアロンに書き直したい(データだけexcelファイルから
流用したい)という用途なので、万円単位の買い物は無理です、残念

994 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:48:56.91 ID:v0eOpRGB.net]
>>969
EPPlusは早いし使いやすいよね

995 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 02:05:31.70 ID:G4evJUNh.net]
>>972
縦書きはWPFも非対応だろ

996 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 08:55:29.27 ID:3wDwo2/L.net]
MSがPWAに手を出したから、類似技術のElectronは始まる前にMSでは終わった

997 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 10:13:54.51 ID:c77DGTlb.net]
コンソールとフォームしか作ったことないけどまだまだ

998 名前:「けますか? []
[ここ壊れてます]

999 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 11:09:05.32 ID:796HNo8s.net]
趣味ならどうでもいい
職業ならWebできないと仕事ない



1000 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 12:00:33.19 ID:D2y+fK6k.net]
てっきり今後はWPFが主流になると思って使ってみたけど、
情報がネットに少なすぎてまいったわ

1001 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 14:16:56.73 ID:+3oTwv9E.net]
趣味で作ってるから問題ないわ

1002 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:48:57.38 ID:2ZtD67QF.net]
例外処理について教えてください

簡単な例で、キーボードから数字を入力させて処理するとして、非数字が入力されたら
数字が入力されるまで、正しい入力をするよう促したいとします
(これだけなら例外を使わなくても簡単ですが、あくまで例として)

bool flag = false;
string str;
int i=0;

while(flag != true)
{
try
{
Console.Write("enter a number = ");
str = Console.ReadLine();
i = Int32.Parse(str);
flag = true;
} catch
{
Console.WriteLine("incorrect number.");
}
}
Console.WriteLine("your number is : " + i);

こんな感じで、try-catchの間をループで囲んで、脱出フラグを用意するのが正攻法
なのでしょうか?
なんかもっとスマートな方法がありそうなのですが

1003 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:57:03.35 ID:dUUr3xK4.net]
>>981
いや、例だと
回答してもこれは違う実は書いてないけど
こういう問題があって駄目だの
小出しでどんどん出るから
ピンポイントでこの問題を解決したいってのを書いて

1004 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:58:19.97 ID:M7HPB+1x.net]
do while

int.TryParse

1005 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:59:25.26 ID:IVUDpQN0.net]
var i = 0;
while (true) {
    Console.Write("enter a number = ");
    var str = Console.ReadLine();
    try {
        i = Int32.Parse(str);
        break;
    }
    catch (FormatException) {
        Console.WriteLine("incorrect number.");
    }
}
Console.WriteLine("your number is : " + i);

1006 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:04:19.96 ID:IVUDpQN0.net]
iを0で初期化するのもやめたほうが良かったな

1007 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:11:00.58 ID:2ZtD67QF.net]
>>982
すいません、ピンポイントで課題に直面しているのではなくて、勉強中で疑問に思ったので
質問しました
例えばファイルオープンで存在しないファイル名を掴まされたとか、テキストファイルを想定
しているところにバイナリを噛まされたとか、そういうケースのリトライをどうやって実装するのかと
疑問に感じたのです

1008 名前:981 mailto:sage [2018/04/05(木) 22:19:06.91 ID:2ZtD67QF.net]
>>984
このソースは理解できましたが、>>985はどういう意味でしょう?
私は921でもあるのですが、この時指摘いただいたとおり、iを初期化しておかないと
未割り当てとしてコンパイル通りませんが

1009 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:24:09.13 ID:dUUr3xK4.net]
>>986
ファイル読み込みに失敗しました。
Windowsを終了します。



1010 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:36:19.31 ID:7xCMhR6w.net]
気持ちは分からんでもないが、抽象的な質問しても抽象的な答しか返ってこないと思うw

static void Main(string[] args)
{
  var number = 0;
  Func<bool> tryAskNumber = () =>
  {
    Console.Write("enter a number = ");
    return int.TryParse(Console.ReadLine(), out number);
  };

  while (!tryAskNumber())
    Console.WriteLine("incorrect number.");
  Console.WriteLine($"your number is : {number}");
}

1011 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:36:33.86 ID:796HNo8s.net]
>>986
そんなもん具体的に何をどうリトライしたいのかによる
それが明確になってるならそれをそのまま実装するだけだ
ネットワークエラーのようにそのまま自動的にリトライ可能なエラーならある程度決まったパターンがあるけど、
>>986のように条件を変えない限りリトライしても必ず失敗するケースでは個別に考えるしかない

1012 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 23:38:35.52 ID:IVUDpQN0.net]
>>987
この場合は while を抜けたときは必ず i に値が代入されているとコンパイラが判断できるので通る
https://ideone.com/kUpXYh

1013 名前:981 mailto:sage [2018/04/06(金) 06:10:19.26 ID:e2Dy7HRM.net]
>>989
私の学習では、まだ

Func<bool> tryAskNumber = () =>

この書き方が理解できていないのですが、これでやっているのは例外の処理ではなくて
boolでメソッドの戻り値を評価して処理を繰り返しているのですね?

抽象的な質問だと言われればそのとおりなのですが、エラーが発生したときに例外を
返してくるメソッドを使っているときに、正常処理ができるようになるまで同じ処理を繰り返す、
というケースの質問でした
条件を変えるとかは本質的な話ではなくて、「例外が発生しなくなるまで繰り返す」という
処理フローそのものの質問です
>>984で、break文でtryの中からwhileブロックを抜ければよい、と理解できたので十分です
(tryブロックから、その外側のwhileを抜けられると思ってなかったので躓いてました)

数字入力を取り上げたのは、例として単純で、言わんとすることがすぐに伝わるかと思った
だけです

>>991
>>984
の var i=0; を var i; にしただけだとエラーになりましたが、int i; なら通るんですね

1014 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:09:07.04 ID:iz5pUoek.net]
>>981
例外が出たらアプリケーションを止める
ファイルオープンだとしてもそれは変わらず、存在しなくてリトライしたいなら以下のような事前チェックをするべき
if(存在していない)continue;

ってのが理想だけどファイル系のエラーってたくさんあるし、確認しずらいのもあるからtry-catchを使わないのが現実的じゃないことも

メソッドが例外を出すのは使ってはいけない使い方をしているということなので、使っていい状態か確認してから呼び出すよう心がけるべきかな

1015 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:31:23.65 ID:KffLTaJD.net]
foreach(var a in XXX)
{


みたいなことを可能にするためには
XXX はどんなクラスを継承してないといけませんか?
(何が必要か)

たとえば、XXX がDataRowCollection 型だったら
foreach(DataRow a in XXX) とやらないと怒られてしまいます。

DataRow[] だったら、var が使えます。

この違いは一体なんだろう(なにが必要なのかと)、と

1016 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:39:53.65 ID:QmpxvPzQ.net]
ジェネリックインターフェイスを実装してるから

1017 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:44:13.58 ID:19AXhYIg.net]
IEnum〜だっけ

1018 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:54:13.71 ID:KffLTaJD.net]
つまり、DataRowCollection は
IEnumerable を継承しているから、foreach の in に使えるけど
IEnumerable<T> は継承してないから foreach(var は許されない

ということですか

1019 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 12:11:24.19 ID:78uF6QEL.net]
>>992
ラムダ式を使わずに書くとこう
static void Main(string[] args)
{
  var number = 0;
  while (!TryAskNumber(out number))
    Console.WriteLine("incorrect number.");
  Console.WriteLine($"your number is : {number}");
}

static bool TryAskNumber(out int number)
{
  Console.Write("enter a number = ");
  return int.TryParse(Console.ReadLine(), out number);
}

プログラミングの基本は一気にすべてを解決しようとしないこと。
問題を小さな問題に分割すること。

「○○が成功するまで繰り返す」なら、○○の部分と成否を判定してリトライ
する部分は分けた方が基本的に分かりやすくなる

抽象的な質問に対して何か言えるのはこの程度だと思うけど....



1020 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 12:42:38.82 ID:bxzO13cU.net]
>>994
継承は関係ない
GetEnumeratorってメソッドがあればok

1021 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 15:01:40.67 ID:Mgh91ASd.net]
へー

1022 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 33日 23時間 52分 35秒

1023 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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