ふらっと 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/04(水) 23:17:30.75ID:7711bQHg0
AllowUserToAddRows=false にすれば出ないけど、そういう話ではなく?
2022/05/05(木) 10:14:01.55ID:ShoXS+HP0
>>561
ありがとうございます!それでした!!
2022/05/05(木) 11:42:19.70ID:hnbkSlrb0
いえいえ
564デフォルトの名無しさん (ワッチョイ 5fbd-p823)
垢版 |
2022/05/06(金) 18:21:26.56ID:WzpSzG4l0
visual Studioの無料版ダウンロードして遊んでるんですが、PointF[]の中に入ってるXの値とYの値をソートしたいんですが、Xをソートして次にYをソートしたいです。
2022/05/06(金) 18:25:06.51ID:/l3VuTiCM
>>564
あなたが何をしたいのか理解不能です
もう一度入力してください
2022/05/06(金) 18:37:03.45ID:Pyn2b+Aza
どうせX優先でソートしたいってことだろ。この程度理解してやれよ
Array.Sort(aa, (a, b) =>
{
if (a.X == b.X)
return a.Y - b.Y;
return a.X - b.X;
});
みたいな感じにすればいい。ただしfloatだからこのままだとエラーになる +1 -1 0 をreturnするように
2022/05/06(金) 21:18:01.61ID:TntjE3ffd
PointFでそれはおかしいだろ
浮動小数点数同士を単純に==で比較するのは殆どの場合において誤り
2022/05/06(金) 21:30:18.36ID:NMYx4eAj0
この場合は==で問題ないように思うが。
2022/05/06(金) 21:53:53.93ID:Pyn2b+Aza
==だと例えば座標(1,1)と(1,2)のどっちが先になるか分からない
2022/05/06(金) 22:09:32.98ID:TUkwoEaL0
誤差が出るような値の比較は両辺を正規化しないとダメ
2022/05/06(金) 22:23:04.14ID:8H68TfoTa
>>569
昇順だと仮定して(1,2),(1,1)の順になる理由をあげてくれ
2022/05/06(金) 22:27:09.34ID:AMfb+Q8N0
前提が示されていない以上、別にそこまで考慮する必要なくね
丸めが必要なら、前処理しておけばいい
2022/05/06(金) 22:35:58.25ID:NMYx4eAj0
>>570
ここで言ってる「正規化」って浮動小数表現上の正規化/非正規化とは別だよな。
ふつう高級言語レベルで意識する必要はないと思うが。
2022/05/06(金) 22:36:12.23ID:Pyn2b+Aza
>>571
もちろんジャスト(1,2)と(1,1)だったら逆転しないよ・・・
(1-δ,2),(1+δ,1)のように誤差があるとき逆転する
2022/05/06(金) 22:39:13.08ID:9Z37knUna
>>574
いきなり後出し条件出されて笑う
2022/05/06(金) 22:45:04.84ID:YHAWRmCh0
つかLinqで
.OrderBy(p => p.X).ThenBy(p => p.Y)
で良いんじゃないか
2022/05/06(金) 22:54:52.86ID:YHAWRmCh0
>>574
それは1じゃないものを1と書くからそう見えるだけで
1-δ,<1+δなのだから
実際には逆転などしていないと思うんだがな
2022/05/06(金) 22:56:38.59ID:Pyn2b+Aza
floatの話なんだから後出しでもなんでもなく当たり前じゃん。そのくらい察してくれよ
2022/05/06(金) 23:10:14.04ID:/xoCkKVPa
>>578
で、それの何がまずいんだ?
表示の話とごっちゃにしてるだけだろ
2022/05/06(金) 23:23:12.31ID:vot/okCP0
誤差だろうがなんだろうが厳密なソートなら==で充分だろ
質問者がどこまで考えてるかわかんねーのにお前らが推測でグダグダ言ってたって不毛なだけ
2022/05/06(金) 23:24:19.96ID:AMfb+Q8N0
ほんとそれ
2022/05/07(土) 02:59:34.72ID:w70N7Moq0
ソートの話で炎上してるみたいだけどさ
そうっとしておいてやれよ
2022/05/07(土) 08:22:33.50ID:5zcnkXK50
差分が閾値内であればイコールでよくね?
2022/05/07(土) 08:44:25.70ID:knFaNk5Ia
>>583
それは要件次第だから判断できるのは質問者だけ
2022/05/07(土) 09:19:57.56ID:kBo/c16T0
>>583
そこに範囲を持たせてしまうと順序が逆転する可能性があるから正しいソートにならないだろ。
2022/05/07(土) 11:13:36.12ID:313oEtJ80
まーだやってんのか
質問者の聞いてるのはソートの仕方だけで、どういうデータを扱うかすら提示されてないんだから
そこに誤差ガー範囲ガーだの考慮する必要はない
2022/05/07(土) 11:59:50.21ID:w70N7Moq0
ソートの話で炎上してるみたいだけどさ
そおっとしておいてやれよ
2022/05/07(土) 12:41:21.52ID:JO0+xntF0
お。ちょっと改良したのか、そのダジャレ。w
2022/05/07(土) 15:40:54.13ID:jfGefHE20
>>582
>>587
590デフォルトの名無しさん (スップ Sd2a-uM1l)
垢版 |
2022/05/07(土) 18:18:59.39ID:yxSWV8Wsd
>>527
>>528
無事GW中に出来ました!感謝です。ありがとうございます。
2022/05/08(日) 00:36:52.25ID:19hEeZmX0
VisualStudio 2019の<Nullable>enable</Nullable> 環境で、変数のツールチップにString型の時だけ「ここではxxxはnullではありません」と表示されるんだけど
これって最新の2022では直っていたりしますか。

