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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0fe3-wadS)
垢版 |
2022/02/09(水) 23:13:39.45ID:1A90hyai0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part153
https://mevius.5ch.net/test/read.cgi/tech/1639403601/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
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/
https://source.dot.net/
・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
2022/05/26(木) 18:18:02.76ID:2vYtdgJ20
スマホでわかりやすいアプリの意味がわかりにくい
641デフォルトの名無しさん (スップ Sdba-LYQt)
垢版 |
2022/05/26(木) 19:14:23.06ID:nH+V7kdJd
>>639
10年早いんだよっ!
642デフォルトの名無しさん (ワッチョイ 1aad-mUFz)
垢版 |
2022/05/27(金) 05:58:20.19ID:vU3ymITD0
>>639
C#の学習ができるアプリってこと?
2022/05/27(金) 08:35:21.08ID:HeO6HGVia
先ずは質問の仕方を覚えよう
2022/05/27(金) 09:39:02.35ID:TsOq3zA+0
MAUIに手を出すのです。(亜熊之囁)
645デフォルトの名無しさん (ワッチョイ 4e63-pPWi)
垢版 |
2022/05/27(金) 10:09:16.78ID:upR3ZiUo0
大丈夫だMAUIは半年は持つ
2022/05/27(金) 11:09:10.42ID:AyFDmHhmM
MAUIはまだ早いw
647デフォルトの名無しさん (ワッチョイ 97f6-8jyA)
垢版 |
2022/05/27(金) 11:11:07.62ID:S0cy91Tb0
MAIUはうまくない
2022/05/27(金) 15:24:36.89ID:bhPyvv2Sa
MUIに変わってなかったっけ
2022/05/28(土) 02:08:34.29ID:R+G9ucnv0
Blazor Desktop Appsでいいわ。
650デフォルトの名無しさん (ワッチョイ f101-wXST)
垢版 |
2022/05/28(土) 10:33:31.92ID:qp7uj3Un0
MemoryStreamの中身を一括でファイルに保存したいのですが、
何を使えばいいですか?
一旦byte配列に読んでFileStreamに渡すのも無駄な気がします
651デフォルトの名無しさん (ワッチョイ 2b2c-2OYr)
垢版 |
2022/05/28(土) 10:58:05.60ID:81XaDMLN0
memstream.CopyTo(fstream);
652デフォルトの名無しさん (ワッチョイ f101-wXST)
垢版 |
2022/05/28(土) 12:24:53.28ID:qp7uj3Un0
ありがとうございます、うまくいきました
結局内部で一旦バッファにコピーしてるみたいですね
2022/05/28(土) 15:57:18.22ID:hZokRc+F0
つーかファイルなんてFILE_FLAG_NO_BUFFERINGで開いてないとそこでもバッファリングされるのにな
何重バッファする気だよ
2022/05/28(土) 18:20:37.25ID:SjKCMIOA0
MemoryStream.GetBufferして、FileWriteAllBytesでいいのでは
2022/05/29(日) 10:49:50.42ID:8UALCrP60
MemoryStream.GetBufferを使う場合は長さはそれで受け取ったバイト配列の長さではなくMemoryStream.Lengthを使うこと
そもそも.NETCore系統だとGetBuffer使えなかった記憶あるけど
2022/05/29(日) 11:11:16.48ID:KBwAngU30
普通に使える
最近バイナリデータ書き換えプログラムに使ったばっかだし
2022/05/29(日) 11:15:25.56ID:KBwAngU30
書き出しについては適当に言ったので、MemoryStream.Length 使うのが正しいってのはそっちが合ってる
2022/05/30(月) 13:14:48.95ID:1VsWJmNVd
明日からgmailがOAuthに非対応のメールソフトからのアクセスを拒否るそうなんで
何か話題でてるかな~と思ったけど、上の方でちょっと触れてる人がいる程度だった

