C#, C♯, C#相談室 Part98

2024/06/29(土) 19:18:41.95ID:NohAfdfx0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2022 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2024/12/22(日) 02:26:26.71ID:/fc7feyD0
俺はスペース2個のが視線移動減って楽だと感じてるからかなり昔から2個派だよ
>>268みたいな日本人特有の右倣えのお仕着せルールに甘んず昔から超効率化してるやつらは世の中に沢山いるんだよ
勉強になったな
2024/12/22(日) 03:54:49.07ID:f4R4W69d0
TABに統一してるけど
表示上は半角スペース2から4個で用途で変えてる
2024/12/22(日) 05:02:43.67ID:SvMpALOcd
{}は
if(){
}
の方が好き
普通は
if()
{
}
これ?
2024/12/22(日) 05:44:22.67ID:96LlHbpn0
逆、最初の頃は上が大多数
ブログやら初心者講座やらで下の書き方が主流担ってきてる感じ
2024/12/22(日) 06:21:31.74ID:I7bhR46i0
スペース2個インデントって言うと、XMLやHTMLを思い浮かべるな
277デフォルトの名無しさん (ワッチョイ 957c-Th9R)
垢版 |
2024/12/22(日) 07:48:19.66ID:dFQQq0VB0
>>275
違うぞ
上のはJavaやJavaScript界隈でのデファクト

下はMicrosoft系のC#とかのデファクト

公式が出してるコーディング規約がそうなってるだけ
278デフォルトの名無しさん (ワッチョイ 957c-Th9R)
垢版 |
2024/12/22(日) 07:50:46.11ID:dFQQq0VB0
>>276
例えばC#というかasp.net系だとrazor構文でhtmlと一緒にC#のコード埋め込む
そうするとインデントは2の方が見やすい
279デフォルトの名無しさん (ワッチョイ 957c-Th9R)
垢版 |
2024/12/22(日) 07:53:26.28ID:dFQQq0VB0
>>271
C#はチェーンメソッドのドットを縦に綺麗に並べる文化が有るんでタブだと都合が悪い
2でも4でも良いけどスペースがデファクト
2024/12/22(日) 08:13:40.94ID:96LlHbpn0
>>277
いやだから
C#が出る前というか出始めの頃で
Cプラプラ使い達が多かった時さ
2024/12/22(日) 08:20:56.74ID:96LlHbpn0
当時、というか関数書くときって
hoge(){
…}

て書くのが一般的やったん

んでDelphiが出てきたらこの{}をBegin…Endで囲むから
hoge()
Begin

End

ここらへんはVBやVBAとかにも反映されて
その後C#で出した際にって感じかな
282デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
垢版 |
2024/12/22(日) 09:15:42.08ID:tw4BvM7X0
>>279
タブをインデントで使ってスペースをアライメントで使えば理論上ズレないよ
Goのフォーマッタはこれに従ってるからタブ幅は任意に設定できる

prettierみたいな途中で強制的に折り返すフォーマッタとは相性が悪いけど
283デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
垢版 |
2024/12/22(日) 09:22:40.24ID:tw4BvM7X0
Indent with tabs, align with spaces

https://dmitryfrank.com/articles/indent_with_tabs_align_with_spaces

これね
これが理想だけどエンジニアのレベルが高くないとこのルールを守るのは難しいからスペースにしてるのが大半
ただしGoは強制フォーマッタでこれを解決してる