ttps://i.imgur.com/VK2tvtE.png

おかしいのはツールチップだけで、nullableの判定は問題ない感じ。
longとかDateTimeとか色々試したけど、String型だけで表示された。なんで。
2022/05/08(日) 00:41:15.00ID:9MG0SRykM
int?はnullにはならないから
2022/05/08(日) 01:02:19.98ID:19hEeZmX0
え、値型ってそういう事だったの と思って以下のコードで確認したら==null がtrueになっていました

int? a = null;
if(a == null) {
Debug.Print($"a is null"); // こっちになる
} else {
Debug.Print($"a=[{a}]");
}

int? がnullになっているように見えるのですが、もう少しアドバイスを頂けますでしょうか。
2022/05/08(日) 01:13:17.58ID:YmLuYmO0a
よくそんな細かいところに気づいたな
vs2022(preview)でもツールチップ表示同じ
int?はnullになるよ。?ついてたらnull許容型だから入らなかったら困る

string? a = "nullでなく文字列";
string? t(string? v) => v;
var b = t(a);
var _ = b.GetType();
ついでにこんなのだとbは絶対にnullにならないけど緑の波線つく
その程度の一次的な解析しかしてない機能だから不具合を気にしたら負けだよ
2022/05/08(日) 01:34:49.43ID:19hEeZmX0
ありがとうございます。ツールチップだからそんなものか。
と、思ったらロジックでも不明点がありました。

以下のコードでIsIntがエラーになるのですが、これもそういうものなのでしょうか。
if文で非nullチェックをしても、型としてはint?だから IsInt(int v) は呼べない。という事は分かるのですが、
string?はifで非nullチェックをすると string 扱いになるので挙動が違うのですが、これもそういうものなのでしょうか。

void IsString(string v) { };
void IsInt(int v) { };
string? a = null;
if(a!=null){
IsString(a);
}
int? b = null;
if(b!=null){
IsInt(b); // 引数 1: は 'int?' から 'int' へ変換することはできません のエラーが出る。
}

↑両方通るか、両方エラーが出るならわかるけど 値型だけエラーが出る?
2022/05/08(日) 03:01:32.74ID:9MG0SRykM
int?の正体はNullable<int>という値型
構造体はnullにはならない
まるでnullのように見せかけているだけ

int?x=null;
x.ToString();

これは一見するとヌルポだがnullじゃないのでこれは通る
nullにならない値型なのでいちいちこの場所ではnullになりませんとは言わない

x.GetType();
はヌルポになる
なぜか?
GetTypeの呼び出しはobjectへのbox化のあとに行われる
nullのように見えているだけのxはbox化されて本物のnullになる
GetTypeを呼んでるところだけ本物のnullになってるのでIDEは正確に警告を出す
2022/05/08(日) 03:42:17.44ID:9MG0SRykM
int?は値型なのでnullにはならない
なのでいくらnullチェックをしても状況が変わるわけがない
nullにならないint?のnullチェックをしたってそれはint?のままだ
Nullable<int>はNullable<int>のままだ
intからint?は暗黙に変換できる
int?からintは暗黙に変換できない
そういうことになっている
だからIsInt(x)は呼び出せない

