X



ふらっと C#,C♯,C#(初心者用) Part134
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/11/28(火) 21:30:48.55ID:7U+HR4FY
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/

■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/

■コードを貼る場合は↓を使いましょう。
http://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
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0542デフォルトの名無しさん
垢版 |
2017/12/13(水) 03:35:29.20ID:Aa4rKi8+
馬鹿の相手する馬鹿とどっこいどっこいだわ
両方殺すにはどうしたらいいか質問していい?
0545デフォルトの名無しさん
垢版 |
2017/12/13(水) 09:49:18.40ID:5hkNOkMK
勉強のために作ったアプリの単体テスト始めたけどテストコードすら書けない
やっぱコピペばっかで作れただけで何も身に付いてないんだなぁ
データベースから取ってきた値の比較とかどうやるんだよ…
0546デフォルトの名無しさん
垢版 |
2017/12/13(水) 09:57:31.43ID:WF2IXduz
>>545
データベース読むとこのテストはモック使うんだよ。
0547デフォルトの名無しさん
垢版 |
2017/12/13(水) 10:03:04.23ID:5hkNOkMK
>>546
モックってダミーみたいなやつのこと?
せっかく教えてもらったのに何が便利になるのか全然イメージ出来ない…
0548デフォルトの名無しさん
垢版 |
2017/12/13(水) 10:05:50.55ID:7X3tjs6V
>>547
用語教えてもらっただけだからわからなくても仕方がない
勉強するのなら自分で使うようなツール作れ。簡単なやつでいいぞ
少しずつ機能増やしていくようにしたらスキルが上がっていく
0549デフォルトの名無しさん
垢版 |
2017/12/13(水) 10:11:11.76ID:WF2IXduz
>>547
グーグル先生にMoqを教えて貰え
0550デフォルトの名無しさん
垢版 |
2017/12/13(水) 10:14:58.04ID:1Q6K9tEb
Aの値を求める

AとBが等しいか
1等しくないなら
Aの値を変更して初めに戻る
2等しくなくて3回Aの値を変えている
失敗で終了
3等しい
正常に終了


というプログラムを作りたいのですが
どう条件分岐や反復を使用していいかわかりません
Aの値の変更は他アプリへの入力で、Aの値を求めるというのは他アプリの状態です
アドバイスお願い致します
0552デフォルトの名無しさん
垢版 |
2017/12/13(水) 10:24:58.47ID:7X3tjs6V
>>550
C#以前の質問だと思うしいろいろあるんだけど
int count=3;
while (count>0)
{
[Aの値をGet]
if (B==A) break; //正常に終了
count--;
}
if (count>0) {[正常に終了}]
if (count==0) {[3回とも失敗]}
0553デフォルトの名無しさん
垢版 |
2017/12/13(水) 10:29:29.60ID:1Q6K9tEb
>>552
ありがとうございます!
これでいきます!
0554デフォルトの名無しさん
垢版 |
2017/12/13(水) 12:09:08.61ID:zXzMZXIu
いやいや人の回答にケツつけるのもあれだけど、普通にforループ使った方が分かりやすいよw
だって要するに3回までリトライするってだけの話でしょw

const int rertryCount = 3;
A a;
for (int i = 0; i < retryCount; i++)
  if((a = GetA()) == B) return true; //成功
return false; //失敗
0555デフォルトの名無しさん
垢版 |
2017/12/13(水) 12:11:06.80ID:zXzMZXIu
const int rertryCount = 3;
これはちょとミスリーディングか。
こだわるなら

