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

■ このスレッドは過去ログ倉庫に格納されています
2021/05/16(日) 10:45:59.00ID:8qTwOc620
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part150
https://mevius.5ch.net/test/read.cgi/tech/1616471904/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/05/16(日) 11:08:45.40ID:U6V1THSr0
関連スレ
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
2021/05/16(日) 11:58:58.94ID:FgZG9punH
前スレ988ですみなさん相手にしてくださってありがとうございます
わかりやすく教えてくださって感謝しております
またしっくりこないなどと雑な表現をしてしまい申し訳ありませんでした
複数のテキスト上でそのようなコードを確認しておりましたので順序が逆では?と私が考えた書き順でも動作に問題はないのだろうとは理解しておりました
ただあくまでコードの処理が基本的に上から下への流れであるならばそのような書き方はハードウェアなりコンパイラなりに無駄な負担をかけているのでは?との思いもあり質問させていただきました
4デフォルトの名無しさん (ワッチョイ 87b0-TVsO)
垢版 |
2021/05/16(日) 21:49:06.24ID:4Yy6RF+p0
ちょっとお尋ねします
VisualStudio2017の無償版でFormアプリ作って楽しんでますが
昔作って普通に動作していたexeが
1年ほど前のWin10のアプデ以降、動作が重く計算の出力も遅くなったような気がします
これはWin10のアプデによってバージョンが対応しなくなったのでしょうか?
このような場合、何をチェックすればいいのでしょうか?
2021/05/16(日) 21:56:47.00ID:w/v5e2LF0
intel CPUの脆弱性対応で計算能力落ちたんじゃね。
アムドのCPU載ったWindowsで試してみるとか

20H2だったらKB4601382適用でパフォーマンスアップするとかしないとか
2021/05/16(日) 22:51:22.50ID:U6V1THSr0
アムド…?
2021/05/16(日) 22:52:08.13ID:U6V1THSr0
鎧化?
2021/05/16(日) 22:53:32.36ID:2iobi2pZa
ヒュンケル?
2021/05/17(月) 03:54:28.62ID:HtlvZdi50
ユンケル
2021/05/17(月) 03:54:53.89ID:HtlvZdi50
皇帝
11デフォルトの名無しさん (ワッチョイ c7e6-JFKK)
垢版 |
2021/05/17(月) 23:47:33.48ID:243nH9hZ0
ウボァー
2021/05/18(火) 01:57:21.28ID:eaycUWDk0
>>4
そんな事くらいで対応しなくなったら、世の中のソフトは大混乱になってる。
ログやデータが増えて計算量が増えたとか、ディスクアクセスが遅くなってるとかじゃないの?
明らかに遅いのならループ処理中に例外が出てるとかかもしれない。
調査方法はたくさんありますが、まずはタスクマネージャーで確認してみるのが良いと思います。
2021/05/18(火) 13:55:59.54ID:awNVHcWQd
質問です。
Form1と2とクラスが1つあって、クラスにForm1と2のTextBox等をを使用してファイル書込み、作成、削除、追加等のコード書きました。
Form1表示→入力→Form2表示→入力→閉じるまで間に何度かクラスを使用したい。
フォーム1のみならthisを渡して、TextBoxをPublicにしてやればいいのはネット見て分かったのですが、Form2も渡すとなると、Form2に辿り着く前にクラス使用する時はどうしたらいいですか?
2021/05/18(火) 15:50:09.78ID:/vNHi2oE0
>>13
何をしたいのかよく分からないけど、Formのコントローラーを公開するのはよくない
Form1とForm2で共通で使いたいクラスあるなら、呼び出し元で定義してそれぞれのFormに投げるじゃダメなの?

class Form1{
private クラス _クラス;
Form1(クラス c){ _クラス = c; }
}

class Form2{
private クラス _クラス;
Form2(クラス c){ _クラス = c; }
}

class クラス{}
2021/05/18(火) 20:29:56.80ID:YLn0XufY0
しっかりと新しい命名規則つかってるw
2021/05/18(火) 21:13:32.38ID:0pXo6EN80
VBAのコードをVisual Studioでコツコツ書いて勉強してます。
@VBAではフォームに書き込んだ内容をエクセルシートの印刷用のシート(前もって作成済)へ転記して印刷という内容なんですが、エクセルでなくやる方法ってありますか?※転記内容は文字列や数字のみです。

AVBAでいう標準モジュール≒クラス?

BGetSet?ネットでもよく使いどころが分からないのですが、VBAで例えるならどんな感じですか?
2021/05/18(火) 22:47:16.69ID:VzWE2qZQa
これ煽りとかじゃなくて真面目な話だけど、他人に用件を過不足なく伝える能力って
プログラミングスキルより何百倍も重要だよw

ちっとは「この書き方で自分の言いたいことを理解してもらえるだろうか?」って視点を持ってほしい

>>13
他の人も書いてるけど基本的にUI(Form)の参照を「クラス」に握らせるのはNG。
なんでダメなのか今は理解できないかもしれないがそのうち自然と分かってくる。
逆、つまりFormが「クラス」の参照を握る方向で