個人プロジェクトなら最初から好きなタブ幅にすればいいからタブにするメリットもあまりないし
気分でタブ幅変えれるのは結構メリットあるけどね
2024/12/22(日) 09:27:48.67ID:I7bhR46i0
俺はずっと>>274の前者でインデントはタブだなぁ
なおタブの幅はスペース4個分
2024/12/22(日) 11:59:15.10ID:US35TJKc0
「自転車置き場の屋根の色」現象発生中
2024/12/22(日) 13:03:56.05ID:ci/BAnbad
この手の話は職場のルールで決まるから個人がどうこうは関係ないよな
ただ自分のツールなんかは好きにしろだが
カッコ、演算子、型と変数の宣言の間の空白などもめる話題はいくらでもある
2024/12/22(日) 16:36:51.22ID:J7cuP3Nu0
>>285
「原子力発電所の建設」について議論したいなら付き合うよ、それで議題は?
288デフォルトの名無しさん (ワッチョイ 957c-Th9R)
垢版 |
2024/12/22(日) 17:09:33.96ID:dFQQq0VB0
まあreshaperでテーム共有設定使うだけだしな
2024/12/22(日) 19:48:07.14ID:US35TJKc0
>>287
では失礼して
Unity製ゲームのMOD開発なんかでリフレクション使いまくるのもなんかスマートじゃないから、
aelij氏のIgnoresAccessChecksToGeneratorを魔改造させてもらってフィールド含めて全パブリック&readonly解除でゲームのコードに全アクセス出来るようになってめっちゃ捗るようになったのだけど、
欲が出て標準ライブラリにも手を出したくなってやってみたらmscorlibなんかはReferenceAssemblyだからプライベートフィールドはそもそもdll内に含まれてないから書き換えられないんだよね。
ランタイム時の実体dllを決め打って渡せばstring.m_firstCharとかList<T>._sizeとかも全てアクセスできるようにはなるんだけど決め打ち渡しもスマートじゃないからどうにか自動で解決をしたい。
ILSpyやmono.cecilにはランタイム時の実体dllを特定するコードあるんだけどbuildアクションから同じ事するのって可能だろうか?
2024/12/22(日) 19:55:36.15ID:zKZ5mRgv0
はい
2024/12/22(日) 20:10:00.61ID:US35TJKc0
へー
なんだかもうゲームよりMOD開発、MOD開発より開発環境開発の方が長くなっちゃってますわ
2024/12/22(日) 20:35:36.44ID:96LlHbpn0
だって、ここ
別にゲーム開発やないし

プログラムやで
2024/12/22(日) 20:50:51.80ID:F7NwxYJ7M
いまだにmonoで簡単にいじられまくりゲームあるのか
2024/12/23(月) 00:10:04.98ID:XKMn6iMr0
>>289
日本語がややこしいけど
①標準ライブラリのPrivate含む全フィールドにリフレクションを使わずにアクセスして書き換えたりしたい
んで、
②実体DLLを決め打ちで渡せばアクセスできるってところまでできてる
あとは
③実体DLL取得を自動化したい
④なおかつビルドプロセスに組み込みたい
ってことか
MOD開発とか知らんけど面白そうじゃん
2024/12/23(月) 00:36:21.82ID:XKMn6iMr0
いまいち細かい要件がよくわからんけどAppDomain.CurrentDomain.GetAssemblies()で現在ロードされているすべてのアセンブリが取得できるらしいが、これ試した?
駄目だったならどういうところがダメだったのか教えてくれ
2024/12/23(月) 17:33:16.62ID:HWay8A+S0
>>295
要するにIgnoresAccessChecksToGeneratorの話でMSBuild内のコードとして動くものだからそれやってもMSBuildがロードしてるものが返されるだけとなる
ILSpyなんかもtypeof(object)などから解決してるので上記の理屈でそのまま移植はできない
2024/12/23(月) 17:42:25.10ID:HWay8A+S0
>>293
マルチメインじゃなくmodフレンドリーなゲームならil2cpp化せずそのまま出してるゲームも普通に多いよ
改変やチート防止のためなら難読化含めてやったところでそこまで難易度上がらないからそれ目的ならRustみたいにカーネルドライバ付けるしかない
2024/12/24(火) 18:58:01.04ID:9YLK2p020
個人開発の局所的な用途のマイナーツールの話が原発の建設並の重大事なのか
ちょっと難しすぎてわかんねえな
2024/12/24(火) 19:41:54.52ID:RgkKZ0Pj0
原発ってただの湯沸かし器じゃん
燃料がちょっとヤバイってだけで高尚なC#のプログラムと比較すんなよ
2024/12/25(水) 08:00:53.24ID:vP0zyznod
C#だってただの道具
しかもC#だけじゃお湯も沸かせない
高尚とかちゃんちゃらおかしい
2024/12/25(水) 08:26:32.01ID:ML8x6ihA0
ツールは手段であって目的はアクセシビリティバイパスだから言語レベルのスケールの話な
実際これ求めてる人は少なくないからUnsafeAccessorが実装された訳で
てかリフレクションの方が文字列で指定してる分よっぽど危険だと思うんだけどな
2024/12/25(水) 21:07:50.83ID:G9TljzDw0
エロがビデオを進化させてきようにチートがソフトウェアを進化させるんだよ
湯沸かししかできない原発野郎は難しいなら黙ってろ
2024/12/25(水) 21:35:48.64ID:7oEpQVAc0
煽りたいだけのやつが居着いちゃってるのか、このスレ
2024/12/25(水) 21:39:40.34ID:WXVFxdaX0
いつものことだよあぼーんしときな
2024/12/25(水) 21:44:21.01ID:WWJbrOfz0
だぁ~から
ドーンおじはコテ付けろや
2025/01/01(水) 16:01:04.94ID:nGCOTvnw0
Enum.IsDefined(enumType, intValue)ってボックス化する?