const int maxRetryCount = 3;
こっちの方がいいね
0556デフォルトの名無しさん
垢版 |
2017/12/13(水) 12:16:44.81ID:ubNNZos/
文末の無駄煽りwイラネ
0557デフォルトの名無しさん
垢版 |
2017/12/13(水) 12:21:20.67ID:WF2IXduz
宿題への解答はスルーで
0560デフォルトの名無しさん
垢版 |
2017/12/13(水) 18:22:17.80ID:celmGK9q
getA()=Bじゃダメな理由は?
0562デフォルトの名無しさん
垢版 |
2017/12/13(水) 18:24:34.34ID:celmGK9q
>>561
何言ってるか分からん
ただの質問
ここ質問スレだろ?
0564デフォルトの名無しさん
垢版 |
2017/12/13(水) 18:31:40.81ID:celmGK9q
>>563
じゃあどこですんの?
言語に関係無いプログラマの談話は要らんが
0565デフォルトの名無しさん
垢版 |
2017/12/13(水) 18:51:30.28ID:Aix7CEXX
>>545
簡単にユニットテストできるようにSOLIDなコードを書かないとダメ
ただ漠然とユニットテストやればきっとうまくいくんや〜などと考えてるようなら先はないぞ
0566デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:17:20.81ID:48dLEnlz
VBですみません。下記のようなコードで印刷ジョブの数を取得すると
OSの印刷ジョブ一覧ウィンドウで見える数と違うのですが
なぜ違ってしまうのでしょうか?

'プリントサーバの情報取得
Dim prtSv As New LocalPrintServer()

'印刷キュー取得
Dim que As PrintQueue = prtSv.DefaultPrintQueue

msgbox que.NumberOfJobs
0569デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:28:38.16ID:celmGK9q
>>566
OSのジョブ一覧は変更の反映が遅いから
ジョブ一覧の画面でF5押しまくれ
0570デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:29:21.02ID:48dLEnlz
>>567
環境はWin7です。プリンタを一時停止にしてジョブを40個くらいためていくと
que.NumberOfJobsは35が返ってきたりします。
時間が経つと40が返ってきたりします。
時間差があるのでしょうか?印刷が成功したか知りたいのですが
そのジョブが見つからないのです。
0573デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:36:20.02ID:celmGK9q
>>572
読んでないからよくわからんけど反映が遅れるのはジョブ一覧の画面上の話で実際の内部のジョブ一覧はリアルタイムで変更されてるぞ
多分のおまえのやりたいことはできる
0574デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:40:02.91ID:celmGK9q
>>570で言えば35の方が正しいってことな多分
知らんけど試してくれ
0575デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:46:53.57ID:48dLEnlz
>>573
自分も認識としてはそうなんですが何故か想定と違う値が返ってきてしまい・・・
ちなみに.NETの問題かとも思いましたがAPIのEnumJobs()でも同じ値が返ってきました。
JOB一覧でF5を押しまくって40なのを確認してque.NumberOfJobsを取得しても
35なんですよね。で数分待つと40が返ってきたり。
直前にque.Refresh()はしています。
0576デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:56:07.48ID:celmGK9q
>>575
マジか、すまんな
0578デフォルトの名無しさん
垢版 |
2017/12/13(水) 20:00:10.64ID:celmGK9q
質問ですがWPFでCommandからModelにアクセスするにはどうすればいいですか?
例えばボタンをクリックしたらModelのBuyNumプロパティをインクリメントしてそれをViewのLabelに反映させたりしたいときなどです。
0580デフォルトの名無しさん
垢版 |
2017/12/13(水) 20:55:52.96ID:6RipZ3Bg
>>578
VMにコマンドがあるんだったらVMのフィールドにModel持ってるはずだろ?
何の問題もなくアクセスできるはずだが一体何が分からないのか
0581デフォルトの名無しさん
垢版 |
2017/12/13(水) 21:45:44.50ID:pl2NU6fI
>>578
command生成時にVMのメソッドかVMのインスタンスをcommandに渡す

