C#, C♯, C#相談室 Part94

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 935f-5Uxj)
垢版 |
2019/03/20(水) 18:57:36.47ID:ZZcTomnN0
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

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

■前スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2020/08/16(日) 15:14:56.52ID:Apm8kmni0
profile でggr
2020/08/16(日) 15:30:58.63ID:fvXawAJc0
>>45
ググってみましたが難しい・・・。

アプリ内で変数を10個ぐらいもっていて
int hoge1=100
int hoge2=12


これをテキストファイルに保存し、必要なときに
int hoge1=100
int hoge2=12
にアプリ内で戻したいのですが、簡単に実現出来る方法があればいいなと思ったのですが・・・。
47デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
垢版 |
2020/08/16(日) 15:39:24.55ID:43uVw8aVF
msgpack
48デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
垢版 |
2020/08/16(日) 15:39:24.66ID:43uVw8aVF
msgpack
2020/08/16(日) 15:59:09.65ID:7n2hwSPz0
>>44
その形式は ini ファイルなので C# ini ファイルでググれば事例がいっぱい出てくるよ
基本はWin32APIのGetPrivateProfileString( )とかを使う
もし設定ファイルの形式をこれから決められるならjsonおすすめ
DataContractJsonSerializerクラスを使えば読み書きも簡単だし
2020/08/16(日) 17:07:59.63ID:06o4EVzRd
json xml csv ini
好きなのを選べ
51デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
垢版 |
2020/08/16(日) 18:15:38.13ID:43uVw8aVF
SQLiteも良いぞ
2020/08/16(日) 19:19:49.11ID:WOuIdI6T0
まずアプリケーション構成ファイルを検討するべきだと思うんだが
2020/08/16(日) 22:09:22.28ID:fvXawAJc0
なんかどんどん難しくなってきました。
最近だxmlで書くのがデフォルトなんでしょうか・・・。
iniで書くのも結構荷が重い、気合い入れて勉強するべきか・・・。
54デフォルトの名無しさん (ワッチョイ 426a-p5K4)
垢版 |
2020/08/16(日) 22:11:13.68ID:k/QA8A3q0
>>53
>52 でggr
2020/08/16(日) 23:19:02.50ID:nvuv1Tdc0
>>53
https://dobon.net/vb/dotnet/programing/storeappsettings.html
https://dobon.net/vb/dotnet/programing/appconfigfile.html
設定ファイルなんか自由に作れるんだから最初に自分で書いたやつでいいのに
2020/08/16(日) 23:58:11.71ID:RfOjKn2y0
いまだとjson以外で書くことないな。
どんなプラットフォームでもjsonはサポートしてるし、どんなものでも入れられることがわかってるしね。
2020/08/17(月) 00:06:36.72ID:a2Z8AZRc0
ものによるやろ。xmlで書くこともあるし、もちろんjsonも。yamlだって最近は多いでしょ?
2020/08/17(月) 00:14:03.00ID:FrBqpQ/k0
xmlはめんどくさすぎるから、DTDでちゃんと定義したいとかじゃなかったら使いたくないな。もちろんケースバイケースなのはそうだけど。
改行区切り、タブ区切りとかもまだまだ場合によっては使うしね。
2020/08/17(月) 01:29:02.95ID:U9ZmQUIp0
カンマ区切りと固定長のまざった独自糞フォーマットでのIO書いたことはあるけど、自由に出来る時はjsonかxml
大体はjsonだけど、きちんと定義したデータ使いたいときにRelaxNGで定義してXMLで書いたことはある。
60デフォルトの名無しさん (ワッチョイ dd5f-c+0i)
垢版 |
2020/08/17(月) 10:22:34.64ID:L1BKvkJB0
些細な枝葉で悩む時間あったら
本体のプログラムで悩め
2020/08/17(月) 14:45:20.65ID:qSl9GgHf0
プログラマーはつい余計な事まで調べてしまう生き物なのです
2020/08/17(月) 17:51:52.39ID:LJQO1qfq0
調べるのはいいが掲示板で最初から聞くのは違うな
そしてどうでもいいことにこだわり始めるのはだいたい行き詰っているとき
2020/08/17(月) 18:41:16.65ID:fmYMlnoO0
選択肢が沢山あったら調べないと選べないわな
2020/08/19(水) 19:05:35.00ID:cHzrh2OwM
global::クラス名で
2つがバッティングしてます
外部からのdll2つなんで
namespaceつける等の変更できない
どう解決できる?
2020/08/19(水) 19:07:04.67ID:cHzrh2OwM
global::ファイル名.クラス名
とかできない?
2020/08/19(水) 19:54:53.70ID:maQwl2d20
>>64
https://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_07/csharp20_07_02.html
2020/08/19(水) 20:17:03.21ID:cHzrh2OwM
ありがとー
2020/08/20(木) 00:21:28.68ID:r1uYCcYS0
ちょっとくだらない質問で申し訳ないんだけど
構造体の定義のソースってどうしてる?

