X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 3f2c-RUy2)
垢版 |
2021/08/25(水) 19:44:16.81ID:tgvUkE6r0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part151
https://mevius.5ch.net/test/read.cgi/tech/1621129559/
■関連スレ
C#, C♯, C#相談室 Part94
https://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/
・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
0202デフォルトの名無しさん (ブーイモ MMcf-fBlf)
垢版 |
2021/09/23(木) 11:56:33.67ID:acEFt2vDM
>>188
Javaやってるから(1)だ。

Javaだと(1)、C#だと(2)、のようにわざわざ使い分けるのが面倒で嫌い。
0204デフォルトの名無しさん (エムゾネ FFbf-hED7)
垢版 |
2021/09/23(木) 12:34:19.60ID:7tGJmFKPF
auto がいいな
0205デフォルトの名無しさん (ワッチョイ bf10-td/8)
垢版 |
2021/09/23(木) 12:52:13.66ID:mH17AHdd0
varは使わなくなったな、書き捨てのコードなら速く作業終わってよかったんだけど
後で保守することになって、何の型だかぱっと見て分からない、結局書き直す羽目になる
二度手間
0210デフォルトの名無しさん (ワッチョイ 9702-I/Yj)
垢版 |
2021/09/23(木) 14:22:03.84ID:lUK0l/hC0
(Vim使いはC#じゃなくてC++のautoの話だったかも)
それにvar使わないとジェネリックとかで複雑な型が出た時書くの面倒だからね
それに型が変えられたら書き直さないといけないし
0215デフォルトの名無しさん (ワッチョイ 9702-I/Yj)
垢版 |
2021/09/23(木) 14:46:20.44ID:lUK0l/hC0
>>201
(3)の書き方は俺も今知ったな
まぁ元々は
private List<WeatherObservation> _observations = new List<WeatherObservation>();
って書いてたのが
private List<WeatherObservation> _observations = new();
と書けるようになるってことみたいだね

ローカル変数でそう各メリットは少ないかもだけど、今は(2)に慣れてるだけだろうから、そのうち(3)になってくのかも
0218デフォルトの名無しさん (テテンテンテン MM8f-vJdV)
垢版 |
2021/09/23(木) 16:30:44.15ID:tEWlRRfOM
>>215
長たらしい型名を2回書きたくないと言うのはわかるんだけどそれはvarで充分だと思うんだよね
new()じゃなくてメソッドがインスタンス返すような時はvar使わざるを得ないしマジでメリットが4文字減るだけにしか見えない…
0220デフォルトの名無しさん (ワッチョイ f72f-P0JL)
垢版 |
2021/09/23(木) 16:51:19.32ID:VgSYdOn80
varが使えないところで使えってことなんだろうけど
正直そこまでしてタイプ量を減らす意義が見出せん

varの本来の使い方はLINQなんかでの匿名型なんじゃないのかと
0222デフォルトの名無しさん (ワッチョイ d75f-P0JL)
垢版 |
2021/09/23(木) 17:00:18.43ID:knB3B2Kp0
十分とか言ってるけど215のってvar使えるの?
0224デフォルトの名無しさん (ワッチョイ d75f-P0JL)
垢版 |
2021/09/23(木) 17:01:12.39ID:knB3B2Kp0
じゃあ3のほうが統一できるメリットあるじゃん
0227デフォルトの名無しさん (ワッチョイ ff10-qDHA)
垢版 |
2021/09/23(木) 19:02:03.53ID:sP+rEUVs0
私は(3)にしてます
慣れもあってか(2)のほうが書きやすいですが
githubとかでコード見る場合に関数の戻りをvar書かれると型がわからない
VS以外で読み書しないなら(2)でいいと思います。
0230デフォルトの名無しさん (ブーイモ MMde-DBkT)
垢版 |
2021/09/24(金) 04:58:42.78ID:y2XYMU1vM
StyleCopで設定するんじゃないの?
0233デフォルトの名無しさん (ブーイモ MMde-DBkT)
垢版 |
2021/09/24(金) 09:33:22.65ID:irV+RdEOM
マイルールで書いてもボタン一発でコーディングルールに沿ったのに変換してくれればおk
0238デフォルトの名無しさん (ワッチョイ 175f-6iP1)
垢版 |
2021/09/24(金) 10:24:15.05ID:/Uk5P+XR0
new()が使えるならnew()
それ以外はvarが最強
0241デフォルトの名無しさん (アウアウウー Sa43-t/PR)
垢版 |
2021/09/24(金) 13:33:19.92ID:5RECe5Rpa
>>239
そんなことはないと思うけど程度問題だね。
何であれ手段を自己目的化してしまうのは確かに愚かだ。

そんなことよりスレ違いだのなんだの他人のやることに
いちいちケチをつけないと気が済まないいつもの数人が静かなのが笑えるねw

ああいう人たちはその自分の欺瞞性に嫌気がささないものなのかw
0242デフォルトの名無しさん (エムゾネ FF32-kEnG)
垢版 |
2021/09/24(金) 14:32:17.00ID:6iUyOY+3F
スレチ警察ωωω
0247デフォルトの名無しさん (エアペラ SD9b-OE0s)
垢版 |
2021/09/24(金) 20:03:25.45ID:KNT3aGoVD
ageておきますね
0249デフォルトの名無しさん (ワッチョイ 032f-f7S3)
垢版 |
2021/09/24(金) 21:38:44.12ID:RcC3+NL00
hageておきますね
        ______ 
      /     〇⊂⊃\
    /             \
   /                 ヽ
    l:::::::::               | 
    |::::::::::   (●)    (●)  o| 
   |:::::::::::::::::   \___/    .0|
    ヽ:::::::::::::::::::.  \/      ノ
0261デフォルトの名無しさん (ワッチョイ 9f24-2Lmd)
垢版 |
2021/09/25(土) 17:06:12.97ID:fbhVUQBc0
>>252
もう配列なんて時代遅れ
xmmレジスタで済ませるのが最先端だからSystem.Runtime.Intrinsicsを学ばないとオレにはついてこれないぞ
0266デフォルトの名無しさん (ワッチョイ 5eda-ICJq)
垢版 |
2021/09/26(日) 21:02:40.12ID:gGZfowJe0
エンディアン変換めんどいよなぁ

たかだか2バイトのビックエンディアンをc#のshortに変換するだけでも
var dataLen = IPAddress.NetworkToHostOrder( BitConverter.ToInt16( buf, 32 ) );
で長すぎるんだよな。2バイトくらいだったら
var dataLen = buf[0] << 8 | buf[1];でもいいが、int幅なると記述量増えるし。

byte配列走査しているときはSpanを当てていることが多いから、Span<T>ももうちょっと使い勝手向上させて
int intLen = span.Slice(0,4).ToHostOrder();
みたいに書かせて欲しい
0270デフォルトの名無しさん (アウアウウー Sa43-t/PR)
垢版 |
2021/09/27(月) 00:04:24.04ID:XMGm2liDa
まあライブラリで実装するほど汎用的というか需要がある処理じゃないって判断なんでしょうね。
つーか大昔からある宗教論争だけど個人的にはビッグエンディアンなんて
どっかのタイミングで追放してしまえばよかったのにw
つくづくこんなの考えた奴馬鹿だろとしかw

ところで、BitConverterってバイトオーダーは環境依存なのかリトルエンディアン固定なのかどっちなんだろう
0274デフォルトの名無しさん (スッップ Sd32-KpKw)
垢版 |
2021/09/27(月) 03:03:03.22ID:a10dBt+Nd
c#って機能的にはc++のメソッドを全部呼ぶことって出来ますか?

win32apiを弄っていて、当然ドキュメントは99%がc++なんだけど
dllimportとかを使えば全部の機能はc#からも使うことは出来ると思って良いのでしょうか?
それとも、言語仕様の壁があるから使えない機能も普通にあるのでしょうか
0277デフォルトの名無しさん (ワッチョイ c602-5QVF)
垢版 |
2021/09/27(月) 10:15:30.40ID:I8r9zhJi0
>>274>>275
アドレスさえ取得出来ればメンバ関数含めて全て呼べる
DllImportやGetProcAddresからはポインタ取得出来ないからそれを呼べると言えるかは微妙だが
メンバ関数は第一引数にインスタンスへのポインタが隠されてるだけの実態はただの静的関数だからdelegate* unmanaged[Stdcall]<void*, void>とかにキャストしてvoid*にオブジェクトポインタ渡せば正常に機能する
逆に言えば公開したいメンバ関数があるなら、第一引数にvoid*を沿えた静的関数にしてdllexportすればいい
0279デフォルトの名無しさん (ブーイモ MM0e-tE3I)
垢版 |
2021/09/27(月) 17:16:06.27ID:xIAqABZoM
NaNは「数値ではない」ので、いかなる値と比較してもfalseになる
これはIEEEの規格で定められている
ゼロで割ったらいけないのと同じようなもんで、NaNの比較は原則やってはいけない
0282デフォルトの名無しさん (テテンテンテン MMde-UzFq)
垢版 |
2021/09/27(月) 19:28:23.66ID:3UqjaTSrM
>>276>>277みたいなやり方もあったのか・・・
でもごめん276のQiitaを軽く読んだ限りだとちょっと怖くて&面倒くさくて使いたくない
どうしてもC++のインスタンスをいじらなきゃいけなくなったとしたら
従来通り無難にC++/CLIでラッパーを書くと思う
もう10年くらいそんなコード実装してないから書ける自信ないけど

おおもとの>>274への回答としては、一応条件付きでyes、ってことで合ってるよね?
C++で書かれたインスタンスのメソッドを呼ぶときには基本的には別途C++/CLIプロジェクトでソースを書き足す必要がある
その手間さえ許容できればC#で全部呼べる・・・はず
0283デフォルトの名無しさん (ワッチョイ 9202-2Lmd)
垢版 |
2021/09/27(月) 23:39:00.12ID:hzZ0wOco0
C#9の関数ポインタを利用したりMarshal.GetDelegateForFunctionPointerを利用したらどんなネイティブ関数も呼べるが(どちらも呼び出し規約設定可能)、
問題はそのDLL内の公開されてないメンバ関数ポインタをどう渡すか?に関してはC++同士でも独自に決めないといけない訳でC#どうこうの話ではなくないか?
0291デフォルトの名無しさん (ワッチョイ 0302-7j45)
垢版 |
2021/09/30(木) 02:07:44.30ID:046jA/pO0
>>287
階層深いといろいろ扱いにくくない?

サンプルに対してどうこういうのも不毛だけど、人を継承して学生やら料理人やら作ったとして学生はセンチで軍人はメートルで保持して、
さらにその身長を参照して数パターンの大きさの制服からちょうどいいものを選びましょうみたいになったらどんどんジェネリクスの範囲が広がる気がするというか、
そういう広がったものに直面してなんだこれ……ってなった

自分が直面してる問題については抽象化というかクラス設計失敗してるのが根本的な原因ぽいのだが
それをジェネリクスで覆い隠してたんだけどちょっと拡張しようとしたらコードがうんこと化した
0293デフォルトの名無しさん (アウアウクー MM87-qHOK)
垢版 |
2021/09/30(木) 07:29:22.71ID:9XdXBqfhM
初歩的な質問ですいません
PostgreSQLとNpgSQLを使用しています
仮にアプリケーションAとBがあるとして、Aからデータベースのテーブルが更新されたらBはテーブルの値が変わったという事を認識する事は可能でしょうか?

どのように実装するか全然分からないので参考例を探したのですが見つけられず、どのようなキーワードで検索すれば良いでしょうか

私はデータベースの知識も乏しいのですが、これはC#側で実装するのか、それともPostgreSQLの関数?で実装するものなのでしょうか?
0297デフォルトの名無しさん (ワッチョイ d201-dHfp)
垢版 |
2021/09/30(木) 09:03:11.28ID:pU/yhshw0
>>293
簡易的なものならpostgresのNOTIFYとLISTENを使えばいいと思う

本格的なアプリケーションなら
Aがドメインイベントを生成してイベントストリームに流して
Bは該当のイベントストリームをサブスクライブして処理する
実装方法は色々あるのでイベントストリームやイベントソーシングで検索して
0298デフォルトの名無しさん (アウアウクー MM87-qHOK)
垢版 |
2021/09/30(木) 12:43:04.47ID:9XdXBqfhM
レスありがとうございます
一定時間毎にテーブルにアクセスしかないのかなと思いましたがNotify、Listenというものがあるのですので
まだ調べられていないのですが、レスの内容を見るにPostgreSQL側で設定などを行い、それをC#側に伝える?ということでしょうか
0300デフォルトの名無しさん (アウアウウー Sa43-k+EL)
垢版 |
2021/09/30(木) 16:57:34.68ID:d4OzmTGQa
ColorMatrixによる画像処理ですが、
ColorMatrix同士の演算を簡単にやる方法はないでしょうか?
行列なので単純に行列を展開して自分で計算して新しい行列Cを作ればいいのですが、それを簡単にやる方法は用意されてないのでしょうか?

c = ColorMatrixAA * ColorMatrixBB; //←これをしたい

例えば輝度とコントラストの調整をひとつの行列による一回の処理で行いたいのが目的です
https://dobon.net/vb/dotnet/graphics/brightness.html
https://dobon.net/vb/dotnet/graphics/contrast.html
■ このスレッドは過去ログ倉庫に格納されています

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