つかICommandなんて使わずにコードビハインドのコールバックからVMのメソッド呼び出す方が分かりやすいよ
0582デフォルトの名無しさん
垢版 |
2017/12/13(水) 21:56:15.26ID:i7QaIdVf
>>578
よくあるパターンだと、DIコンテナってのを使ったりします。モデルのインスタンスを管理するプログラムが有って
VMが起動されたときにModelのインスタンスをVMに渡すことが出来ます
Prism.Unityとか、MEFとかAutoFacなんてのがありますので興味があれば調べてくださいね
0583デフォルトの名無しさん
垢版 |
2017/12/13(水) 22:32:23.84ID:D2CxP1eV
コマンドバインディングとデータバインディングを一緒くたにするのは混乱の元
つかWPFスレの次スレ建ってないんだな
0586デフォルトの名無しさん
垢版 |
2017/12/13(水) 23:23:03.58ID:vLvUNPwO
EF Coreを使ってます
UpdateでWhereを指定するにはどうしたらいいでしょうか?
現在は以下のようになってます

ctx.Students.Update(student);
ctx.SaveChanges();

もしくは、行ロックのやり方を教えてください
レコードを更新する際に特定の条件下なら1度だけ更新をしたいです
0587デフォルトの名無しさん
垢版 |
2017/12/13(水) 23:31:04.98ID:celmGK9q
>>583
もう廃れてるからね
知らんけど
0589デフォルトの名無しさん
垢版 |
2017/12/13(水) 23:39:24.47ID:uYugybSh
>>550
こういったのプログラミングするときちゃんと書かれてる通りに作れって思う
仕様書の書き方がクソで勝手に直したくなるのは分かるけど

enum Hoge{最初から,失敗終了,成功終了}
private Hoge Func(A a,B b,Int changeCount){
bool 等しい a==b;
if(!等しい&&changeCount!=3)return Hoge.最初から;
else if(!等しい&&changeCount==3)return Hoge.失敗終了;
else if(等しい)return Hoge.成功終了;

throw new Exception("仕様書に書いてないけど?");
}
0592デフォルトの名無しさん
垢版 |
2017/12/14(木) 06:07:27.62ID:tSpFRQdC
>>590
連結は出来ませんよね?定義には含まれてないので。
具体的にどのようなコードになりますか??
0595デフォルトの名無しさん
垢版 |
2017/12/14(木) 08:28:56.13ID:VVrew0Yx
>>594
そういう仕事に遭遇しない
でもそんなレアだといざデスマになったときに追加人員が補充できないから人数が少ないってヤバそう
0596デフォルトの名無しさん
垢版 |
2017/12/14(木) 08:51:15.38ID:kupDQT+K
アジュールってクラウド鯖環境なだけだが
0599デフォルトの名無しさん
垢版 |
2017/12/14(木) 09:33:48.37ID:6p67cfA3
アジュールAWSとVPSの違いは?
0604デフォルトの名無しさん
垢版 |
2017/12/14(木) 11:00:13.42ID:VYyAdkca
>>600
全部でも良いけど
そのメソッド内でキャッチして例外に対応できる場合のみ
0605デフォルトの名無しさん
垢版 |
2017/12/14(木) 12:14:15.12ID:E4k7gbUw
どこに書いてもいいけど
} catch (Exception) { }
とかやんなよハゲ、それじゃどこで例外が発生したかわからんだろが、どうやってデバックすんだ
と怒鳴られたんだろう
事なかれ主義で育てられた子が面倒を起こすパターン
事なかれ例外と名付けよう
0606デフォルトの名無しさん
垢版 |
2017/12/14(木) 12:19:44.66ID:yn4+AjAE
>>605
だって、このメソッドで落ちると困るじゃん例外とも言う
0607デフォルトの名無しさん
垢版 |
2017/12/14(木) 12:33:59.88ID:PpIxqW4X
>>605
vsなら見れるだろ
知らんけど
0609デフォルトの名無しさん
垢版 |
2017/12/14(木) 13:34:33.61ID:6p67cfA3
>>608
語るなら理由も書いてくれ
0612デフォルトの名無しさん
垢版 |
2017/12/14(木) 14:13:12.44ID:yn4+AjAE
>>610
一律で書かないと言うのは集中キャッチハンドラーがあるからでしょ
0614デフォルトの名無しさん
垢版 |
2017/12/14(木) 15:39:34.55ID:yn4+AjAE
>>613
自分で書いてない所にあるんだよ。
0617デフォルトの名無しさん
垢版 |
2017/12/14(木) 18:09:08.31ID:oUWqnTgP
IO系とかエラーが発生する可能性のある一帯だけ囲んで、こんなとこじゃエラー出ないよね?
ってとこは囲わないかな
万一そういう所でエラー発生したら、そのエラー箇所を特定しやすいように
売り物のソフトだと、好ましくないやり方かもしんないけどな
0618デフォルトの名無しさん
垢版 |
2017/12/14(木) 20:49:00.77ID:COokNIga
復旧可能かつ復旧を試みる事が要件で明示されてればそこでキャッチする
それ以外は基本的に全てキャッチしてはならない
グローバル例外ハンドラに任せてログ出力やユーザー通知を行う
0621デフォルトの名無しさん
垢版 |
2017/12/14(木) 22:01:50.75ID:NV/46Hd7
>>620
自分で書いてミスるのを防ぐため
0622デフォルトの名無しさん
垢版 |
2017/12/14(木) 22:42:27.89ID:83z5th3I
なんで?
Finallyあると開放されないん?
0625デフォルトの名無しさん
垢版 |
2017/12/15(金) 02:32:16.25ID:6xqAElZe
1234.5678 => 1,234.5678
1234.56 => 1,234.56
123.456 => 123.456