1年前に作って大活躍してるgmail受信用ソフトに手入れないといけないんで頑張ってきます
Mailkitというライブラリがよさそうなので試してみようかと。
2022/05/30(月) 13:17:31.70ID:rfreZDJQ0
そうですか
2022/05/30(月) 13:18:42.88ID:1VsWJmNVd
えへへ^^
2022/05/30(月) 14:26:30.25ID:1VsWJmNVd
Mailkitは送信用で受信用ではなかったのでした・・・今気づいた・・・
662デフォルトの名無しさん (ワッチョイ 518e-95+F)
垢版 |
2022/05/30(月) 14:42:01.68ID:IYsp/3270
えっ
2022/05/30(月) 14:58:39.86ID:1VsWJmNVd
いや、ちがう・・・・
この辺かなり奥が深いことに気づきましたよ
勉強してきます
664デフォルトの名無しさん (アウアウウー Sac5-2OYr)
垢版 |
2022/05/30(月) 15:26:01.26ID:Z6OL71NLa
>>658
世界中で阿鼻叫喚の悪寒
2022/05/30(月) 17:06:49.52ID:7XaRbxqTM
アプリパスワードではアカンのか?
2022/05/30(月) 18:13:36.30ID:1VsWJmNVd
OAuthとはなんぞやから始まってなんとなく理解した上で
Google.Apis.Gmail.v1 を入れてみた
トークンゲットして送信するところまででけた
受信はまた今度・・

アプリパスワードも一応取得して見たけど、よく分かってないです
mailkitでアプリパスワードを使った送信コードをみたんですけど
これはOAuth導入後も使えるのか・・・?と疑問に思うところであります


とりあえず今作ってるのは受信専用のソフトなんで受信にたどり着きたい
2022/05/30(月) 18:37:25.23ID:HZFJKzDU0
日記なら自分のSNSにでも書いとけ
2022/05/30(月) 19:50:50.31ID:EyJ2h+7M0
ここはお主の日記帳だから好きに続けよ
2022/05/30(月) 19:54:41.05ID:RioIt3yZ0
日記帳として使うんならNGするからコテハン名乗ってくれ
2022/05/30(月) 20:45:14.00ID:zhESDE1t0
C++ でいうところの
typedef unsigned int Uint32;
これをC#で実現できないか試行錯誤してます

namespase hogeType
{
using Uint16 = System.UInt16;
//他省略
}
として利用したいソースで
using hogeType;
として使えるんじゃないかと期待していたのですがダメでした

「型を使いたいソースの上の方にusingエイリアスで定義する」以外では無理なんでしょうか?
2022/05/30(月) 21:52:37.44ID:bWvWMmvf0
うん、無理
C# 10ならglobal usingでプロジェクト全体に利かすことはできるけど嫌がる人も多そうだね
2022/05/31(火) 08:24:30.97ID:ho7yuOvY0
C、C++ソースの移植でもやってるのかな?
2022/05/31(火) 09:01:26.22ID:t3DPXrZg0
>>671
ありがとうございます
やっぱり無理ですかー…

>>672
そんな感じです
ちょっとした手伝いなので詳細は聞けてないですが
674デフォルトの名無しさん (ワッチョイ 5b66-L+Mk)
垢版 |
2022/05/31(火) 09:09:11.04ID:Y29xz3us0
諸兄はlog4netの後継に何を使ってますか?
2022/05/31(火) 09:48:51.84ID:o2L0N9Ru0
nlog一択だろぉ
2022/05/31(火) 09:55:22.83ID:sdnM1kD2M
microsoft extensions logging
loggerにあんまこだわりない
2022/05/31(火) 12:25:48.88ID:Fr/UrQvj0
log4net開発止まってまた再開してなかったけ
また止まったの?
678デフォルトの名無しさん (ワッチョイ 5b66-L+Mk)
垢版 |
2022/05/31(火) 15:05:10.88ID:Y29xz3us0
log4はやらかしがあったので敬遠気味なのです
679デフォルトの名無しさん (ワッチョイ 396a-0J0j)
垢版 |
2022/06/01(水) 17:00:30.18ID:MGwSCz5P0
visual studio 2022
デバッグ結果がコマンドプロンプトに表示されなくなりました
助けて
680デフォルトの名無しさん (スップ Sdb3-95+F)
垢版 |
2022/06/01(水) 17:06:20.10ID:SQbNCGaTd
「助けて」と質問を書く奴は間違いなく真正馬鹿
2022/06/01(水) 17:39:44.43ID:YO9fREa30
具体的なコードとかプロンプトは表示されるのかとか
詳細書かないやつって聞く気あんの?
VS再インスコでもしてろ
682デフォルトの名無しさん (アウアウウー Sac5-G2Bm)
垢版 |
2022/06/01(水) 17:50:01.12ID:+trdaPAta
質問者あるある
1.エラーメッセージを描かない(読まない)
2.何もやってないのに可笑しくなりました(やってるよ)
3.何がしたいのかどうなって欲しいのかを言わない
2022/06/01(水) 22:28:32.81ID:MFrVRq5X0
4.自己解決した時に解決方法を書かない
2022/06/01(水) 23:15:55.70ID:fQkXT2Tt0
助けて
685デフォルトの名無しさん (アウアウウー Sac5-G2Bm)
垢版 |
2022/06/02(木) 11:01:22.99ID:MPFVtYTLa
お前には聴いてない
ごめんちょっと何言ってるか判らない
判らないならレスしないでくださいうざいだけです
2022/06/02(木) 11:09:03.75ID:EQ5RaqnYM
まあ、なんか体調悪いですって聞いただけで症状分かる医者はおらんわな
687デフォルトの名無しさん (ワッチョイ 5be9-jfEb)
垢版 |
2022/06/02(木) 17:23:21.69ID:rr5XpLq50
List<string> test = new List<string>();