8.0で追加された機能の名称にnull許容参照型って書いてあるだろう
Nullable<>は参照型ではなく値型だ
こいつは2.0から存在する
構文が似ているが別の体系の機能なのだ
2022/05/08(日) 04:04:06.14ID:19hEeZmX0
ありがとうございます。
2022/05/08(日) 09:32:20.59ID:wSAz/RiZ0
>>596
>int?の正体はNullable<int>という値型
>>597
>8.0で追加された機能の名称にnull許容参照型って書いてあるだろう
>Nullable<>は参照型ではなく値型だ
>こいつは2.0から存在する
>構文が似ているが別の体系の機能なのだ

混乱してきた
int?の正体はNullable<int>という値型でNullable<>は2.0から存在するが
8.0のint?は参照型で別の体系の機能なのだ???
2022/05/08(日) 09:37:05.34ID:BtCX9i6lr
日曜なのに頭使わせないでくれ
2022/05/08(日) 09:38:55.11ID:nSqurBAP0
キーボードを頭で叩くのはあなたくらいのものですよ、ジョン
2022/05/08(日) 10:53:37.27ID:9MG0SRykM
>>599
8.0から入ったのは参照型のnull許容
2022/05/08(日) 12:05:58.50ID:EI0IYkD90
int?(値型+?)は「null許容値型」で昔からあるもの
int?と書くとNullable<int>という、int型とは違う型になる

そしてNullable<int>は値型なのでnullは入らない
なので int? hoge = null; はhoge自体がnullになるわけじゃなくて hoge.HasValue = false という意味だし
if(a == null) は if(!a.HasValue) という意味になる
これは8.0でも変わってないよ

8.0から追加された<Nullable>enable</Nullable>環境で書けるような
string?(参照型+?)は「null許容参照型」になる
といってもstringとstring?は型としては全く同じもので、?付きは内部で「nullを入れてもOK」という注釈が付くところが新機能
(string? fuga = null; はfuga自体にnullが入る)

あと>>591 の件は確かにnull許容参照型(string?とか)とnull許容値型(int?とか)でツールチップの中身変わるねえ
Visual Studio 2022でも同じ表示になってる
上にあるようにint?自体はnullにならないからなんだろうけど…
int?のようなnull許容値型でもstring?と同じように
「ここではnullではありません / nullの可能性があります」のツールチップ出たほうが親切な気はするけど、現状の仕様かな
2022/05/08(日) 17:27:05.38ID:wSAz/RiZ0
>>602-603
要するに元々ある微妙な機能の仲間に8.0で新規に参照型が加わりましたってことね
解説ありがとう
2022/05/08(日) 18:05:15.31ID:UPzKXd6Ja
むしろNull非許容の参照型が追加されたと考えた方が良くね?
2022/05/08(日) 21:58:40.09ID:v1Rjt/F60
どうでもいい機能たくさん付ける割には

理想の設計書
→理想のソースコード

が見えない
クソな単体テスト機能をIDEに実装したが
じゃあ

理想の設計書
→理想のソースコード
→理想の単体テスト

はどういう想定でオメーは
どの範囲をカバーするんだよ

ってのも見えない
各リリースで追加してる機能に
何の思想も感じない
ごった煮にした挙げ句
上記パラダイムに結論を出した
言語が出てきたら一瞬で消えそう
2022/05/08(日) 23:47:37.01ID:3rY+TRy60
ないものねだり
608デフォルトの名無しさん (ワッチョイ 73d2-cV1q)
垢版 |
2022/05/08(日) 23:56:17.29ID:21iaPdPG0
Struct? → System.Nullable<Struct>
Class? → [System.Runtime.CompilerServices.NullableAttribute(2)] Class
のように完全な別物を同じような書き方で表現している

classのほうはnullチェックをしたかをコンパイラが追いかけるためだけの後付け機能だからstructとは若干挙動が違う
2022/05/09(月) 23:37:03.36ID:R3P7osGRM
どんどんシンタックスシュガー系の機能が増えてイミフになっていく
2022/05/10(火) 01:41:06.09ID:DufV+Aa+0
検索かけてもググれない機能が増えていく一方だな
2022/05/10(火) 01:44:43.79ID:DufV+Aa+0
1つの処理に複数の表現方法がありすぎるのもクソ化に拍車をかけている
2022/05/10(火) 02:40:13.83ID:eFgarx/HM
まあでもTypeScriptよりだいぶマシだよ
2022/05/10(火) 22:19:58.08ID:1A7PmF6XM
と思うだろ?

