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
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#共存できるんだから
循環参照が必要じゃないなら無理に変換することもないんじゃないかと
0643デフォルトの名無しさん
垢版 |
2017/12/15(金) 18:43:49.15ID:M7F98+kf
心が綺麗だとコードも綺麗。
0645デフォルトの名無しさん
垢版 |
2017/12/15(金) 20:59:15.61ID:6xqAElZe
>>634
>>635
せめてテストくらいしてからレスしてくださいね^^;
C#erレベル低すぎ
0647デフォルトの名無しさん
垢版 |
2017/12/15(金) 21:29:12.26ID:GAdh6qIc
>>645
はいキチガイ
0651デフォルトの名無しさん
垢版 |
2017/12/16(土) 08:46:52.59ID:2xEHZCIG
vb formからc# formへctl-aで全選択してコピペできるよ。
ちゃんと言語の変換をしてくれる。
0652デフォルトの名無しさん
垢版 |
2017/12/16(土) 09:10:07.48ID:HogLmiIR
デザインは変換できる?
0654デフォルトの名無しさん
垢版 |
2017/12/16(土) 10:37:27.38ID:HogLmiIR
クラスAでクラスBをインスタンス化する
クラスCでクラスBのメソッドを実行する。
クラスAでクラスBをインスタンス化する。クラスCでクラスBのメソッドを実行する。
クラスAのインスタンス名は未定の時に、clsCからB.bm()を呼び出す方法?
こういう時にどうすればいい? なんかスマートにできる方法はない?

public class clsA
{
public clsB B = new clsB;
public clsC C = new clsC(B);
}

public class clsB
{
public void bm()
{
}
}

public class clsC
{
clsB B;
private clsC(clsB bb)
{
B = bb;
}
private void doc()
{
B.bm();
}
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0656デフォルトの名無しさん
垢版 |
2017/12/16(土) 10:54:04.95ID:VgVQwchc
>>654
それでできてるだろ。何が分からないのか全く伝わらない。
あと、そのレベルならAだのBだのと話を一般化しないでズバリ何がしたいのかを書いたほうが適切な回答が得られる可能性が高いと思う。
0658デフォルトの名無しさん
垢版 |
2017/12/16(土) 11:55:33.53ID:8tD9WB4W
関数をreturn する直前で実行したい処理があるのですが、
try catch finallyを使うとできますが、finally
だけ使いたいのですが、そう言うのは無いですか?
0664デフォルトの名無しさん
垢版 |
2017/12/16(土) 12:51:36.41ID:8tD9WB4W
>>663
ああ、出来るじゃない!
今日は気分がいい。さんきゅ
0665デフォルトの名無しさん
垢版 |
2017/12/16(土) 16:35:16.86ID:gJhjPx+L
C#初心者の頃(いまもかわらんけど)、一番悩んだのは
インターフェースが分からない。
何がわからないかというと、インタフェースって、自分で一から定義するような
ことが書かれていたが、既存のプログラムで使用しているインタフェースって
何かやってる。
何か定義しないと何もやらないはずなのに・・・・・めちゃ気持ち悪いしわからない。

システムで処理を記述したものも、インターフェースとそのまま呼んでいるから、
わけわからなくてさ〜。
なんだ、処理が記述されているものがあるのねと、理解するのにひと月かかったアホ出した。

まあ今も変わらんんけど。
0666デフォルトの名無しさん
垢版 |
2017/12/16(土) 16:39:09.26ID:ghluEyaB
設計書も書かないくせに
インターフェース定義するやつがこれまたわからん
馬鹿だろお前
って素で聞いてしまった
0669デフォルトの名無しさん
垢版 |
2017/12/16(土) 16:53:14.91ID:DOHaPC3l
backgroundWorkerにおいて、ある関数を実行していて
その関数内である条件になった時にbackgroundWorkerを停止したいのですが
何か簡単な方法はないでしょうか?
backgroundWorkerで無限ループで関数を実行していて、関数の中の関数でエラーが発生した時にbackgroundWorkerを緊急停止する様に
プログラムが組みたいのです。
0673デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:05:51.65ID:DOHaPC3l
backgroundWorker内でAという関数を無限ループ実行していて
Aの中ではB、Cという関数が続けて実行されていて
Bである条件(エラー)になった時、ここで全ての動きを停止したいです。
現在はエラーが発生してそのままBと処理が続いていって死にはしませんが意図しない動きをしている感じです

戻り値と条件分岐で場合分けしていけばいいのかなとも思いましたが関数が大量にあり複雑で何か簡単な手段はないものかとお聞きしてみました
0675デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:13:01.57ID:DOHaPC3l
>>674
キャンセルボタンは一応ついていまして
Aの実行後にボタンが押されていればCancelAsync()を使っています
AやBの関数中でもCancelAsync()と書いて一発で止められればいいのに…という感じです
0676デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:14:42.73ID:na0PR4/Y
>>673
通常のスレッドで実行するにしても考え方おかしいと思う
下流で発生したエラーを捕捉できない設計になっています、って言っているのと同じ
C#の問題じゃないんじゃないかな
0677デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:19:57.99ID:DOHaPC3l
>>676
そんな気もします…
0681デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:50:37.53ID:oGvDk6LW
>>675
まず「止める」って発想がおかしい。
各メソッドが「止まる」ように設計しなきゃ。

各メソッドの引数に処理がキャンセルされたかどうかを返すFunc<bool>を追加して
void A(Func<bool> canceled) {...}

呼び出すときに
A(() => backgroundWorker1.CancellationPending);

とかすればいいんじゃないか
0682デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:52:34.38ID:qA7A9B95
>>673
Bでエラーが発生したら例外投げて、backgroundWorker.DoWork内のループでその例外を補足してe.Cancel=trueにするようにすれば。
0683デフォルトの名無しさん
垢版 |
2017/12/16(土) 17:58:55.94ID:qA7A9B95
>>678
ごめん。
>>679は全くの間違い。ぼけてた。

ただ、今回はワーカーメソッドの中から中断したいって話なので、外から強引に中断する話とは違う。
0684デフォルトの名無しさん
垢版 |
2017/12/16(土) 18:12:53.74ID:DOHaPC3l
>>681
() =>この書き方がよくわからないので
とりあえず今のメソッドを全てvoidからboolに変え、エラー時にfalseを返して
if(メソッド==true)の時だけその後の処理を実行する様にしてみます

>>682
例外を投げるっていう方法がわかりません…調べてみます

みなさん色々ありがとうございました
0693デフォルトの名無しさん
垢版 |
2017/12/17(日) 01:36:39.71ID:hpnS8mLh
Chartを2個置いているのですが、このフォームを最大化した際にこの比率のままChartをフォームに合わせてリサイズするにはどのように設定すればいいのでしょうか?
Anchorを上下左右全てオンにした場合、自動的にリサイズした際に右側のChartが隠れてしまいます
https://i.imgur.com/53dfVWo.jpg
0696デフォルトの名無しさん
垢版 |
2017/12/17(日) 01:50:14.52ID:CSXOgBDh
でもanchorでは多分できないということもなんとなくわかる
比率を自分で計算して位置サイズ合わせするしかないんじゃないかと
0699デフォルトの名無しさん
垢版 |
2017/12/17(日) 12:05:55.48ID:4m+VWQn4
>>665
あえて書くけど
個人で小規模なアプリの場合はインターフェースなんて不要

商用大規模アプリでも使ってないところが多いくらいw
■ このスレッドは過去ログ倉庫に格納されています

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