test.add("N0001");
test.add("N0002");
test.add("P0012");

testから"N0002"を高速に探す方法ってどんなのがあるでしょうか?
拡張for文で回して探すよりテクニカルな方法がありそうな気がするので。。。
2022/06/02(木) 17:29:55.07ID:+1QDzAuVM
>>687
文字列定数のアドレスで比較するとか?
2022/06/02(木) 17:38:10.68ID:wgP4DXJo0
Find()でも使えば?
それともZDDを実装するとか
2022/06/02(木) 18:13:50.14ID:NW6RDvSp0
>>687
HashSet<string>ではいかんの?
691デフォルトの名無しさん (アウアウウー Sac5-G2Bm)
垢版 |
2022/06/02(木) 19:17:47.03ID:9h+/E5qma
そもそも探す前に探す内容が判ってしまってる条件設定が可笑しい
2022/06/02(木) 19:20:31.79ID:nxM+aynJ0
>>691
KeyValueっぽいじゃん
693デフォルトの名無しさん (ワッチョイ 2bbb-AiA7)
垢版 |
2022/06/02(木) 19:42:49.77ID:7s4DtQtg0
この条件だと、forループより早く探し出すのは困難だろう
2022/06/02(木) 19:52:51.45ID:HqAOppES0
さがすの?在ること確認するの?
695デフォルトの名無しさん (ワッチョイ 5b66-jfEb)
垢版 |
2022/06/02(木) 20:53:08.53ID:UucOdGXH0
Findが速いらしいので下記のようにプログラムしました。
実測してfor文との速さを比べてみたいと思います。

public class TestItem
{
public string x;
public string y;
}

private static void Test()
{
var list = new List<TestItem>();
list.Add(new TestItem() { x = "a", y = "a1" });
list.Add(new TestItem() { x = "b", y = "b1" });
list.Add(new TestItem() { x = "c", y = "c1" });
string n = string.Empty;
list.Find(item =>
{
if (item.x == "b")
{
n = item.y;
return true;
}
return false;
});
Console.WriteLine(n);
}
2022/06/02(木) 21:06:17.38ID:nM6DCghA0
現代的なCPUで実感できる差を出すにはNをいくつに設定すればよいか
みたいな
2022/06/02(木) 21:13:04.22ID:dm3pGs970
まずアルゴリズムの勉強した方が良さそう
698デフォルトの名無しさん (ワッチョイ 5b66-jfEb)
垢版 |
2022/06/02(木) 21:31:15.89ID:UucOdGXH0
さらに調べたらDictionaryが検索最強のようなので、Dictionaryを
使おうと思います。

var table = new Dictionary<string, string>
{
{ "n01" , "a" },
{ "n02" , "b" },
{ "n03" , "c" },
{ "n04" , "d" },
{ "n05" , "e" },
{ "n06" , "f" },
};