AIに聞いたら最初は「ボックス化しない」とか言われたんだけど、第2引数がobject型として受け取ることを指摘したら「ボックス化するかもしれません」みたいな曖昧な返答されてよく分からなくなってきた
2025/01/01(水) 16:03:34.19ID:zfs+VkVC0
object型ならするよ
.NETのバージョンにもよるけどgeneric版の方が型がコンパイル時解決されるからパフォーマンスは良い
2025/01/01(水) 16:07:11.80ID:nGCOTvnw0
だよね ありがとう
2025/01/01(水) 16:23:43.79ID:nGCOTvnw0
確かにジェネリクスでstruct制約付けたらボックス化回避できそう
ありがとう

public TEnum ConvertToEnum<TStruct, TEnum>(TStruct value)
where TStruct : struct
where TEnum : Enum
{
if (!Enum.IsDefined(typeof(TEnum), value))
throw new ArgumentException();

return Unsafe.As<TStruct, TEnum>(ref value);
}
310デフォルトの名無しさん (ワッチョイ 63eb-UqtM)
垢版 |
2025/01/01(水) 22:57:38.89ID:tBHA6FMH0
JetbrainsやILSpyでIL見てboxあるかどうかみればいいんじゃね
2025/01/31(金) 11:32:40.83ID:jXb+sjQI0
ハック的なことなんだけどインスタンスのオブジェクトヘッダに埋め込まれるクラスハンドルへのポインタ?をインスタンス無しで得る方法って無いかな
typeof(MyClass)ってすると正にそのポインタが「mov rcx, 7FFB716DE758 -> call clrのtype取得関数」って感じのアセンブラが生成される訳だけど、その7FFB716DE758を得たいんだよね
インスタンスがあればUnsafeライブラリ用いて簡単に得られるのだけど
2025/01/31(金) 11:34:05.08ID:jXb+sjQI0
文章修正してたら日本語おかしくなったけどもし知ってる方いたらヒントでも何でも教えていただきたい
2025/01/31(金) 12:00:57.31ID:ejyfLYzx0
GetTypeで得られるものとは違うわけ?
2025/01/31(金) 12:51:25.22ID:jXb+sjQI0
>>313
GetTypeやtypeofで得られるものはあくまでもType型のマネージドインスタンスだから全く違う
だけど逆アセをするとtypeof()時には即値でハンドルへのポインタ?がアセンブラコードとして埋め込まれてるので内部的にはめちゃくちゃ簡単に得る方法があるはずなんだよね
2025/01/31(金) 14:52:24.28ID:jXb+sjQI0
一応自己解決だけどGetTypeやtypeofで得られたTypeインスタンスから「type.TypeHandle.Value」で希望のものは得られた
本来即値で得られるはずなのに冗長でもやもやはするが
2025/01/31(金) 15:09:15.71ID:gpRv5mHv0
ChatGPTに聞いたら同じ答えが返ってきたけどRuntimeTypeHandle.Valueは環境によってメソッドテーブルへのポインタじゃなくEETypeへのポインタや実装依存のメタデータへのポインタになる場合もあるから自分で確認しろよとのこと
2025/02/01(土) 06:49:44.36ID:LNgv56j/0
そらJITなんだから・・・
2025/02/01(土) 10:13:37.11ID:m26c//aC0
いやJITは関係ないぞ
2025/02/01(土) 11:06:41.29ID:dQW8A9nv0
JITだろうが何だろうがconst intなんかは即値で埋め込まれるしね
だからクラス名.TypeHandleValueみたいなconst持っててくれたら嬉しいんだけど需要ほぼゼロすぎるか
2025/02/01(土) 12:12:47.05ID:m26c//aC0
ん?即値で得られない理由の話だったか
そっちならJIT関係あるわな
2025/02/01(土) 12:17:46.65ID:dQW8A9nv0
いや関係ないよ
なぜなら逆アセすれば分かるけど思いっきりレジスタ長以下のconst同様の挙動を見せてるからね
typeof時にね
2025/02/01(土) 12:48:59.04ID:MtSj47O+0
逆アセw
2025/02/01(土) 12:53:04.51ID:LNgv56j/0
アドレスとかプロセス起動のたびに変わることは無いんだっけ?
2025/02/01(土) 12:59:03.20ID:dQW8A9nv0
>>323
.NETの場合は当然変わるしネイティブでも設定次第では変わり得る
でもそもそもC#やJavaは実行時にその都度機械語を組み立てて行く訳だから、であればその都度埋め込めばいいだけの話
2025/02/01(土) 13:11:42.17ID:LNgv56j/0
なら結局、ユーザークラスじゃ都度変わりうるってことじゃ?
2025/02/01(土) 15:14:32.83ID:XDtywhx90
>>321
それはJITやAOT後のものを見てるからでしょ
JIT/AOT時に異なる相対アドレスに配置できる余地を残すためにC#/ILの段階では固定しない
2025/02/02(日) 01:00:15.78ID:U03i5Xdj0
ILの段階で定数になるなら決め撃ちで問題ないだろ
2025/02/02(日) 06:57:31.12ID:VLFyjNJe0
ユーザークラスがILの段階で決め打ちになるわけないだろ
2025/02/02(日) 10:55:04.54ID:NGhOMzti0
ユーザークラスだろうが何だろうが別に関係ないし
IL段階で定数になる必要もなくて事実として実行時に機械語になるタイミングで定数化されるんだよ
プログラマがその定数にアクセスする手段がないだけで
2025/02/02(日) 11:18:20.90ID:RNSPFW0b0
実行時にならんと決まらんものは定数じゃねぇ
2025/02/02(日) 12:43:09.18ID:NGhOMzti0
定数ってか再三言ってるけど即値だな
2025/02/03(月) 22:15:38.62ID:EtXs2rHFM
インスタンスの型の厳密なチェック typeof (X) == x.GetType() やジェネリック型のチェック typeof (T) == typeof (X) はJITで最適化されるから、
質問者のケースがもしこれらに該当するなら変なハックは必要ない
2025/04/14(月) 17:39:25.74ID:XKwEHxpo0
Task<T>を返す非同期メソッドをUIスレッドで呼び出して結果を取得したいのですがどうすればいいのでしょうか?
ConfigureAwait(false)の後やTask.Runでスレッドプール上?で実行されてる
コード内からメソッドをUIスレッドで呼んで結果を取得したいのです
2025/04/16(水) 05:53:28.46ID:HaWtxdw70
イマイチ質問が把握できないがこういうことか?
UIスレッドでTaskScheduler.FromCurrentSynchronizationContext();してTaskSchedulerを確保しておく
UIスレッドで実行したいメソッドは上記TaskSchedulerを使ってStartするTaskとして実行する