クラス内に通信電文用の構造体をいっぱい作ったのだけど
ソースがでかくなっちゃうからpartial使ってわけた方がいいのか
あくまで一個のソース内にまとめるか・・・
2020/08/20(木) 00:37:16.53ID:zII9NukZ0
どれくらいでかいのかわからんけどあんま分けないかなー?
1万行超えるとかなら分けること考える
2020/08/20(木) 00:37:57.60ID:VY9dfKBD0
通信電文…
71デフォルトの名無しさん (エムゾネ FF9f-fHWV)
垢版 |
2020/08/20(木) 11:24:45.34ID:RX/3qqm6F
設計を見直す
2020/08/20(木) 19:14:02.34ID:3p9OuWNz0
分割しようかと迷う規模なら分割もありだと思う。
ベース部分は独立させて、機能毎に実装ファイルの頭に使用する下位レベルの電文を定義する。
電文は全部まとめるか?分割するか?ケースバイケースだね。
2020/08/21(金) 00:15:17.71ID:S3Udh9wa0
クラス内にネストさせるんじゃなくて
下位の名前空間作ってそこに構造体群を置けばいいよ
74デフォルトの名無しさん (ワッチョイ 7f6a-YpYZ)
垢版 |
2020/08/21(金) 00:57:13.38ID:Gtp12ERl0
>>68
クラス内に作らないで独立させれば良いのでは?
2020/08/21(金) 19:38:02.21ID:EuQicFr70
だいたい >>73 方式で、基本的には ファイル名 = クラス名 を目指すな。自分は。
2020/08/24(月) 21:06:09.96ID:RikpSc+F0
xamarin でTDDを勉強してるんだけど、

public event PropertyChangedEventHandler PropertyChanged;

この PropertyChanged 自体がnullになって例外で終わるのって
どういうパターンがあるんだろう・・・。

勉強したいことと全く別のところで長期足止め。わっけわからん状態。
2020/08/24(月) 21:08:36.33ID:aT1DNS2r0
>>76
https://i.imgur.com/irl4m3B.jpg
2020/08/24(月) 21:32:50.65ID:LR7hSPm30
>>76
ハンドラが1こも登録されてないとnullなんじゃないかな
2020/08/25(火) 00:40:04.02ID:xXAVzV+T0
>>77
やめろよ、普通の質問なのに。
Xamarinの話題も良いじゃん。
80デフォルトの名無しさん (エムゾネ FF9f-fHWV)
垢版 |
2020/08/25(火) 10:33:43.97ID:Zt9gBA2MF
ここで質問するより
直接ちょまどにツイートしろって意味かな?
返事来るかどうか知らんけど
2020/08/26(水) 15:08:57.61ID:7Xms6Gwm0
>>78
ありがとう。どうやら「どっかが+=してくれる」っていう前提なんだね、これ。

PropertyChanged?.invoke(this, e);

で呼び出したら動いた。現役じゃなくなって長いもんで(趣味のプログラム)、
このへんの書き方に苦労するなあ。
2020/08/26(水) 21:05:30.88ID:6US3/cP40
>>81
null条件演算子が出来る前はeventに空のdelegateを代入しておくテクニックがあった
public event PropertyChangedEventHandler PropertyChanged; = delegate {};
2020/08/26(水) 21:12:34.97ID:7Xms6Gwm0
>>82
あ。やっぱそうなんだ。「これ、ダミー関数入れときゃエクセプション
投げられないで済むんじゃねえのか?」って思った。


ところで1つ目のセミコロンて要るの?
2020/08/26(水) 21:15:17.42ID:6US3/cP40
>>83
途中のセミコロンはミスだよ
2020/08/27(木) 23:21:35.12ID:dU9vSxaE0
フォームアプリで
フォームAで検査をして、検査終了後に

「データを記録しますか?」
「はい」「いいえ」
というウインドウを表示して、
「はい」ならデータ記録
「いいえ」ならデータ廃棄