今ライブラリに対してとてつもないことが進行中だよ
2022/05/10(火) 22:29:09.92ID:e+qIs2vlM
気になるね
具体的に教えて
2022/05/10(火) 23:02:26.59ID:A0speGA90
kwsk
2022/05/10(火) 23:24:53.56ID:Qwl7JHFX0
var middle = array[1..^1];
なんて使ってる人いるのか?
617デフォルトの名無しさん (ワッチョイ 2301-efkZ)
垢版 |
2022/05/11(水) 02:40:00.42ID:mFmc3Ge/0
GetPixel/SetPixelが1万倍速くなるみたいなライブラリの変更をお願いします
vsyncを簡単に待てるとか、キャプチャデバイスから簡単に画像取れるとかもください
2022/05/11(水) 10:14:45.90ID:sDHFf5J4r
c++でやってください
619デフォルトの名無しさん (ワッチョイ 7e68-YKh1)
垢版 |
2022/05/11(水) 10:22:15.42ID:dGpPRwJ20
>>617

描画周り強化なら、monogameはどう?
620デフォルトの名無しさん (ワッチョイ 7e68-YKh1)
垢版 |
2022/05/11(水) 10:23:05.23ID:dGpPRwJ20
キャプチャーデバイスには対応して無いだろうけど。
2022/05/11(水) 12:18:59.28ID:hFfrzzscM
Unityでよいのでは
2022/05/15(日) 18:48:30.98ID:i4qpjDO10
ガウス分布のグラフ作成が上手くいかない。
2022/05/15(日) 18:59:10.68ID:TrHVwgsx0
そっかー
2022/05/15(日) 20:47:21.71ID:BkxqnCJx0
pythonでやれば?
2022/05/21(土) 04:43:04.06ID:O2gJaEXQ0
最近趣味程度でC#をいじりだしたガチの入門者なんですが
PCで3秒ごとにコピペ貼り付けを自動で繰り返すアプリを作ったのですがそれをAndroidでも使えるようにしたいです
どうすればいいでしょうか?
2022/05/21(土) 05:33:52.62ID:O2gJaEXQ0
アプリってレベルでもない…20行程度で作れるやつなんですが
2022/05/21(土) 08:28:07.07ID:3/0PZoxh0
>>625
どうしてもC#が使いたいなら、XamarinやMAUIやUnoなどのプラットフォームを使う。ただし人脈が無いと無理な場合もある。
2022/05/21(土) 08:41:16.91ID:cedrosp1r
20行ならjavaかkotlinで作ればいいじゃん
わざわざc#を無理やりAndroidで動かそうとするな
2022/05/22(日) 00:42:25.12ID:1mUE50i3M
>>625
前にも同じようなレス見たな…

5chあらし目的ならやめとけと書いたけど
2022/05/22(日) 07:09:57.17ID:tnNB3SRb0
>>628
スマホ用のアプリはjavaかkotlinって言語じゃないと出来ないんですね
そんなことも言われなきゃ分からないレベルでしかプログラミングしたこと無いんですが・・
ツールはSendKeysを2つ使っただけの本当に簡易的なもんなんだけど言語変えて直ぐに出来るかな
2022/05/22(日) 08:04:54.67ID:v7ITkvCgr
>>630
調べればできるからやれ
プログラミングやったことないなんて言い訳なんかどうでもいい
2022/05/22(日) 10:07:47.74ID:1mUE50i3M
androidってそもそも他のアプリにキー送信できんやろ
2022/05/22(日) 10:12:10.33ID:+lLn8FyC0
>>632
そのへんもやってみればわかること

そういうのめっちゃ回避してキーを別アプリに送ろうとしたけど
やった次の日に対策されてたから
監視でもしてんのかってぐらい見張ってるのがAndroid
2022/05/22(日) 10:17:50.56ID:1mUE50i3M
おーい!見てるか?

やってるやつ見つけてやったからな!
2022/05/22(日) 10:37:36.27ID:gh/jHZoOd
いつも見ているぞ
2022/05/22(日) 10:59:44.81ID:7HW4nX7o0
>>630
クロスプラットフォームなライブラリもあるけど、結局そのOS毎の独自処理をラップしてるだけだから
OS毎の知識は必要になる
本当にガチ初心者なら、多分上手く扱えないと思う
2022/05/22(日) 21:23:37.11ID:RDTYjvSl0
HIDとして振舞えば何でもできる
詳細は自分で考えようね
2022/05/22(日) 21:59:10.64ID:8lGG73uH0
初心者相手にマウントキモティ〜w
2022/05/26(木) 18:01:21.42ID:qpPkK1xsa
スマホでわかりやすいアプリなどあったら教えて欲しいですガチの初心者ですお願いします
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は送信用で受信用ではなかったのでした・・・今気づいた・・・
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。