というように、
数値を3桁区切り+小数点を含める(0埋めしない)文字列を出力するにはどうしたら良いでしょうか?
0627デフォルトの名無しさん
垢版 |
2017/12/15(金) 02:45:25.60ID:6xqAElZe
>>626
C#ってわざわざ面倒臭いことしないといけないんですね・・・
0628デフォルトの名無しさん
垢版 |
2017/12/15(金) 02:53:08.52ID:OGT2pKSi
>>627
他の言語でできることならフォーマット用意してあるかもしれないから調べたら?
そこまで見ていないから
0631デフォルトの名無しさん
垢版 |
2017/12/15(金) 09:05:36.73ID:BaW7Km5G
Console.WriteLine("{0:#,0} ", 数値);

こんだけな
0632デフォルトの名無しさん
垢版 |
2017/12/15(金) 09:14:42.49ID:BaW7Km5G
それかコレな

Console.WriteLine("{0:N}", 数値);
0633デフォルトの名無しさん
垢版 |
2017/12/15(金) 12:48:50.32ID:6xqAElZe
>>630-632
頭悪いレスは必要ないです
質問をよく読んでから答えてください
0634デフォルトの名無しさん
垢版 |
2017/12/15(金) 13:08:51.68ID:BaW7Km5G
ググる知能もない低脳に説教されちゃったよ..(^^;
0636デフォルトの名無しさん
垢版 |
2017/12/15(金) 16:15:56.95ID:M7F98+kf
VB.netのクラスの中身の大半をC#に移動したいんだが、Partialしたらいいだろか?
0638デフォルトの名無しさん
垢版 |
2017/12/15(金) 16:42:28.20ID:M7F98+kf
Formは無理じゃない。 コードは変換できるのを見たことがある。なのでコード部とか
ライブラリクラスをC#にしようと思う。
0640デフォルトの名無しさん
垢版 |
2017/12/15(金) 17:28:02.50ID:M7F98+kf
>>639
ありがとう。やってみてまた報告するよ。
0641デフォルトの名無しさん
垢版 |
2017/12/15(金) 17:51:54.84ID:m9RnQpi/
プロジェクト分ければVBとC#共存できるんだから
循環参照が必要じゃないなら無理に変換することもないんじゃないかと
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況