public Form1()
{
  this.Button1.Click += ExecuteAsync;
}
async void ExecuteAsync(object? sender, EventArgs e)
{
  var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
  await Task.Run(async () => {
    using var logger = new Logger("Task");
    var task = Task.Factory.StartNew<Task>(() => SetTextAsync(), CancellationToken.None, CreationOptions.None, scheduler);
    await task;
    await task.Result;
  });
}
async Task SetTextAsync() {
  await Task.Delay(1000);
  this.Text = DateTime.Now.ToString("HH:mm:ss");
}
2025/04/16(水) 05:58:12.67ID:HaWtxdw70
あ、TaskCreationOptionsのTaskが抜けてる…
async Task SetTextAsync()の代わりにasync Task<string> GetTextAsync()だったら
StartNew<Task<string>>にしてvar text = await task.Resultすればいい
2025/04/16(水) 07:31:16.54ID:QZV5gxIh0
ああ、ありがとうごいます
それっぽいです
要はスレッドプールなどで実行されてるメソッドから
途中でダイアログなどを出してユーザのアクションの結果で更に処理を
進めるかキャンセルするかを決定したかったにです

同期コンテキストは調べたのですがこのPostなんたらじゃできないなと..
TaskSchedulerの方から攻めるのですね

ありがとうございます
2025/04/16(水) 07:41:21.34ID:QZV5gxIh0
ボタンなど押して非同期メソッドを呼び出す
この時、非同期メソッドには介入が必要な時に呼び出される非同期コールバックを渡せるようにする

