[過去ログ] ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
582
(1): (ワッチョイ 6a02-xR/W) 2022/05/07(土)02:59 ID:w70N7Moq0(1/2) AAS
ソートの話で炎上してるみたいだけどさ
そうっとしておいてやれよ
583
(2): (ワッチョイ 33ad-jtXU) 2022/05/07(土)08:22 ID:5zcnkXK50(1) AAS
差分が閾値内であればイコールでよくね?
584: (アウアウウー Sa1f-cwrN) 2022/05/07(土)08:44 ID:knFaNk5Ia(1) AAS
>>583
それは要件次第だから判断できるのは質問者だけ
585: (ワッチョイ becf-HkNE) 2022/05/07(土)09:19 ID:kBo/c16T0(1) AAS
>>583
そこに範囲を持たせてしまうと順序が逆転する可能性があるから正しいソートにならないだろ。
586: (ワッチョイ 9f02-HkNE) 2022/05/07(土)11:13 ID:313oEtJ80(1) AAS
まーだやってんのか
質問者の聞いてるのはソートの仕方だけで、どういうデータを扱うかすら提示されてないんだから
そこに誤差ガー範囲ガーだの考慮する必要はない
587
(1): (ワッチョイ 6a02-xR/W) 2022/05/07(土)11:59 ID:w70N7Moq0(2/2) AAS
ソートの話で炎上してるみたいだけどさ
そおっとしておいてやれよ
588: (ワッチョイ 26bc-/AKQ) 2022/05/07(土)12:41 ID:JO0+xntF0(1) AAS
お。ちょっと改良したのか、そのダジャレ。w
589: (ワッチョイ 4ede-0BEs) 2022/05/07(土)15:40 ID:jfGefHE20(1) AAS
>>582
>>587
590: (スップ Sd2a-uM1l) 2022/05/07(土)18:18 ID:yxSWV8Wsd(1) AAS
>>527
>>528
無事GW中に出来ました!感謝です。ありがとうございます。
591
(1): (ワッチョイ dabd-pKa3) 2022/05/08(日)00:36 ID:19hEeZmX0(1/4) AAS
VisualStudio 2019の<Nullable>enable</Nullable> 環境で、変数のツールチップにString型の時だけ「ここではxxxはnullではありません」と表示されるんだけど
これって最新の2022では直っていたりしますか。

画像リンク


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

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

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

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

以下のコードで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' へ変換することはできません のエラーが出る。
}

↑両方通るか、両方エラーが出るならわかるけど 値型だけエラーが出る?
596
(1): (オイコラミネオ MM9b-1CQB) 2022/05/08(日)03:01 ID:9MG0SRykM(2/4) AAS
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は正確に警告を出す
597
(1): (オイコラミネオ MM9b-1CQB) 2022/05/08(日)03:42 ID:9MG0SRykM(3/4) AAS
int?は値型なのでnullにはならない
なのでいくらnullチェックをしても状況が変わるわけがない
nullにならないint?のnullチェックをしたってそれはint?のままだ
Nullable<int>はNullable<int>のままだ
intからint?は暗黙に変換できる
int?からintは暗黙に変換できない
そういうことになっている
だからIsInt(x)は呼び出せない

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

混乱してきた
int?の正体はNullable<int>という値型でNullable<>は2.0から存在するが
8.0のint?は参照型で別の体系の機能なのだ???
600: (オッペケ Sr33-TWCy) 2022/05/08(日)09:37 ID:BtCX9i6lr(1) AAS
日曜なのに頭使わせないでくれ
601: (ワッチョイ 6a02-xR/W) 2022/05/08(日)09:38 ID:nSqurBAP0(1) AAS
キーボードを頭で叩くのはあなたくらいのものですよ、ジョン
602
(1): (オイコラミネオ MM9b-1CQB) 2022/05/08(日)10:53 ID:9MG0SRykM(4/4) AAS
>>599
8.0から入ったのは参照型のnull許容
603
(1): (ワッチョイ 9f5f-HNGk) 2022/05/08(日)12:05 ID:EI0IYkD90(1) AAS
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の可能性があります」のツールチップ出たほうが親切な気はするけど、現状の仕様かな
604: (ワッチョイ 6a79-pMfC) 2022/05/08(日)17:27 ID:wSAz/RiZ0(2/2) AAS
>>602-603
要するに元々ある微妙な機能の仲間に8.0で新規に参照型が加わりましたってことね
解説ありがとう
605: (アウアウウー Sa1f-cwrN) 2022/05/08(日)18:05 ID:UPzKXd6Ja(1) AAS
むしろNull非許容の参照型が追加されたと考えた方が良くね?
606: (ワッチョイ 6a79-hvpo) 2022/05/08(日)21:58 ID:v1Rjt/F60(1) AAS
どうでもいい機能たくさん付ける割には

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

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

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

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

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

classのほうはnullチェックをしたかをコンパイラが追いかけるためだけの後付け機能だからstructとは若干挙動が違う
609: (オイコラミネオ MM9b-PvPk) 2022/05/09(月)23:37 ID:R3P7osGRM(1) AAS
どんどんシンタックスシュガー系の機能が増えてイミフになっていく
610: (ワッチョイ 6a79-hvpo) 2022/05/10(火)01:41 ID:DufV+Aa+0(1/2) AAS
検索かけてもググれない機能が増えていく一方だな
611: (ワッチョイ 6a79-hvpo) 2022/05/10(火)01:44 ID:DufV+Aa+0(2/2) AAS
1つの処理に複数の表現方法がありすぎるのもクソ化に拍車をかけている
1-
あと 391 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.015s