var result2 = "";
table.TryGetValue("n04", out result2);
Console.WriteLine(result2);
699デフォルトの名無しさん (アウアウウー Sac5-l8b5)
垢版 |
2022/06/02(木) 21:45:42.94ID:h7Udtbtka
質問です
ある一つのテキストファイルを複数プロセスから読み書きすることがある場合、自プロセスからファイルオープンしたいときに他のプロセスがファイルを掴んでることを考慮するとどういう処理を記述しますか?
エラー処理ではなく必ず書き込み等は実行したいです
よろしくお願いします
2022/06/02(木) 22:05:59.88ID:dm3pGs970
精々書き込み禁止になってるって警告出すか、書き込み何度かリトライするくらいしか出来んよ
ファイルハンドル掴んでる奴が離さないとどうにもならん
2022/06/02(木) 22:14:48.14ID:dm3pGs970
書き込みと読み込みを同時にやりたいなら、ファイルやめてDBにでもした方がいいと思う
2022/06/02(木) 22:36:33.25ID:OWTkgM/r0
セマフォ使うのがセオリーじゃね
2022/06/02(木) 22:40:32.44ID:nxM+aynJ0
>>699
mutexでやった
704デフォルトの名無しさん (ワッチョイ b902-l8b5)
垢版 |
2022/06/02(木) 22:44:32.32ID:uz/pa6mM0
>>700-702
ありがとうございます
DBであればよかったんですけどね。。
セマフォってプロセス間もロックかけてくれるんですかね?試して確認してみます
705デフォルトの名無しさん (ワッチョイ b902-l8b5)
垢版 |
2022/06/02(木) 22:46:10.40ID:uz/pa6mM0
>>703
ありがとうございます
調べてみます!
2022/06/02(木) 23:27:49.06ID:dm3pGs970
>>702
自分で作ってないプログラムがファイル掴んだケースは対処出来ないと思う
2022/06/03(金) 00:14:36.39ID:y9YQAn470
セマフォというかファイルを管理するサーバと読み書きをサーバに要求するクライアントの関係にすれば簡単だよ
セマフォみたいなプロセス同士でリソースを取り合う仕組みは今風の書き方ではない
対してサバクラ方式はいつまでも色褪せない
2022/06/03(金) 00:22:12.82ID:9But4xlq0
余計DBでええやんってなるな
2022/06/04(土) 01:36:48.90ID:OS5Gy/Bt0
プロセス間だのスレッド間だのそんなのが山ほど出てくるシステムの案件に関わってる俺にとってタイムリーな話題
セマフォだの共有メモリだの初めていじるわそんなん……ってなってた。そして古い書き方という情報はやっぱりなってなった
2015年に作り始めたシステムがvisual studio2010にハンガリアン記法だから全体的になんかおかしいなとは思ってたんだが
2022/06/04(土) 07:07:25.82ID:Vj6PMH5WM
>>699
細かい要件によって正解も変わるのでそれだけじゃわからん
2022/06/04(土) 09:23:44.38ID:UQf/W43EM
複数のプロセスから一つのファイルを読み書きするのはやめろ