呼び出し側で、非同期コールバックとして
ダイアログなどをだしたりする
ダイアログの表示などはUIスレッド実行したかった

こんな感じでした
2025/04/16(水) 15:31:47.59ID:yzNZC+ym0
BOOL TestFunc(DWORD dwType, LPBYTE pBuffer, LPDWORD pcbBufSize);
dwType:欲しいデータのタイプコード
pBuffer:要求したデータを入れるバッファへのポインタ
pcbBufSize:pBufferが指すバッファのサイズ

例えば↑のような関数をエクスポートしてるアンマネージDLLがあって
DllImportする時のプロトタイプ宣言ってどう書いたらいいんでしょ?
2025/04/16(水) 15:33:52.84ID:yzNZC+ym0
LPDWORDはref uintでいいのかなと思うけど
LPBYTEとか、それこそLPVOIDだのハンドル系受け取る引数なんかはどう宣言したものかよく解らなくて
2025/04/16(水) 19:05:55.86ID:HaWtxdw70
典型的にはこう
bool TestFunc(uint dwType, byte[] pBuffer, out uint pcbBufSize);
ref/outで宣言すると使いやすいけどNULLを渡せなくなるってのが問題になったりすることもある
ケースバイケースなので一概には言えない
ポインタが絡むなら誰がメモリ確保して誰がどうやって解放するのかを把握してないといけない場合もある
2025/04/16(水) 19:58:01.06ID:VD2CYluqM
第三引数は普通はoutじゃないきがするけど
2025/04/16(水) 20:27:15.14ID:qW3EbLcWM
outだと呼び出し元からバッファサイズを渡せないな
2025/04/16(水) 20:47:35.76ID:JiAmFx7+0
refじゃあかんの?
2025/04/16(水) 20:48:46.57ID:yzNZC+ym0
>>340
おぉ、ありがとう
ちょっとそれ元に弄ってみるます
345デフォルトの名無しさん (ワッチョイ ed96-VXNn)
垢版 |
2025/04/20(日) 10:42:31.48ID:T4EZ0xEH0
refとかout使うと機械語的にはゴミラッパーが生成される
ついでにboolも実はネイティブ型ではないので同様にゴミが生成される
多少可読性や安全性を犠牲にして良いなら
int TestFunc(uint dwType, byte* pBuffer, uint* pcbBufSize)とすればC/C++と遜色ない機械語になる
戻り値はintなので != 0としてbool判定をする手間がかかるけどね

ついでに.NETCore系統で且つ内部でIOなどを行わずに計算量が少なく割とすぐ戻る事が確定している場合は[DllImport("native.dll"), SuppressGCTransition]とすると尚良し
346デフォルトの名無しさん (ワッチョイ ed96-VXNn)
垢版 |
2025/04/20(日) 10:47:34.35ID:T4EZ0xEH0
もしネイティブ側の戻り値がBOOLではなくboolならC#側はbyteにすればいい
boolって実は結構罠だからな
2025/04/21(月) 11:37:03.90ID:ed9AfVbw0
CharGPTの回答

