!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part152
http://mevius.5ch.net/test/read.cgi/tech/1629888256/
■関連スレ
C#, C♯, C#相談室 Part94
http://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/
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
ふらっと C#,C♯,C#(初心者用) Part153
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ bf2c-yjVA)
2021/12/13(月) 22:53:21.18ID:dhjmiKBp0341デフォルトの名無しさん (ワッチョイ 2ee3-iZeD)
2022/01/04(火) 12:01:01.01ID:g8h7/5Pi0342デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
2022/01/04(火) 12:07:12.39ID:kSsP1HEHa >>323見たときに
var json =
こうあったとき、デコード後のclassが入ってることあったり、json stringが入ってたり、varやjsonなんて型や変数名だとわけわかんねーよ!
って話かと思ったら全然違った。なんだこの流れ・・・
var json =
こうあったとき、デコード後のclassが入ってることあったり、json stringが入ってたり、varやjsonなんて型や変数名だとわけわかんねーよ!
って話かと思ったら全然違った。なんだこの流れ・・・
343デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/04(火) 12:11:24.66ID:Oz0E0ZFa0 これこれ。>>341 おれは一言もジャバスクなんて言ってないのにジャバスクの話にされて、
さらにはおれがジャバスクを後付したと妄信し、いきなり仕事したくないとかキチガイ妄想炸裂。
仕事先でこんなキチガイいたらガチで名誉毀損で訴えるわ。
これが型をスルーできる奴の脳の構造。リアルでアホだろ、こいつら…
さらにはおれがジャバスクを後付したと妄信し、いきなり仕事したくないとかキチガイ妄想炸裂。
仕事先でこんなキチガイいたらガチで名誉毀損で訴えるわ。
これが型をスルーできる奴の脳の構造。リアルでアホだろ、こいつら…
344デフォルトの名無しさん (ワッチョイ 9901-QLHw)
2022/01/04(火) 12:12:43.55ID:IgSyCTXi0 ※現在は削除されています
https://i.imgur.com/1WGlGRS.png
https://i.imgur.com/1WGlGRS.png
345デフォルトの名無しさん (スププ Sd62-8XAc)
2022/01/04(火) 12:14:13.14ID:K01QBlyFd >>343
TypeScriptおすすめ
TypeScriptおすすめ
346デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 12:23:30.92ID:CklunmhzM TypeScriptは型ヒント付きスクリプト言語にはよくあることだけど型が嘘をつけるので積極的に使わない方がいい
「型がついてるから安心だ」と思っていたら実行時に違う型の値が入っていることがよくある
なんなら生のJavaScriptの方が「型がないから全ての変数が信用できない」という前提に立てる分まだマシまである
「型がついてるから安心だ」と思っていたら実行時に違う型の値が入っていることがよくある
なんなら生のJavaScriptの方が「型がないから全ての変数が信用できない」という前提に立てる分まだマシまである
347デフォルトの名無しさん (スププ Sd62-8XAc)
2022/01/04(火) 12:29:36.62ID:K01QBlyFd >>346
それ言い出すとC++もreinterpret_cast多用で型の嘘つけるからなあ
それ言い出すとC++もreinterpret_cast多用で型の嘘つけるからなあ
348デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 12:42:28.79ID:rprq1MIMM >>347
まさにそれだね
cppは名前付きのキャストを使い分ける習慣が広まってるから状況は多少、マシ
TSにはanyとかいう負の遺産がある
それにJSはそれ自身ではできることが少ない言語なのでインフラapiコールに頼りがちだ
そこでanyを使いたくなくても多用するのでとにかく間違えやすい
自分がうっかり間違える可能性
チームメンバーが間違える可能性
ライブラリ作者が間違える可能性
とにかく間違いが起こりやすい
なのでTypeScriptは使わないほいがいい
まさにそれだね
cppは名前付きのキャストを使い分ける習慣が広まってるから状況は多少、マシ
TSにはanyとかいう負の遺産がある
それにJSはそれ自身ではできることが少ない言語なのでインフラapiコールに頼りがちだ
そこでanyを使いたくなくても多用するのでとにかく間違えやすい
自分がうっかり間違える可能性
チームメンバーが間違える可能性
ライブラリ作者が間違える可能性
とにかく間違いが起こりやすい
なのでTypeScriptは使わないほいがいい
349デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
2022/01/04(火) 12:53:18.36ID:rkCZbU1/0 ・間違ったコールバックの型付け
・間違ったasの使用
・間違った.d.tsの使用
・間違ったユーザー定義タイプガード
TypeScriptで肩を間違える可能性があるのはこんなところかね。
まぁ、自分で使いこなせないものを使わない方がいいってのはその通りだが、
他人も同じように使いこなせないわけじゃないしな。
・間違ったasの使用
・間違った.d.tsの使用
・間違ったユーザー定義タイプガード
TypeScriptで肩を間違える可能性があるのはこんなところかね。
まぁ、自分で使いこなせないものを使わない方がいいってのはその通りだが、
他人も同じように使いこなせないわけじゃないしな。
350デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 13:23:06.07ID:b15zgk0OM >>349
間違える余地が在ることが問題
特定の個人が使いこなせるこなせないという低次元な議論じゃない
型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
その検証のために心労とコストが増えて
そして実際にバグが増える
C#では例えば「DateTimeと書いた変数に実際にはstringが入っているかもしれない」などと考えてコーディングする人は誰もいない
C#ではよほどのことがなければ基本的に型が嘘をつかないからそれで上手くいく
DateTimeと書かれたらそれはDateTimeであってstringであることを考慮する必要はない
しかしTypeScriptは違う
型は平気で嘘をつく
Date型と書いた変数が実際は文字列だろうが数値だろうがお構いなしだ
TypeScriptでは型が嘘をついていないことを確かめるには
その型が嘘をついている可能性があるという前提でバリデーションを追加するか
依存してるライブラリの内部の隅々までソースを追いかけるか
そういった対策をしなければならない
それはあまりにも非生産的だ
間違える余地が在ることが問題
特定の個人が使いこなせるこなせないという低次元な議論じゃない
型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
その検証のために心労とコストが増えて
そして実際にバグが増える
C#では例えば「DateTimeと書いた変数に実際にはstringが入っているかもしれない」などと考えてコーディングする人は誰もいない
C#ではよほどのことがなければ基本的に型が嘘をつかないからそれで上手くいく
DateTimeと書かれたらそれはDateTimeであってstringであることを考慮する必要はない
しかしTypeScriptは違う
型は平気で嘘をつく
Date型と書いた変数が実際は文字列だろうが数値だろうがお構いなしだ
TypeScriptでは型が嘘をついていないことを確かめるには
その型が嘘をついている可能性があるという前提でバリデーションを追加するか
依存してるライブラリの内部の隅々までソースを追いかけるか
そういった対策をしなければならない
それはあまりにも非生産的だ
351デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 13:31:23.12ID:b15zgk0OM function ExternalLibFunc(): string
function example() {
const s: string = ExternalLibFunc();
if (typeof s === “string”)
throw new Error(“type errro”);
// do something
}
これが安全なTypeScriptコード
stringと宣言されたものを本当にstringかどうか確かめなければならない
この確認はバカバカしいと思うがやらなければバグを踏む可能性がある
でも全てを確認するなんて大変だ
だからみんな確認を怠る
そして実際にバグが発生する
そういう言語なんだTypeScriptってのは
function example() {
const s: string = ExternalLibFunc();
if (typeof s === “string”)
throw new Error(“type errro”);
// do something
}
これが安全なTypeScriptコード
stringと宣言されたものを本当にstringかどうか確かめなければならない
この確認はバカバカしいと思うがやらなければバグを踏む可能性がある
でも全てを確認するなんて大変だ
だからみんな確認を怠る
そして実際にバグが発生する
そういう言語なんだTypeScriptってのは
352デフォルトの名無しさん (ワッチョイ dd5f-lZmz)
2022/01/04(火) 14:02:28.93ID:4jDgn5Qw0 Form1csにイベントがたくさんあるので行数が多くなってしまうのですが
部品ごとにファイルを分けてコードを書く方法を教えてください
部品ごとにファイルを分けてコードを書く方法を教えてください
353デフォルトの名無しさん (アウアウウー Saa5-45BR)
2022/01/04(火) 15:10:27.49ID:v2mo/5h3a >>352
メニューやツールバーみたいのがあったら
イベントハンドラの数が増えること自体は仕方ない。
行数が増えて困ることは目的の場所を探しにくくなることだから、
対策は#regionディレクティブをうまく使って分類することぐらい
メニューやツールバーみたいのがあったら
イベントハンドラの数が増えること自体は仕方ない。
行数が増えて困ることは目的の場所を探しにくくなることだから、
対策は#regionディレクティブをうまく使って分類することぐらい
354デフォルトの名無しさん (ワッチョイ 2247-8XAc)
2022/01/04(火) 15:15:26.98ID:2Grj8syS0 >>352
partial class
partial class
355デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 15:40:55.02ID:y9M4FwJ2M >>352
void HogeEvent(object s, EventArgs e) {
//長いコード
}
↑これを
↓こうする
void HogeEvent(object s, EventArgs e) {
_hoge.DoSomething();
}
class Hoge {
public DoSomething() {
// 長いコード
}
}
void HogeEvent(object s, EventArgs e) {
//長いコード
}
↑これを
↓こうする
void HogeEvent(object s, EventArgs e) {
_hoge.DoSomething();
}
class Hoge {
public DoSomething() {
// 長いコード
}
}
356デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
2022/01/04(火) 16:14:54.64ID:3sRZKpnOa >>350
そうは言ってもc#だってobjectや継承あるからな・・・
そうは言ってもc#だってobjectや継承あるからな・・・
357デフォルトの名無しさん (テテンテンテン MM26-rbeQ)
2022/01/04(火) 17:04:00.85ID:BWSRqAyGM358デフォルトの名無しさん (ワッチョイ 49b0-zYQh)
2022/01/04(火) 17:29:19.72ID:XgG7cDH40 なんだ動的型付け言語が嫌いなだけか
359デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 17:41:00.66ID:h9ISFI6AM >>356
全く意味合いが異なる
全く意味合いが異なる
360デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 17:42:21.35ID:h9ISFI6AM >>357
本来バリデーションが必要がないところでバリデーションが必要になることが大問題
本来バリデーションが必要がないところでバリデーションが必要になることが大問題
361デフォルトの名無しさん (アウアウウー Saa5-45BR)
2022/01/04(火) 18:00:52.01ID:v2mo/5h3a それはバリデーションじゃなくてバグのチェックだねw
362デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 18:24:36.74ID:h9ISFI6AM そだね
TypeScriptdではそういうことも必要になってくる
言語上の欠陥なんだけどランタイムがJSだから永遠に解決しないだろうなこれ
TypeScriptdではそういうことも必要になってくる
言語上の欠陥なんだけどランタイムがJSだから永遠に解決しないだろうなこれ
363デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
2022/01/04(火) 18:24:37.24ID:rkCZbU1/0 >間違える余地が在ることが問題
完全無欠な言語以外は認められないと?
>型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
どういう場合にそのようなことが起きるかがわかってないんだろうね。結局使いこなしの問題。
完全無欠な言語以外は認められないと?
>型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
どういう場合にそのようなことが起きるかがわかってないんだろうね。結局使いこなしの問題。
364デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 18:27:22.35ID:h9ISFI6AM >>363
完全無欠な言語しか使わないとまでは言わない
ただ大きな欠陥のある言語は使いたくない
感覚としてはその程度だね
どういう場合に起こるか?
それはあらゆる場面で起こりうる
ライブラリすら信用できない
完全無欠な言語しか使わないとまでは言わない
ただ大きな欠陥のある言語は使いたくない
感覚としてはその程度だね
どういう場合に起こるか?
それはあらゆる場面で起こりうる
ライブラリすら信用できない
365デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/04(火) 20:53:29.42ID:f9obKWjH0366デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/04(火) 20:55:06.78ID:f9obKWjH0367デフォルトの名無しさん (アウアウウー Saa5-zIXK)
2022/01/04(火) 21:33:12.76ID:e29mAngZa formsのchartを使ってるんだけど、20系列くらいを100ms以下でリアルタイム更新って厳しいのかな
色々試したけど更新にどうしても時間がかかる。。
色々試したけど更新にどうしても時間がかかる。。
368デフォルトの名無しさん (ワッチョイ 6187-F0I3)
2022/01/04(火) 21:37:51.18ID:I8DXoUzs0369デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
2022/01/04(火) 21:44:14.34ID:rkCZbU1/0 >>364
Cのポインタだって使い方を間違えたら正しい型を示さないことになるし、C自身も安全でない言語と見做される
こともあるが、それを分かったうえで正しく使う人はいるし実際広く使われている。そういうこと。
Cのポインタだって使い方を間違えたら正しい型を示さないことになるし、C自身も安全でない言語と見做される
こともあるが、それを分かったうえで正しく使う人はいるし実際広く使われている。そういうこと。
370デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/04(火) 21:58:28.71ID:f9obKWjH0 >>368
外部のAPIで1899年以前を扱いうる場合。
外部のAPIで1899年以前を扱いうる場合。
371デフォルトの名無しさん (ワッチョイ e22c-4nvB)
2022/01/04(火) 22:45:31.35ID:mTPUUbcD0 >>367
サードパーティ製のチャートを探すことをお勧め
詳しくないから具体的な名前は特に挙げられないけど
とりあえずScottPlotって名前を最近見かけたので試してみては
しかし20系列もあると読みづらそうだな
サードパーティ製のチャートを探すことをお勧め
詳しくないから具体的な名前は特に挙げられないけど
とりあえずScottPlotって名前を最近見かけたので試してみては
しかし20系列もあると読みづらそうだな
372デフォルトの名無しさん (アウアウウー Saa5-45BR)
2022/01/04(火) 22:57:39.12ID:xZMfmUxua >>367
ただの折れ線グラフとかでビジュアル的に凝る必要がなければ
UserConrolから自分で作った方が早いかもね。
昔散々そういうのやってたけど、やってみると案外簡単だ。
WPFを選択するとパフォーマンス問題にぶち当たるから注意。
ただの折れ線グラフとかでビジュアル的に凝る必要がなければ
UserConrolから自分で作った方が早いかもね。
昔散々そういうのやってたけど、やってみると案外簡単だ。
WPFを選択するとパフォーマンス問題にぶち当たるから注意。
373デフォルトの名無しさん (ワッチョイ 49b3-Fu3+)
2022/01/04(火) 23:04:51.13ID:hJBi5qqI0 おすすめ本あります?
アマゾンで独習を見たのですが第4版は不評、第3版おすすめとなってたんですが
2010年出版っというのが引っかかっているので他を探しています。
スキルはPythonでPyGameのサンプルを打ち込みつつ、解説を見て勉強してるレベルです。
その他言語の経験はなし!
アマゾンで独習を見たのですが第4版は不評、第3版おすすめとなってたんですが
2010年出版っというのが引っかかっているので他を探しています。
スキルはPythonでPyGameのサンプルを打ち込みつつ、解説を見て勉強してるレベルです。
その他言語の経験はなし!
374デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 23:13:01.18ID:0nFT+Tq8M >>365
違う
本来バリデーションは必要ないのにTSでは(というか型がゆるゆるのスクリプト言語全般だが)余計なバリデーションが必要ということ
string x = func();
と書いた時にC#ではxが本当に文字列であることを検証する必要はない
nullになっていないか、文字列が特定の書式を満たしているか、といった心配はあるだろう
しかし、xにintが入ってる可能性は考慮する必要はない
TSではxにnumberが入っているかも、という可能性を考慮しなければならない
これが本来やらなくていいはずのバリデーションだ
これは型が嘘をつくから起こりうること
TSの代表的な欠陥の1つだ
違う
本来バリデーションは必要ないのにTSでは(というか型がゆるゆるのスクリプト言語全般だが)余計なバリデーションが必要ということ
string x = func();
と書いた時にC#ではxが本当に文字列であることを検証する必要はない
nullになっていないか、文字列が特定の書式を満たしているか、といった心配はあるだろう
しかし、xにintが入ってる可能性は考慮する必要はない
TSではxにnumberが入っているかも、という可能性を考慮しなければならない
これが本来やらなくていいはずのバリデーションだ
これは型が嘘をつくから起こりうること
TSの代表的な欠陥の1つだ
375デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 23:14:48.44ID:0nFT+Tq8M376デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/04(火) 23:19:57.46ID:Oz0E0ZFa0 var x = func();
var y = x.func();
型が分からないとイライラくるよね。
スルーできる奴の脳みそってそれをすべて妄想で埋めてることが社会実験で実証された。
var y = x.func();
型が分からないとイライラくるよね。
スルーできる奴の脳みそってそれをすべて妄想で埋めてることが社会実験で実証された。
377デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
2022/01/04(火) 23:20:34.56ID:rkCZbU1/0 >型が嘘をつく
この言い回しをよっぽど気に入っているようだけどw当然TypeScriptが勝手に嘘をつくわけはなくて、
嘘をつかせたのはそれを使うプログラマ自身だわな
この言い回しをよっぽど気に入っているようだけどw当然TypeScriptが勝手に嘘をつくわけはなくて、
嘘をつかせたのはそれを使うプログラマ自身だわな
378デフォルトの名無しさん (ワッチョイ 9d78-iZeD)
2022/01/04(火) 23:24:23.97ID:Hrzc5R7N0 >>376
それはメソッド名が糞なだけだよ
それはメソッド名が糞なだけだよ
379デフォルトの名無しさん (スフッ Sd62-XkW2)
2022/01/04(火) 23:30:10.65ID:r+SDF27Td わざわざ宣言した行まで戻って型確認するのか
380デフォルトの名無しさん (ワッチョイ 426a-M3Pq)
2022/01/04(火) 23:30:19.98ID:QHt6N4Fh0 相変わらずコードが読めてもテンプレ読めない人が多いな
381デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/04(火) 23:36:38.21ID:0nFT+Tq8M >>377
TSが勝手に嘘をつくことはないがC#と比べて嘘をつかせるように導くのに長けている
プログラマは世界中に沢山いてTSを使うと漏れなくその脅威に晒される
また彼らが作成したライブラリにも嘘が潜んでいるかもしれない
TSが勝手に嘘をつくことはないがC#と比べて嘘をつかせるように導くのに長けている
プログラマは世界中に沢山いてTSを使うと漏れなくその脅威に晒される
また彼らが作成したライブラリにも嘘が潜んでいるかもしれない
382デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/04(火) 23:58:26.60ID:f9obKWjH0 >>374
違わないよ。
全てTSの中であればNumberであることが担保されているのは、全てC#の中である場合と同程度に正しい。
C#の場合でも信頼境界を越えるのであればその可能性は考慮しないといけないし、TSの場合でも信頼境界を越えないのであれば気にする必要は無い。
ましてやTSというかJSはシングルスレッドなので別スレッドに壊される事も無い。
違わないよ。
全てTSの中であればNumberであることが担保されているのは、全てC#の中である場合と同程度に正しい。
C#の場合でも信頼境界を越えるのであればその可能性は考慮しないといけないし、TSの場合でも信頼境界を越えないのであれば気にする必要は無い。
ましてやTSというかJSはシングルスレッドなので別スレッドに壊される事も無い。
383デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/05(水) 00:01:01.66ID:fuEg19Cq0384デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 00:50:54.28ID:JsfvM5KJM >>382
全てTSでも型が保証されない
最も簡単な事例は
const x: string = 100 as any
もちろんこんなコードを書く人はいないが
複雑で膨大なアプリケーションコードを扱うプロジェクトのなかで誰一人としてミスをしないかというと
そんな保証は全くなく型に嘘をつかれることになるだろう
全てTSでも型が保証されない
最も簡単な事例は
const x: string = 100 as any
もちろんこんなコードを書く人はいないが
複雑で膨大なアプリケーションコードを扱うプロジェクトのなかで誰一人としてミスをしないかというと
そんな保証は全くなく型に嘘をつかれることになるだろう
385デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 00:51:02.44ID:JsfvM5KJM >>383
ブーメラン
ブーメラン
386デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/05(水) 00:56:20.83ID:fuEg19Cq0 >>384
それはC#でも同じでしょ。
それはC#でも同じでしょ。
387デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 00:59:38.17ID:JsfvM5KJM C#ではI/Oが生じる場合にも型が嘘をつくことはない
例えばこうだ
int x = Parse<int>(inputStream);
パースエラーにより実行時に例外が発生することはある
それはどの言語でも起こりうることだ
しかし、依然としてxにstringが入ったり、DateTimeが入ったり、という、TSでは普通にあり得る悍ましい挙動を示すことは無いのだ
なぜならC#はTSと違って型が嘘をつかないから
C#の型は信頼できる
TSの型は嘘つきで信頼できない
例えばこうだ
int x = Parse<int>(inputStream);
パースエラーにより実行時に例外が発生することはある
それはどの言語でも起こりうることだ
しかし、依然としてxにstringが入ったり、DateTimeが入ったり、という、TSでは普通にあり得る悍ましい挙動を示すことは無いのだ
なぜならC#はTSと違って型が嘘をつかないから
C#の型は信頼できる
TSの型は嘘つきで信頼できない
388デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/05(水) 01:00:08.39ID:fuEg19Cq0389デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/05(水) 01:00:59.54ID:fuEg19Cq0 >>387
じゃあTSはどうしてxにStringやなにがしかが入るの?どこで入れてんのよ?w
じゃあTSはどうしてxにStringやなにがしかが入るの?どこで入れてんのよ?w
390デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 01:10:21.43ID:JsfvM5KJM >>386
全く異なる
C#ではdynamic、リフレクション、コード生成を使えばコンパイラの検証を回避して、間違った型の変数に値を設定できる
しかし、C#でこれをやると実行時にエラーになるのだ
TSで何事もなく処理が進むのとは、全く趣が異なる
そう、TSではstringと指定した筈の変数にnumberやDateの変数が入ったまま、何事もなく進んでしまうのだ
これは本当に恐ろしい挙動だ
つまり、バグを仕込んだところから、しばらく処理が進んだところで被害が顕現する、ということだ
これはまるで、潜伏期間の長いコロナウイルスのように厄介な特性だ
この挙動はC言語などではよくあるものだったが、原因と結果が離れているのでデバッグがしにくい、とのことで先人達は大いに苦しめられたものだ
まがりなりにも後発の言語であるTSが、大昔の言語設計と同じ失敗を繰り返しているのは残念でならない
全く異なる
C#ではdynamic、リフレクション、コード生成を使えばコンパイラの検証を回避して、間違った型の変数に値を設定できる
しかし、C#でこれをやると実行時にエラーになるのだ
TSで何事もなく処理が進むのとは、全く趣が異なる
そう、TSではstringと指定した筈の変数にnumberやDateの変数が入ったまま、何事もなく進んでしまうのだ
これは本当に恐ろしい挙動だ
つまり、バグを仕込んだところから、しばらく処理が進んだところで被害が顕現する、ということだ
これはまるで、潜伏期間の長いコロナウイルスのように厄介な特性だ
この挙動はC言語などではよくあるものだったが、原因と結果が離れているのでデバッグがしにくい、とのことで先人達は大いに苦しめられたものだ
まがりなりにも後発の言語であるTSが、大昔の言語設計と同じ失敗を繰り返しているのは残念でならない
391デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 01:17:22.12ID:JsfvM5KJM >>388
低レベルなメモリアクセスでランタイムを破壊できるのはどの言語でも当たり前のことだろう
TSのように低レベルメモリアクセスでもなんでもない、ただの代入で型安全を破壊できるようなものと同列に扱うべきではない
低レベルなメモリアクセスでランタイムを破壊できるのはどの言語でも当たり前のことだろう
TSのように低レベルメモリアクセスでもなんでもない、ただの代入で型安全を破壊できるようなものと同列に扱うべきではない
392デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 01:19:07.95ID:JsfvM5KJM393デフォルトの名無しさん (ワッチョイ 2247-8XAc)
2022/01/05(水) 01:46:29.20ID:lnjYKBBj0 >>379
varの上にマウスカーソル合わせてツールチップに表示される型を見るだけ
varの上にマウスカーソル合わせてツールチップに表示される型を見るだけ
394デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
2022/01/05(水) 07:33:07.78ID:OXnyWrYu0395デフォルトの名無しさん (ワッチョイ 8101-ooUO)
2022/01/05(水) 07:38:49.44ID:t5pkfnoc0 JSなんて使いたくて使ってるやつはいないって事だよ
ほかに選択肢がないから仕方なく使ってるだけで
そもそも本来TSのようなトランスパイラはこの世に存在し得ない存在
ほかに選択肢がないから仕方なく使ってるだけで
そもそも本来TSのようなトランスパイラはこの世に存在し得ない存在
396デフォルトの名無しさん (ワッチョイ d1ac-Loja)
2022/01/05(水) 09:23:21.76ID:bvaGXVet0 なんでc#スレで一生懸命TSの悪口言ってるの?
397デフォルトの名無しさん (ドコグロ MM56-wcXw)
2022/01/05(水) 09:53:21.58ID:SNzZltS0M 欠陥指摘できる俺すげー君だろw
スルーしとけ
スルーしとけ
398デフォルトの名無しさん (エアペラ SD2d-miAB)
2022/01/05(水) 09:57:56.22ID:5ORhcVX2D WinFormのlistViewをタブレットで使いたいのですがlist部分を指で上下してlistをスクロールする事は出来るでしょうか
スクロールバーで上下出来るのですがスマホのように出来ないかなと
スクロールバーで上下出来るのですがスマホのように出来ないかなと
399デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 10:15:33.57ID:Zzh6nSy3M >>394
挙げられたリストでは全く足りない
こういう認識の甘さがバグを仕込むキッカケになるのだろう
そもそも人間は間違える余地があれば、いつか必ず間違える
注意してれば大丈夫、などという考え方では到底ダメだ
挙げられたリストでは全く足りない
こういう認識の甘さがバグを仕込むキッカケになるのだろう
そもそも人間は間違える余地があれば、いつか必ず間違える
注意してれば大丈夫、などという考え方では到底ダメだ
400デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 10:17:21.15ID:Zzh6nSy3M401デフォルトの名無しさん (スププ Sd62-8XAc)
2022/01/05(水) 10:34:58.47ID:TbL+VltAd TypeScriptなしではJS開発やってられなくなってしまったな
特にチーム開発
特にチーム開発
402デフォルトの名無しさん (ワッチョイ e22c-4nvB)
2022/01/05(水) 11:00:24.24ID:dUhlmVC50403デフォルトの名無しさん (ササクッテロリ Spf1-Wb4d)
2022/01/05(水) 11:06:50.05ID:llHLsWPPp >>400
おまえは相手がうんと言うまでスレチ議論続けるつもりか
おまえは相手がうんと言うまでスレチ議論続けるつもりか
404デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
2022/01/05(水) 11:43:03.34ID:93Qk8F8ua 例えばリストビューを作るときにアイテムのTagに日時を代入しとく
そうしたら選択したアイテムの日時がすぐにわかるから。こんなのはよくやる手法だよね
で、実際にアイテムがクリックされたときにTagを読んで日時を取得しようとしたらstringだったりDateTimeだったりして型エラー。バリデーションwが必要になる
こんなの(アホがプログラミングしたら)c#でも日常茶飯事だからな
tsでも同じ。アホがプログラミングしたらバリデーションwは必須だし、普通にプログラミングしたら不要
そうしたら選択したアイテムの日時がすぐにわかるから。こんなのはよくやる手法だよね
で、実際にアイテムがクリックされたときにTagを読んで日時を取得しようとしたらstringだったりDateTimeだったりして型エラー。バリデーションwが必要になる
こんなの(アホがプログラミングしたら)c#でも日常茶飯事だからな
tsでも同じ。アホがプログラミングしたらバリデーションwは必須だし、普通にプログラミングしたら不要
405デフォルトの名無しさん (テテンテンテン MM26-8VTm)
2022/01/05(水) 11:54:44.06ID:ZRZErZAVM >>404
君は議論の焦点を全く理解してないようだね
君は議論の焦点を全く理解してないようだね
406デフォルトの名無しさん (ワッチョイ aebb-dPEu)
2022/01/05(水) 12:07:48.08ID:2gwkfiFL0 すまんが、昔、Linux + LLDBでのC#のデバッグ方法が公式サイトに書かれていたようが気がするんだけどさ
そんなようなページってどこにあるのか、誰か知ってたら教えて!!!
そんなようなページってどこにあるのか、誰か知ってたら教えて!!!
407デフォルトの名無しさん (アウアウウー Saa5-45BR)
2022/01/05(水) 14:47:28.15ID:kRupjksVa 昔OSも乗ってない小規模組み込みをアセンブリでずっと書いてたけど、
アセンブリには当然型なんて概念そのものが存在しないが、
だからintとBCDを間違えたり、構造体のポインタを別の構造体のポインタと勘違いする
ミスが多いかと言うと、そこは意外とそうでもなかったりする。
それより生産性に対する影響の方が大きい印象だね。
まあこれは小規模かつ基本1人の開発だったからそうだっただけで、大規模かつチーム開発だと
話が変わってくるのかもしれない。
この辺はゲーム業界の人が詳しそうだね。
あの世界は下手したら90年代の終わり頃までアセンブリでやってたはず
アセンブリには当然型なんて概念そのものが存在しないが、
だからintとBCDを間違えたり、構造体のポインタを別の構造体のポインタと勘違いする
ミスが多いかと言うと、そこは意外とそうでもなかったりする。
それより生産性に対する影響の方が大きい印象だね。
まあこれは小規模かつ基本1人の開発だったからそうだっただけで、大規模かつチーム開発だと
話が変わってくるのかもしれない。
この辺はゲーム業界の人が詳しそうだね。
あの世界は下手したら90年代の終わり頃までアセンブリでやってたはず
408デフォルトの名無しさん (ワッチョイ d22d-qpXy)
2022/01/05(水) 15:04:40.06ID:XpPjLRYm0 バグには様々な要因があるから、不正な型が代入された場合だけを過度に心配してもね
409デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 15:08:39.22ID:C1Xb8B3u0 型を気にしない馬鹿はテストも当然にしないから
410デフォルトの名無しさん (スププ Sd62-rbeQ)
2022/01/05(水) 15:14:15.12ID:ROW6egx4d >>384
自分が守らなければそりゃ保証もされないだろ。
C#ならある型にはある値しか入らないと思ってそう。
例えば構造体につっこんでFieldOffsetで上書きすればあっさり壊れるぞ。
[StructLayout(LayoutKind.Explicit)]
struct XXX {
[FieldOffset(0)] public DateTime Value;
[FieldOffset(0)] public ushort Tag;
}
でXXX.Tagに適当なもの入れたらValueは無茶苦茶になる。
自分が守らなければそりゃ保証もされないだろ。
C#ならある型にはある値しか入らないと思ってそう。
例えば構造体につっこんでFieldOffsetで上書きすればあっさり壊れるぞ。
[StructLayout(LayoutKind.Explicit)]
struct XXX {
[FieldOffset(0)] public DateTime Value;
[FieldOffset(0)] public ushort Tag;
}
でXXX.Tagに適当なもの入れたらValueは無茶苦茶になる。
411デフォルトの名無しさん (ブーイモ MM26-8yPh)
2022/01/05(水) 15:54:13.43ID:qaVNdYDmM 参照型の変数にnullが入ってるかもしれないし、C#の場合は例外の型もドキュメントの記載を信じるしかないよね
結局は程度問題なんだよ
前者のnullの問題についてはnull許容参照型を使えば型として区別できるけど、null非許容だからといって絶対にnullが入らないわけではなく簡単にnullを混入させることができる
彼の大嫌いなTSと同じく、特にランタイムチェックのない紳士協定だ
結局は程度問題なんだよ
前者のnullの問題についてはnull許容参照型を使えば型として区別できるけど、null非許容だからといって絶対にnullが入らないわけではなく簡単にnullを混入させることができる
彼の大嫌いなTSと同じく、特にランタイムチェックのない紳士協定だ
412デフォルトの名無しさん (アウアウウー Saa5-45BR)
2022/01/05(水) 16:24:00.16ID:kRupjksVa っていうかこれたしか元はvarの話だよね。
繰り返しになるけど、元々の問題提起、つまり
「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」は正しいよ完全にw
匿名型を受ける場合以外のvarの目的は、「見れば分かる」冗長な繰り返しを避けて
シンプルにすること。
「かっこ悪い」みたいな中二病的動機で意地でも型を明示しないことに固執する奴はアホだが、
困ったことに現実にはそういうアホが結構いる。
この辺LINQの乱用が嫌われるのと同じなんだろうねw
シンプルにするための道具を使ってわざわざ難解にするバカw
たぶん彼はシンプルとは文字数が少ないことだと倒錯している
繰り返しになるけど、元々の問題提起、つまり
「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」は正しいよ完全にw
匿名型を受ける場合以外のvarの目的は、「見れば分かる」冗長な繰り返しを避けて
シンプルにすること。
「かっこ悪い」みたいな中二病的動機で意地でも型を明示しないことに固執する奴はアホだが、
困ったことに現実にはそういうアホが結構いる。
この辺LINQの乱用が嫌われるのと同じなんだろうねw
シンプルにするための道具を使ってわざわざ難解にするバカw
たぶん彼はシンプルとは文字数が少ないことだと倒錯している
413デフォルトの名無しさん (スププ Sd62-8XAc)
2022/01/05(水) 17:12:39.57ID:x9hFTlB3d varの型が分からん分からんってこいつメモ帳で開発してんのか?
414デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
2022/01/05(水) 17:24:59.67ID:5TZJeeZKa IDEだけでしかソース見ない奴は問題ないんだよ
ぐぐってブラウザ上で見るソースなんてマウスあてても型表示してくれないからな
ぐぐってブラウザ上で見るソースなんてマウスあてても型表示してくれないからな
415デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 17:28:23.80ID:C1Xb8B3u0 どんだけ小さなプロジェクトしか関わったことないのか知らないが
code reviewするときに数百、数千というvarをおまえはいちいちマウス乗せてチェックしてるのか?
型を気にしないならオープンソースもコードを確認せずビルドして使うタイプだろう。
OSS品質=誰かがチェックしてくれるはず=テストしてない=今のMSのコード品質
code reviewするときに数百、数千というvarをおまえはいちいちマウス乗せてチェックしてるのか?
型を気にしないならオープンソースもコードを確認せずビルドして使うタイプだろう。
OSS品質=誰かがチェックしてくれるはず=テストしてない=今のMSのコード品質
416デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
2022/01/05(水) 17:32:31.52ID:5TZJeeZKa var使ってるぐらいで崩壊するようなとこは大きいの作れないから気にする必要ないよw
417デフォルトの名無しさん (ワッチョイ 8101-ooUO)
2022/01/05(水) 17:43:11.47ID:t5pkfnoc0 varなんて大抵は右辺見たら型わかるやろ?
何が分からんのだ?
何が分からんのだ?
418デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 17:48:48.78ID:C1Xb8B3u0 実験結果は分かった気になって実は全然分かってないでした。
でも分かった気になってるのでいつまでもなぜ分からないのだ?と問い続ける。
でも分かった気になってるのでいつまでもなぜ分からないのだ?と問い続ける。
419デフォルトの名無しさん (ワッチョイ 8101-ooUO)
2022/01/05(水) 17:52:58.23ID:t5pkfnoc0 いやマジで何が分からんの?アホの子なの?
420デフォルトの名無しさん (ワッチョイ d242-hDuN)
2022/01/05(水) 17:58:12.21ID:bWjicXEh0 つか、変数名見ればクラス名も分かる程度にしておくのが普通だから
マウスで調べなくてもだいたい分かる
マウスで調べなくてもだいたい分かる
421デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 17:58:55.28ID:C1Xb8B3u0 自演じゃないよ、彼はそう信じてるんだ。笑わないでほしい。
422デフォルトの名無しさん (ワッチョイ 9d78-iZeD)
2022/01/05(水) 18:09:44.71ID:R56PdZ5+0 >>421
このスレの住人はお前のことを笑っているぞ
このスレの住人はお前のことを笑っているぞ
423デフォルトの名無しさん (ワッチョイ 8101-ooUO)
2022/01/05(水) 18:09:55.54ID:t5pkfnoc0 staticおじさんみたいなもんだな
424デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 18:21:06.82ID:C1Xb8B3u0 そして彼は笑いながら未テスト納品を繰り返す。そしてまたスパコンのデータを吹き飛ばす。
425デフォルトの名無しさん (ワッチョイ 8201-TJkF)
2022/01/05(水) 18:39:16.92ID:w42D9Ab/0 コードレビュー時にローカル変数の型をいちいち調べる意味がよくわからん
必要になるのってバグの原因調査する時だけでしょ
必要になるのってバグの原因調査する時だけでしょ
426デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
2022/01/05(水) 18:41:30.05ID:jje+EFiu0 TS、JSの型がゴミなのはわかる
c#のvarも俺は嫌い
普通に読みにくい
最近は派遣先会社のVSに仕込まれた強制変換スクリプト?で保存すると勝手にvarが明示的な型に置き換えられて
久しく見ない問題だったが
c#のvarも俺は嫌い
普通に読みにくい
最近は派遣先会社のVSに仕込まれた強制変換スクリプト?で保存すると勝手にvarが明示的な型に置き換えられて
久しく見ない問題だったが
427デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 18:42:19.84ID:C1Xb8B3u0 何も知らないなら喋らなきゃ無知はバレない。
428デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
2022/01/05(水) 19:07:10.79ID:5TZJeeZKa429デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
2022/01/05(水) 19:19:51.10ID:fuEg19Cq0 限度の問題では?
MSの規約にあわせれば良いでしょ。
IEnumerable<T>で受けるべきなのにList<T>で受けてるとかそういう不適切な状態になってない限りvarで良いと思うけどな。
varは省略の為に使うのではなくて推論の為に使うんよ。
MSの規約にあわせれば良いでしょ。
IEnumerable<T>で受けるべきなのにList<T>で受けてるとかそういう不適切な状態になってない限りvarで良いと思うけどな。
varは省略の為に使うのではなくて推論の為に使うんよ。
430デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
2022/01/05(水) 19:53:56.06ID:jje+EFiu0 varなんて右クリックメニューで元に戻せるから書くだけ書いたら明示的な記述に直しちゃった方がいいよ
431デフォルトの名無しさん (アウアウウー Saa5-45BR)
2022/01/05(水) 19:57:59.86ID:kRupjksVa >>429
推論はするよりしない方が脳への負担が低いはずなので、
君の説を採るとvarは全面禁止すべきという結論になってしまうよw
少なくともコードの読み手(書き手ではなく)にとってのvarのメリットは
右辺の型が分かりきっている時に左辺の方でもくどくどそれを繰り返される冗長さが回避されることだ。
推論はするよりしない方が脳への負担が低いはずなので、
君の説を採るとvarは全面禁止すべきという結論になってしまうよw
少なくともコードの読み手(書き手ではなく)にとってのvarのメリットは
右辺の型が分かりきっている時に左辺の方でもくどくどそれを繰り返される冗長さが回避されることだ。
432デフォルトの名無しさん (ラクッペペ MM26-geyu)
2022/01/05(水) 20:04:49.66ID:lXYh5E9eM433デフォルトの名無しさん (ラクッペペ MM26-X9o+)
2022/01/05(水) 20:09:49.34ID:34fypwCFM 書くやつは楽
コピペ盗作するやつは脳味噌が必要
var大勝利じゃん
コピペ盗作するやつは脳味噌が必要
var大勝利じゃん
434デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
2022/01/05(水) 20:11:27.06ID:jje+EFiu0 >>432
そもそもこれがゴミなのか有効なのか?
って議論がなされないまま突然導入されてほら使えだからな
VSの右クリックメニューにもvarを元に戻す機能が付いたってことはあんまり評判よくないだろコレ
そもそもこれがゴミなのか有効なのか?
って議論がなされないまま突然導入されてほら使えだからな
VSの右クリックメニューにもvarを元に戻す機能が付いたってことはあんまり評判よくないだろコレ
435デフォルトの名無しさん (ワッチョイ ade6-X9o+)
2022/01/05(水) 20:16:51.17ID:eampx4mf0 議論に参加できるぐらい出世しろ
436デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
2022/01/05(水) 20:20:48.72ID:jje+EFiu0 >>435
お前の会社は社長が1番技術力高いのか?
お前の会社は社長が1番技術力高いのか?
437デフォルトの名無しさん (ワッチョイ 6e33-tkKJ)
2022/01/05(水) 20:41:21.39ID:P9kF/5N50 varで推論しないほうが脳への負担が低いというのはどういうことですか?
438デフォルトの名無しさん (ワッチョイ ed18-TVXy)
2022/01/05(水) 20:42:40.80ID:C1Xb8B3u0 >>437
型が分からなくてもイライラしない人はそもそも負担がありません。
型が分からなくてもイライラしない人はそもそも負担がありません。
439デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
2022/01/05(水) 21:00:44.67ID:jje+EFiu0 アホが作った無意味なマトリョーシカクラス追わなくて済むからな
440デフォルトの名無しさん (ワッチョイ 8201-TJkF)
2022/01/05(水) 21:16:57.60ID:w42D9Ab/0 15年近く前から導入されてるものに対して
いまだに文句を言い続ける「熱量」には感心する
いまだに文句を言い続ける「熱量」には感心する
441デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
2022/01/05(水) 21:20:57.24ID:jje+EFiu0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【移民】日本史上初めての中国人の大量移住が始まる ★3 [ぐれ★]
- TBSが15年前のセクハラ事案を公表で“証拠画像”がネットで拡散 男性司会者が女性アナの臀部に手を伸ばし… [Ailuropoda melanoleuca★]
- 元フジアナ・渡邊渚、初写真集『水平線』発売が決定 水着&下着カットにも挑戦「自分をまた愛せるようになりたい」★2 [冬月記者★]
- 【ラジオ】永野芽郁は何を話すのか…否定した「二股不倫」報道後初「オールナイトニッポンX」きょう深夜 [Ailuropoda melanoleuca★]
- ダウンタウンのネット配信サービス、早くも収益に注目 月額1000円ならフォロワーの1%加入で「毎月1億円」…同期芸人は「うわぁ」 [jinjin★]
- ハローワークにAI、3年分のデータ基に求職者に最適のお仕事…厚生労働省が10か所で実証実験 [煮卵★]
- ヨーロッパ各国「椅子に座ってお喋りしながら働いて時給3000円です」 ジャップ「色々制限されながら働いて時給1300円です」 [271912485]
- JA「備蓄米を9割以上落札した。JAと取引実績がない大手業者以外には卸さない」→米の値上げが止まらず [931948549]
- ▶宝鐘マリンと白銀ノエルと雪花ラミィのおっぱいに包まれたい
- 宝くじ「税金かかりません、一発逆転できます」→コイツを買わない理由 [863490854]
- 自民党、参院選に中田フィッシュ(39歳、中田敦彦の弟)を擁立へ [377482965]
- 【世論調査】日本人の77%が「お米は高級品になった」と回答 [709039863]