サービス作ってそいつにメッセージ投げて読み書きを任せろ
2022/06/04(土) 09:49:41.55ID:KcDM9eDIM
ファイルロックが使えるケースもあるけどバグ踏むと惨事
713デフォルトの名無しさん (アウアウウー Sa11-AYv1)
垢版 |
2022/06/04(土) 10:13:48.37ID:nWQp35Pca
>>711
それが理想なんだけど、そのサービスを常駐(起動)させとかないといけないんだよね?
2022/06/04(土) 10:18:11.42ID:r858EDnG0
>>711
まあこれがかなり現実的だな
読み込みは溜めたデータそのまま返せばいいし
書き込みは受け取ったデータをキュー管理して書いていけばいいと思う
2022/06/04(土) 11:36:13.22ID:mplZdxfc0
>>709
どこの俺社環だよ
誰かが流石に今に合わせようと言い出しても、今までこうだったしの一言で押さえつけられるという
2022/06/04(土) 11:49:44.91ID:EGQQwvFc0
>>713
その通りだけど、C#はサービスを作るのは割と簡単
サービスの起動などはOSに任せられるし
2022/06/04(土) 12:06:09.80ID:ckvMm5e00
結局実装したとき担当者が詰められるんたから逃げるが吉
2022/06/04(土) 16:07:37.88ID:OS5Gy/Bt0
ググったら記事がでてきてほーんセマフォ+共有メモリは古めでクライアントサーバー型がいいんだなー
って読んだあとにそれが2007年の記事だったと気づいて頭を抱えた
2022/06/04(土) 17:08:12.72ID:OS5Gy/Bt0
>>714
メールスロットのこと?
2022/06/05(日) 00:28:01.32ID:N8cBIXBg0
クラサバ間の通信はどうしたらいいんだい
パイプかい
2022/06/05(日) 00:30:48.70ID:yKhmGzV/M
クラサバとか筋悪
2022/06/05(日) 01:09:26.63ID:IaYuHtso0
ポインタが分かりません。メモリのメモリって事で合ってますか?
2022/06/05(日) 01:16:49.96ID:ei4PW9H/0
Webをポインタで検索したら幾らでも説明出てくるだろ
それ読んで判らんなら、5chの短い文での説明聞いても判らん
2022/06/05(日) 02:18:15.76ID:Jf/AoYGA0
少なくともお前の日本語じゃ判らんわな
2022/06/05(日) 06:25:14.00ID:EDF47TGA0
ポインタはPL/Iでいうところのbased addrだね
2022/06/05(日) 06:50:07.64ID:IWrg53lV0
lispで言うとcarやね
727デフォルトの名無しさん (アウアウウー Sa11-+J4x)
垢版 |
2022/06/05(日) 07:46:31.07ID:tS177XCQa
>>722
ポインタはメモリのアドレスだよ
アドレスとは番地、つまりメモリの先頭から付いている番号だよ
2022/06/05(日) 09:19:27.01ID:ei4PW9H/0
ポインタに入れるものはアドレスだが、=アドレスという訳ではないな
指定したデータ型の変数のあるアドレス
pointerという名前が、指す物という意味で、変数のある場所を指すのに使う
まあ、C#で普通にプログラミングしてる分には使わん
2022/06/05(日) 09:30:46.65ID:IWrg53lV0
unsafe+ポインタは画像処理とかで出てくるよね?
2022/06/05(日) 09:35:03.79ID:ei4PW9H/0
refやSpan<T>で代用可能な場面が多いし、本当に速い処理が必要なら
OpenCVみたいにゴリゴリに最適化された既存のライブラリ使った方が速い事が多い
2022/06/05(日) 09:36:58.23ID:rpWZtyANM
unsafeどころかIntPtrやそれ相当なしに
ちょっと凝ったことなんかC#でできないから
理解してないと少し踏み込むだけでお手上げになるのでは。
2022/06/05(日) 09:42:55.86ID:ei4PW9H/0
知識として知っていた方がいい事もあるけど、
全てのC#開発者が知らないといけないかというと、そうでもないと思う
言語間連携とかやるなら避けて通れない道ではある
2022/06/05(日) 10:23:44.12ID:BAL8np4KM
ポインターは指し示すもの 差し棒
レーザーポインターみたいなもの

これはこのアドレス(何番地)にありますってもの
変数のなかにアドレスが入ってるもの
2022/06/05(日) 10:32:19.18ID:j0FdwMO6r
画像処理アプリ作成したときにunsafeにしたが爆速だった
735デフォルトの名無しさん (ワッチョイ ca8e-jate)
垢版 |
2022/06/05(日) 13:49:11.29ID:bsSB7mS70
>>722
こいつはCとC#の区別が付いていない馬鹿なだけだろ
736デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/05(日) 15:38:33.40ID:udiiYXiVa
C#のポインタって何?
2022/06/05(日) 15:41:22.08ID:N8cBIXBg0
このゴミみたいな話題でこのスレは終わるんだろうな
738デフォルトの名無しさん (ワッチョイ 5dd2-IeUu)
垢版 |
2022/06/05(日) 16:05:22.22ID:/ywqNijR0
C#のポインタは素直じゃないのでポインタの勉強には向いてない

ポインタ周りで事故ったりする経験も含めてC言語でいい
2022/06/06(月) 12:43:29.55ID:F/GQ8N8BM
CといえばC#の案件って、お前C言語やC++と勘違いしてない?ってコードとの遭遇率が異様に高い。
foreach1つvar一つ出てこない命名はハンガリアン記法みたいな。
名前のせいなのかねぇ。それとも似てると言われるjavaの現場なんかもこんなんなんだろうか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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