>>16
@C#はオフィス製品じゃないんで少なくとも標準では
お手軽に同じことを実現する方法は用意されてない

AVBAにもクラスモジュールはあるよ。もちろん完全に同じ物ではないけど

Bプロパティのことを言ってるならVBAにもプロパティはある。もちろん(以下略
18デフォルトの名無しさん (ブーイモ MM5b-M3SR)
垢版 |
2021/05/18(火) 23:13:37.98ID:zfq3U+DUM
VBAってスレ違いくね?
19デフォルトの名無しさん (ブーイモ MM5b-M3SR)
垢版 |
2021/05/18(火) 23:14:49.24ID:zfq3U+DUM
ああごめん。VBAのをC#に移植してるってことか。脊髄反射してもた。スンマソ
2021/05/18(火) 23:35:28.59ID:Txr9X7xM0
>>17
そんなの書いてみてレスもらわなきゃわかるわけないじゃん
無駄なアドバイスしてるの気が付かないかな?
何度も書いてみて人から反応をもらって鍛える能力でしょそれ
2021/05/18(火) 23:39:41.70ID:z9H7NlJs0
>視点を持ってほしい
こう言うのってとても大切なことだと思うけれど。
2021/05/18(火) 23:47:06.61ID:eaycUWDk0
17さんと一緒に仕事したい。
2021/05/19(水) 00:44:36.75ID:KZ+rGapc0
あれだな、自分がちゃんと理解して回答してるか、そういうのを確認する視点も持たないとな
2021/05/19(水) 07:27:19.64ID:yWkX4iecd
>>16
ExcelVBAのことがよく判らなくて、答えづらい。っていうか、その変換にストレスが発生してない?
お勉強なら、VBAのことは忘れてゼロから始めた方が良いんじゃないかと。
25デフォルトの名無しさん (ワッチョイ c7e6-JFKK)
垢版 |
2021/05/19(水) 07:34:53.84ID:AMEX05Gv0
単に印刷をしたいだけだろ
ギョーカイでは印刷用コンポーネント買ってこいで一蹴される案件
26デフォルトの名無しさん (ブーイモ MM5b-M3SR)
垢版 |
2021/05/19(水) 08:48:51.66ID:dvesxogvM
印刷コンポーネントって標準で付いてないっけ?
2021/05/19(水) 09:40:36.03ID:TmTcYE5Zd
>>14>>17 ありがとうございます。説明たらずですみません。ネットみてこんな感じで作成しましたが、こういう作りはよろしくないってことですよね?クラスにxmlファイル関連の処理をまとめたいなと思ったのですが...

{}等々は省略します。
class ClsXml
Public Frm1 frm1
Public Frm2 frm2

Public ClsXml(Frm1 frm_1,Frm2 frm_2)
  frm1=frm_1
  frm2=frm_2

 Public void aaa
frm1のコンコロール使用

 Public void bbb
frm2のコントロール使用
 
 Public void ccc
frm1とfrm2のコンコロール使用

※Frm1
ClsXml clsXml = new ClsXml clsXml(this,null)

※Frm2
ClsXml clsXml = new ClsXml clsXml(Frm1,This)
2021/05/19(水) 10:02:03.60ID:+JHqwFd70
データ保持クラスを1つ作って、それを受け渡しする
29デフォルトの名無しさん (ワッチョイ 2b7b-gSvD)
垢版 |
2021/05/19(水) 10:08:02.04ID:C6qGRFkz0
C#のプログラミング本を読んでいるのですけど
C#という言語はnewしても失敗することはないのでしょうか
newの戻り値を確認したり
try catchで囲んだりてませんよね
Designer.csをみてもnewだけしてて戻り値を確認していません

識者の方教えてください。よろしくお願いします。
30デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/19(水) 10:32:55.61ID:TDEniZJiM
>>26
説明するのが面倒だから一蹴するんだよ
真に受けて買うのも別に悪くない選択
31デフォルトの名無しさん (ラクッペペ MM17-JFKK)
垢版 |
2021/05/19(水) 10:37:43.80ID:TDEniZJiM
>>29
catchしたところで他に代替方法がないんだから
諦めてそこで試合終了ですよ
2021/05/19(水) 10:42:01.36ID:RX1B9Flf0
>>29
使い方を間違えていなければコンストラクタで例外が発生しないクラスが多いので
基本的にはコンストラクで例外が発生する場合はバグであり使い方を修正する。
正しい使い方でもコンストラクタで例外が発生する場合があるクラスについては例外を捕捉してフォローする。
2021/05/19(水) 11:56:33.37ID:u9Tr9lyP0
>>27
よくないね

依存性の方向は基本的に「個別処理 ―> 共通処理」
個別処理が共通処理に依存するのはいいが逆はよくない
変更に対して弱くなるから

各フォームが個別処理でXMLの読み書きが共通処理なので
フォームがXMLクラスに依存するのはよくて
XMLクラスが各フォームに依存するのはよくないということ
2021/05/19(水) 11:59:42.08ID:C6qGRFkz0
>>31
>>32
回答ありがとうございます
古い人間なもので常に以下のようなコードと思い込んでいました

p = new hogeCalss();
if (!p) {
print("失敗しました");
exit();
}

---------------------------------
try {
p = new hogeClass();
}
catch(exception) {
print("失敗しました");
exit();
}
2021/05/19(水) 12:09:28.47ID:5VIb1gQWa
>>27
Xmlの処理をするクラスなのになんでFormを使うのか?
ということに疑問を持つべき

>>29
コンストラクタでエラーが発生したら例外を投げて
例外を受けてどう処理するかはその場次第で様々なので
無視して上位に任せるのもその場でハンドリングするのも間違いではない
2021/05/19(水) 12:15:53.32ID:RX1B9Flf0
>>34
例外が発生した時に簡単なメッセージを表示して終了するだけなら
個別の例外処理はせずにApplication.ThreadExceptionイベントや
UnhandledExceptionイベントを使うといい
37デフォルトの名無しさん (ワッチョイ f384-gIXh)
垢版 |
2021/05/19(水) 18:35:07.68ID:kJekIUOX0
>>27
何となく何がおかしいか分かったかも
Formのプロパティを外からいじるのいくないとかはおいといて言っていることを
無理やり形にすると多分こんな感じかな
class control
 ClsXml cx=new ClsXml
 cx.aaa
 cx.bbb
 cx.ccc

class ClsXml
Public ClsXml()
 Form frm1=new Form
 From frm2=new From

 Public void aaa
  form1 progress

 public  void bbb
  form2 progress

 public void ccc
  form1&2 progress

Formを独自拡張する必要があるならば、ぞれぞれのFormクラスを作る必要があるけど
そういうことじゃないのではないかと
元の書き方だと違うインスタンスが同じインスタンスのように扱われているのでForm1では
Form1側の操作しか出来ないと思うよ
あとFormを制御する人がいないのでプログラムとして成立しないかな
2021/05/19(水) 19:01:35.29ID:C6qGRFkz0
>>36
Application.ThreadExceptionイベント
UnhandledExceptionイベント
ググってみます
ありがとうございました
2021/05/20(木) 17:15:54.44ID:bilBOnqPd
質問です。
xamarinとC#でAndroidアプリを作成していて、ボタン押下でAndroidからPCの指定の共有サーバーにWi-Fi経由でSMB通信をしてファイル転送する機能があるのですが、それをUSB経由で接続したPCの指定のフォルダに転送する機能に変更したいと思っています。調べてみても方法が分からず、どうやってやればいいのかお教えいただけないでしょうか?
2021/05/20(木) 17:25:36.42ID:h+nvuHPl0
C#とか関係なく、システム的にAndroid側からPCの中って参照できないんじゃね?
2021/05/20(木) 17:53:35.03ID:1kvRnQEZ0
PC側がホストになるから、PC基点じゃないと何も出来ないよ。
2021/05/20(木) 19:20:45.57ID:bilBOnqPd
>>40
>>41
回答ありがとうございます。
SMB通信の前はWindows PhoneからPCの指定のフォルダへUSB経由でFTP通信をして指定したフォルダに転送していたのですが、これもandroidだとできない感じでしょうか?
2021/05/21(金) 00:18:51.38ID:uT4ElnGZa
>>42
詳しくないので適当に聞いてね。
結局PC側からUSB接続のアンドロイトが何に見えているかが肝だよねたぶん。

ただのマスストレージに見えてるなら他の人が書いてるように
Android側からPCに対しては何もできない(PC側のアプリでAndroidの
ストレージからファイルを持ってくることは可能なはず)

Androidにそんな器用なことができるのか知らないけど、仮にNICのふりができるなら
理屈上はAndroid側からPCの共有フォルダにアクセスは可能なはずだと思うけど
かなりハードル高そうだよね
2021/05/21(金) 00:35:25.73ID:iGmMnIp90
>>43
ありがとうございます。
とりあえずバッチかアプリでPCからUSB経由でandroidの指定フォルダのファイルをPCの指定フォルダに転送できるか試してみます。
45デフォルトの名無しさん (ワッチョイ cebb-T0p4)
垢版 |
2021/05/21(金) 14:30:29.31ID:i5DLTQw90
Visual StudioでGitを使う場合、Gitによる管理が不要なファイルのために自動で.gitignoreを作ってくれると思います
.NET 5のコマンドラインから同じようなことをするにはどうすれば良いのでしょうか?(手書きなのでしょうか?)
2021/05/21(金) 14:41:38.94ID:mSvK+x2g0
dotnet new gitignore
47デフォルトの名無しさん (ワッチョイ cebb-T0p4)
垢版 |
2021/05/21(金) 15:07:41.48ID:i5DLTQw90
>>46
全然知らなかったよ、ありがとう!
2021/05/21(金) 18:18:47.45ID:r4fhOYFqd
フォームが複数あって入力された文字列やチェックBoxの状態記憶して、フォームが閉じて再び開いた時に同じ状態に戻したいんですがどんな方法がありますか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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