としたいです。
2020/08/27(木) 23:23:39.98ID:dU9vSxaE0
データはフォームAにあるので、

1. フォームAからフォームBを開く
2. フォームBは「はい」「いいえ」を戻り値としてAに渡す
3. フォームAでデータ記録、データ廃棄の処理を行う

みたいな処理でいいのでしょうか?
それとももっとよいやり方がありますか?
2020/08/28(金) 00:01:20.33ID:IRRC70To0
>>86
これじゃあかんの
https://dobon.net/vb/dotnet/form/msgbox.html
2020/08/28(金) 00:27:25.73ID:ljA+yCxF0
ありがとうございます。
これですね。

なんかフォーム新たに作るとかこんなめんどくさいことしなきゃいけないのか?
と疑問に思ってたんですが、聞いてよかったです。
ありがとうございます。
明日実装してみます。
2020/08/28(金) 00:45:40.60ID:QGPxocm50
MessageBoxを知らない子供達さ〜
2020/09/02(水) 22:47:24.65ID:uEUYmCsp0
C#からpythonのプログラムをコマンドライン引数hoge付きで実行したのですが、

System.Diagnostics.Process.Start("python.exe", @"""L:\main.py hoge""")

とやっても実行できません。
なにかより方法ないでしょうか?
2020/09/02(水) 23:26:38.05ID:dpuRzFGP0
なぜスクリプトファイル名と引数をダブルクォートでひとくくりにしてる?
2020/09/02(水) 23:30:40.61ID:uEUYmCsp0
>>91
分けて書いたら第3引数は取らないとエラーが出たのですが、
どう書けばよいのでしょう?
2020/09/03(木) 00:53:19.68ID:mQe+iHXO0
System.Diagnostics.Process.Start("python.exe", @"L:\main.py hoge")
2020/09/03(木) 21:24:36.01ID:9keo2Hbe0
>>93
ありがとうございます!
解決しましたm(_ _)m
2020/09/03(木) 22:26:34.29ID:a8iQwzgfM
Pythonスレにもちゃんと報告しような
96デフォルトの名無しさん (ワッチョイ 0701-3NJ+)
垢版 |
2020/09/04(金) 01:43:56.80ID:bkNZTAxK0
var sb = new StringBuilder();
var c = 'a';
while (true)
sb.Append(c);

これで一番下の行に破棄'_'を使用っていうVSによるヒントが出てくるんだけど、
こういう場合の破棄って使用する場合としない場合でどういう違いがあるの?
2020/09/04(金) 03:29:44.58ID:TqZk/BuV0
>>96
破棄は、未割り当ての変数と同等です。つまり、値がありません。
破棄変数は 1 つのみであり、破棄変数には記憶域も割り当てられないため、破棄を使用するとメモリの割り当てを減らすことができます。
また、コードの意図がわかりやすくなるため、読みやすさと保守性が向上します。
2020/09/04(金) 18:32:36.17ID:rMUAG7hVd
linqて出た頃はselectとか予約語になってたはずだけど、今は使わん方がいいの?
2020/09/04(金) 18:38:00.42ID:/sa+TO100
LINQやクエリ式を連想するからやめといた方がいい
2020/09/04(金) 20:52:19.83ID:lU7Szfms0
あくまでコンテキストキーワードだから当初から識別子として使えたよ
group辺りは変数名として割と使う
2020/09/04(金) 21:11:01.67ID:MHAfw/ead
groupって変数名としてほとんど何の情報も持たないし普通にバッドネーミングでは
GroupTheoryのGroupとかの専門用語でもない限り
2020/09/04(金) 22:52:38.00ID:/hXTsLtS0
>>101
右辺から意味がはっきりしてる寿命が短いローカル変数ならいいんじゃない?それこそlinqのグループバイの戻り値とか。まぁそんなんだったらgとかにしちゃうけど
2020/09/04(金) 22:55:02.48ID:MHAfw/ead
>>102
数行くらいの寿命ならまあたしかに
2020/09/13(日) 12:05:22.97ID:/5CZgoyc0
LINQの話題になってるから聞きたいんですが、LINQって結構遅い?
ベンチマークとって襲いって主張してるブログとかはあるけど、実業務で遅さを実感する事ってどのくらいある?
2020/09/13(日) 12:15:27.66ID:pEIp8weP0
LINQ使わないで書くよりも遅いことは遅いんだけど、経験的にはあんまり問題にはならなかった
実際に使ってみてどうしてもLINQ使ってる辺りでネックになるようなら、
そこだけ書き直す感じでいいと思う
2020/09/13(日) 12:21:40.35ID:tOkSvJ4p0
Linq使ったほうが楽に高速化できることもあるし、場合場合じゃないかな。
PLINQは良くコア数指定せずにぶん回して「遅い」って言ってる奴いるけど、コア数指定したら割と良い線行く。
2020/09/13(日) 15:15:56.81ID:SPHVq8sr0
処理速度が求められるような部分だとネックになってると感じることもある
シミュレーションみたいなのね
そういうの以外では全く気にならない
どうせ処理速度より通信やファイル読み書きのほうが圧倒的に時間かかるから
2020/09/13(日) 17:02:03.95ID:1OL+BwFGa
linq to sqlだと気付かずにクエリがクライアント側で行われるなんてことが無くはない
2020/09/13(日) 18:23:51.90ID:4Acyfihv0
ループのコストを気にするレベルの処理(数値計算とか)だとLINQは遅いが
大半の処理は0秒の範疇で終わるし遅さを実感できるタイミングは少ない
2020/09/13(日) 19:19:25.97ID:B0Qk5cLa0
>>108
なぜいまさら?
2020/09/14(月) 08:49:45.52ID:h4D3dIgFa
LINQは普段使い出来る
2020/09/15(火) 14:28:22.27ID:dHOvpMD80
むしろ普段使いこそLINQ