WinAPI型名  意味              C# 対応型                 備考・使い方例
BYTE     8ビット符号なし整数       byte                    0〜255
WORD     16ビット符号なし整数      ushort                   0〜65535
DWORD     32ビット符号なし整数      uint                    よく使われる
LONG     32ビット符号付き整数      int                    一部APIでは戻り値で使用
ULONG     32ビット符号なし整数      uint                    DWORDと同義扱いされることあり
BOOL     論理値(実際はint型)      bool または int              C#では [MarshalAs(UnmanagedType.Bool)] を使うと便利
LPSTR     ANSI文字列へのポインタ     string (MarshalAs(UnmanagedType.LPStr))
LPCWSTR    Unicode文字列定数へのポインタ  string (MarshalAs(UnmanagedType.LPWStr)) 通常はこれを使う
LPBYTE    BYTEへのポインタ        IntPtr / byte[] / byte*          C#で配列やポインタとして使う
LPDWORD    DWORDへのポインタ        ref uint / out uint / IntPtr        APIによって使い分け
HANDLE    汎用ハンドル          IntPtr                   ハンドルは全部 IntPtr
PVOID/LPVOID 任意のポインタ         IntPtr                   Voidポインタの表現
CHAR     1バイト文字           byte(ANSI)/ char(Unicode)       ANSI文字列なら byte
TCHAR     Unicode/ANSI切り替え可能文字型 char または string             Unicode前提なら char/string
2025/04/21(月) 14:43:06.51ID:AUqiwuPT0
何のためのVOIDポインタかで変わるしIntPtrで良いもんでもないわ
まぁなんだ、CharGPTなんて言うアホは黙っとけw
349デフォルトの名無しさん (ワッチョイ a6ce-i6bQ)
垢版 |
2025/04/22(火) 19:34:21.37ID:rMo0RJWh0
Copilot「僕の出番ですね!」
2025/04/23(水) 08:49:37.84ID:eLYGqJZZ0
去ね
351デフォルトの名無しさん (スフッ Sd0a-NF34)
垢版 |
2025/04/23(水) 12:17:26.63ID:snQ3Sxp8d
wchar : 「神は我を見放したのか」
2025/04/23(水) 20:01:13.83ID:WPvg2tW3M
>>347
ChatGPTはc#弱いな
2025/04/24(木) 01:47:59.03ID:MPcZRdS90
>>345
最近のC#はMIL(IL?)でなくマシン語を直接()生成するようになったのですか
354デフォルトの名無しさん (ワッチョイ f978-fvra)
垢版 |
2025/04/24(木) 21:13:01.92ID:985jarF60
>>353
最近は native AOT といってそういうことができる
リフレクションが使えないなど制限もあるけど

元のレス先の345は、たぶん native AOT とか関係なく、中間言語が生成するコードも指して機械語と言ってると思う
2025/04/24(木) 21:27:22.97ID:WNuC4TAo0
>>354
なるほど、ありがとうございました!!
356デフォルトの名無しさん (ワッチョイ ed96-VXNn)
垢版 |
2025/04/25(金) 11:23:25.63ID:reKQm/Xa0
>>354
ILの話はしてない
nativeAOT及びJITが最終的に生成するアセンブラを指して言ってる
パフォーマンス目的でC/C++と連携しようとすると返ってパフォーマンス落ちる事も多いからな
機械生成のゴミラッパーが挟まると呼び出しコストがdll内部のルーチンより1万倍掛かるとかザラにあるし
2025/04/25(金) 12:53:18.17ID:RL99gkZ90
まぁ、アンマネージ呼び出しをパフォーマンス目的でやるもんじゃないしな
2025/04/27(日) 16:38:33.85ID:jnYDAPp70
LibraryImport属性を使うとDllImport属性より最適化されたコードが出力されたりするの?
359デフォルトの名無しさん (ワッチョイ 7761-tU9d)
垢版 |
2025/05/03(土) 12:39:00.86ID:GwMmJ/YG0
オリジナルのDataGridViewの列を作りたいんですが、デザインビューのDataGridViewからオリジナルの列を追加する方法ってありますか?
2025/05/03(土) 14:19:24.20ID:ZbkD0HOB0
>>359
オーナードローしたいという事?
2025/05/03(土) 14:43:58.59ID:rfaECn6+M
列A 列Bがあって 列C作ってA+Bを表示したいと言うことでは?
362デフォルトの名無しさん (ワッチョイ 7761-tU9d)
垢版 |
2025/05/03(土) 15:51:35.38ID:GwMmJ/YG0
DataGridViewColumnを派生させたオリジナルの列をフォームデザインビューから列に追加したいんです
363デフォルトの名無しさん (ワッチョイ 9f79-q4+Y)
垢版 |
2025/05/03(土) 16:55:23.30ID:h9Jrb8E+0
lこの辺りを駆使してDataGridViewColumnクラスを作るとか
https://dobon.net/vb/dotnet/graphics/drawcontrols.html
364デフォルトの名無しさん (ワッチョイ 9f68-VDOd)
垢版 |
2025/05/03(土) 18:56:11.65ID:Q4RX0Sa/0
スマホとPCの作業を効率化したい--「Copilot Vision」の便利な8つの活用例
2025-05-03 07:00
https://japan.zdnet.com/article/35232549/