ガチで組むときだけ使わない
2020/09/15(火) 15:19:30.20ID:zwHnTqIb0
#metoo
2020/09/26(土) 09:10:33.60ID:z7P86v//0
ほぼC#経験しか無いのですが、最近iPhoneでアプリ作りにトライして貰いたいと言われました
経験的にC#とXamarinで作れたらと思うのですが、実用に耐えるものなのでしょうか?
王道のSwiftを覚えるべきでしょうか
オススメをお聞きしたいです
2020/09/26(土) 09:20:31.76ID:eGNdIrqPM
https://i.imgur.com/irl4m3B.jpg
2020/09/26(土) 09:27:09.80ID:jvAfHmw30
産まれながらに豪運をお持ちであるか
最終的に開発するアプリがごく小規模でないのなら、Swiftを薦めるかなあ

ネイティブのクロスプラットフォームフレームワークって機嫌よく動いているうちはいいんだけど
いざトラブルが起きた時、フレームワークそのものの知識と目的のプラットフォームの知識、両方がないと問題を解決できないのね
2020/09/26(土) 10:28:09.86ID:zTe0m+jEd
iOSの事はあんまりわからんけど、Androidの場合でも、結局Androidの記事を読むことになるから、ネイティブの知識は必要になるよ。
だから逆にネイティブの知識で何とかなるXamarinは好きなんだけど。

ネイティブに対してLinqが書けたり、C#のライブラリが使えるメリットを感じられなければ、ネイティブの方が良いと思う。
俺はサーバ側もc#で済ますときに圧倒的に楽だし、Linqめっちゃ使うし、LiteDBとか使いたいからXamarinは割と選択肢にしてる。

気持ち悪いとか、信者がどうとかそういう話に持ってくのはやめてほしいわ。
2020/09/26(土) 10:33:53.78ID:z7P86v//0
やはりネイティブで慣れた上が無難ですかね
情報量はネイティブのが多いのは確実でしょうし
アドバイスありがとうございます
2020/09/26(土) 10:46:32.13ID:nC+oWEpa0
2020/10/10(土) 11:55:43.09ID:8BJRM8SSa
docker使うときって、
単一バイナリビルドしてalpineイメージに乗せる、
普通にビルドしてdotnetイメージに乗せる
どっちがいいんだ
2020/10/23(金) 10:15:07.78ID:BMukmJk4r
winforms で webview2 の source プロパティ設定しても表示されないんだけどなんでか教えてくれさいエラーは出ません
2020/10/23(金) 14:30:39.26ID:xUtnLCdH0
>>121
CanaryチャネルのEdge入れてる?