1 プログらまーまこれを改造してるので上記以外の状態でも使用できるようにしている

2 すでにプログラムがあるので1〜コードを作成する必要が無い

ボイス・トォ・スカルの本態が一般パソコンにまで来たのでつい買い捨てができるようになった
マネーロンダリング 談合 インサイダー などがはかどるといわれる
365デフォルトの名無しさん (ワッチョイ cf7e-Enlg)
垢版 |
2025/05/05(月) 08:51:14.85ID:wERx/Nt90
“イリヤ神”がまたやった 動画生成AI「FramePack」が革命的なワケ
2025年05月05日 07時00分更新
https://ascii.jp/elem/000/004/267/4267160/
 4月17日に登場した動画生成AIプログラム「FramePack(フレームパック)」が世界的に衝撃を与えています。PCローカル環境で動画AIを動かすには、少なくともビデオメモリー(VRAM)が12GBあるビデオカードを搭載していないと難しいというのが常識でした。ところが、VRAM 6GBでも安定的に動作させられるため、一気に動画AIの裾野を広げそうです。開発したのは、画像生成AI分野で「ControlNet」や、使いやすいツール「Fooocus」などを開発してきたことで知られる、スタンフォード大学に在籍中のIllyasviel(イリヤスフィール、以下イリヤ)さん。既存の方法論にまったく違ったアプローチでブレイクスルーを引き起こす、“イリヤ神”のアプローチに再び注目が集まっています。
中略
 AI動画を作ってみたいけれども、スペックが足りないために諦めていたという人が次々に自前の環境で試すようになってきました。既にワンパッケージでインストールできる環境も整えられているため、スタートも簡単です。様々なファイルをダウンロードしてくるため、初期設定は2時間くらいは見ておく必要があるものの、圧倒的にハードルが下がりました。
366デフォルトの名無しさん (ワッチョイ cff0-Enlg)
垢版 |
2025/05/07(水) 15:21:51.01ID:Nuqzm3Wk0
下記は全て2025年5月7日の記事

OpenAI、ChatGPTの6つのモデルの違いと適切なプロンプトを解説
https://news.mynavi.jp/techplus/article/20250507-3275757/

Microsoftの新規のソースコードの約3割をAIが生成、Nadella氏が明かす
https://news.mynavi.jp/techplus/article/20250507-3271749/

スコットランドの住民を悩ます謎の怪音「ヘブリディアン・ハム」の正体はいまだ不明
https://karapaia.com/archives/507130.html
2025/05/07(水) 16:08:58.47ID:9Z9/upda0
余所でやれカス
2025/05/08(木) 10:26:27.15ID:8ptxnmrna
余所でやれとあなたが言ったから
色んなスレにマルチされたので
5月7日はマルチ記念日
369デフォルトの名無しさん (ワッチョイ 7540-gmcI)
垢版 |
2025/06/16(月) 03:18:14.57ID:BRbK5XdC0
IDisposableを実装したクラスのインスタンスがもし破棄されていたら再度生成するために、

if(instance.IsDisposed || instance == null){
instance = new MyClass();
}

という書き方してるんですが、(obj != null)の部分って意味ないんでしょうか?
2025/06/16(月) 03:32:02.55ID:BRbK5XdC0
すみません。ChatGPTが下記の回答をくれました。

instance が null の場合、insntace.IsDiposed の評価時に NullReferenceException が発生してしまうので、

if(instance == null || instance.IsDisposed){
instance = new MyClass();
}

にしなければならない。

必要かどうか。
 設計上 instance が null になる可能性がある場合、null チェックは必要。
 絶対に null にならないように管理されている場合、null チェックは不要。

 「instance がまだ生成されていない、または使えない状態になったときに再生成する。」
 という目的が明確にある場合、妥当で意味のある書き方です。
2025/06/16(月) 10:34:42.11ID:Nk3UlLjY0
そもそも変数を使いまわそうとしているのが間違い
using等でスコープと連動させて管理すべき
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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