https://docs.microsoft.com/en-us/microsoft-edge/webview2/gettingstarted/winforms
>Ensure you installed the following list of pre-requisites before proceeding:
>Microsoft Edge (Chromium) Canary channel installed on Windows 10, Windows 8.1, or Windows 7.
>Visual Studio 2017 or later.
2020/10/23(金) 16:12:09.29ID:BMukmJk4r
>>122
できたっ!!本当にありがとう!
2020/10/27(火) 11:24:09.31ID:1KKT1q6l0
NAudio.Lameがサンプルレート44100&16bit以外のwavをmp3に変換できないのってなんでなの?
lame_enc.dllのラッパー作ったらこっちではどんな形式のwavでも変換出来たからまぁ問題は解決してるんだけど上記じゃできない理由が知りたい
125デフォルトの名無しさん (ワッチョイ b5ba-QVGU)
垢版 |
2020/11/10(火) 20:29:35.95ID:CPbRFFCx0
Visual Studio インストールできない環境なんですが、csc でコンパイルはできます。
using SpeechLib
を使うためにはどのファイルを /r: で指定すればいいんですか? Microsoft スピーチ SDK はインストールされています。
2020/11/10(火) 21:19:51.00ID:99TT6ZI90
>>125
ゆうちゃんがしていた方法じゃん
SharpDevelopをお勧めしますけどね
2020/11/10(火) 21:35:37.42ID:BqFpPTmS0
tlbimpでsapi.dllからマネージDLL作ってそれを参照 かね
msbuildも使えるだろうからcsprojでCOMReference要素使った方がいい気がするけど
128デフォルトの名無しさん (ワイーワ2 FF93-NSHw)
垢版 |
2020/11/11(水) 10:02:20.87ID:tAzuyT8UF
>125
https://rti7743.?diary.org/entry/20111215/1323965483
2020/11/12(木) 20:06:56.40ID:uxm21n/v0
VisualStudio が大きすぎて重すぎてインストールさえできないんです ( ノД`)…
2020/11/12(木) 20:19:44.27ID:iNnMgmkB0
>>129
PC買い換えろや
インストールすら不能ってそれじゃVisualStudio以外のことするのもきついだろ
2020/11/12(木) 21:28:52.02ID:ieLOACKQ0
いつものADSLおじさんでは
2020/11/13(金) 18:57:33.29ID:wp+NVJFq0
VS入らないマシンにリモートデバッガだけ入れて、VS入るマシンから開発すれば?
2020/11/13(金) 19:11:24.15ID:JTUzvYJR0
個人的にはVisualStudioかVScodeが使えなかったらC#は使わないだろうな
それらのサポートがあってこそ楽できるC#だと思ってるw
>>132
最初からVS入るマシンでやれよw
2020/11/17(火) 07:50:10.43ID:iD8vjuLm0
メモ
var environment = Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync(@"C:\Hoge\Homo\Microsoft.WebView2.FixedVersionRuntime.87.0.664.8.x64");
await webView21.EnsureCoreWebView2Async(environment.Result);
webView21.CoreWebView2.Navigate("http://www.google.com";);
2020/11/17(火) 12:28:29.50ID:NojhJPTB0
EnsureCoreWebView2Asyncをawaitするならenvironmentもawaitすればいいのに
2020/12/02(水) 19:05:55.25ID:Ve9XOoG60
VisualStudio 2019 入れても SpeechLib 使えんかった。 まほろばサイトの通りにしてもエラーで .exe 作れなかった。
まほろば の環境に合わせて VisualStudio 2010 入れるしかないのか。
VS2010 手に入れられるのか? メンドクセー
2020/12/03(木) 01:49:16.55ID:8Y52u7nG0
エラーで、じゃなくてエラーメッセージ貼りなさいな
2020/12/19(土) 17:41:30.84ID:+WDUx37o0
string.Createでの書き込み先ってゼロクリアされた状態なのが仕様?
2020/12/19(土) 18:10:05.63ID:c6eQkowx0
> The initial content of the destination span passed to action is undefined.
> Therefore, it is the delegate's responsibility to ensure that
> every element of the span is assigned. Otherwise,
> the resulting string could contain random characters.
2020/12/19(土) 18:23:51.61ID:+WDUx37o0
>>139
そう書いてる割には渡されたSpan<char>をループで回してみると0オンリーなんだよね
これはプログラム立ち上げたばかりで余ってるヒープから確保されたものではなく、メモリ確保とセットになってるからってことかな?
2020/12/19(土) 21:22:12.50ID:cBOopG6K0
debugとreleaseでメモリの初期値が異なるのって.NETもそうだっけ?
2020/12/20(日) 20:29:37.47ID:pjcjK0FfM
鬼滅のこのキャラを c# プログラマーの上司にしたい。
https://i.imgur.com/FUdlKgn.jpg
2020/12/20(日) 20:44:09.47ID:Sdipw4VbD
その心は?
2020/12/20(日) 20:44:09.52ID:Sdipw4VbD
その心は?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。