!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
探検
ふらっと C#,C♯,C#(初心者用) Part152
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 3f2c-RUy2)
2021/08/25(水) 19:44:16.81ID:tgvUkE6r0806デフォルトの名無しさん (ワッチョイ 1793-+6Er)
2021/11/28(日) 23:10:25.10ID:+ZppHvH90 知らないせいで車輪の再発明何度もすることあるしね
C#の参考書に良書と言えるのがなかなかない気はする
C#の参考書に良書と言えるのがなかなかない気はする
807デフォルトの名無しさん (ワッチョイ ff7b-dAP3)
2021/11/28(日) 23:11:57.25ID:5dBNAjGC0808デフォルトの名無しさん (ワッチョイ 9701-Z9No)
2021/11/28(日) 23:29:11.96ID:QHerQIRk0 文法もvsがインテリセンスで教えてくれるし、どこにどんなデータが詰まってるかもデバッグで覗けば推測できる
vsのおかげでテキストで調べる時間が地味に短縮できる
vsのおかげでテキストで調べる時間が地味に短縮できる
809デフォルトの名無しさん (アウアウウー Sa5b-UL9W)
2021/11/28(日) 23:46:58.95ID:rti4oQQSa 昔formアプリ作るときにc#でやろうとしてイディオムがなんちゃらみたいなの本はお世話になった気がする
810デフォルトの名無しさん (スッップ Sdbf-4SF7)
2021/11/29(月) 01:24:04.95ID:leVTYOqkd >>806
車輪の再発明は(コーディングの)勉強中なら良いと思うけどね。
いざ物を造るって時にはやっぱり数多あるライブラリをどう使うかがコスト削減につながるから、欲しいものを見つける力、利用する力ってのは必要だけど
車輪の再発明は(コーディングの)勉強中なら良いと思うけどね。
いざ物を造るって時にはやっぱり数多あるライブラリをどう使うかがコスト削減につながるから、欲しいものを見つける力、利用する力ってのは必要だけど
811デフォルトの名無しさん (ブーイモ MMbf-6JBT)
2021/11/29(月) 07:53:47.43ID:nkF9doEfM812デフォルトの名無しさん (ワッチョイ 977c-+6Er)
2021/11/29(月) 11:16:06.45ID:BRD3cVdW0813デフォルトの名無しさん (ワッチョイ ff33-Y/5Q)
2021/11/29(月) 12:14:41.39ID:HZy6GzpY0 elseなんて害でしかないけどな。
814デフォルトの名無しさん (ワッチョイ 977b-MeBs)
2021/11/29(月) 13:49:48.73ID:h6SrhnyS0 ビットマップ消去埋めで
pen.Color = Color.FromArgb(0, 0, 0, 0);
gr.FillRectangle(pen.Brush, 0, 0, 200, 100);
こうすると透明色は何も描画されません(Javaの場合は透明色で消されます)
pen.Color = Color.Black;
こうすると透明でない黒で消去されます
Javaのように透明色で消すにはどうすればよいですか?
pen.Color = Color.FromArgb(0, 0, 0, 0);
gr.FillRectangle(pen.Brush, 0, 0, 200, 100);
こうすると透明色は何も描画されません(Javaの場合は透明色で消されます)
pen.Color = Color.Black;
こうすると透明でない黒で消去されます
Javaのように透明色で消すにはどうすればよいですか?
815デフォルトの名無しさん (ワッチョイ 9f47-mgIj)
2021/11/29(月) 14:18:42.70ID:692Uu7Kx0816デフォルトの名無しさん (ワッチョイ 9f47-mgIj)
2021/11/29(月) 14:19:42.44ID:692Uu7Kx0817デフォルトの名無しさん (ワッチョイ 1787-MeBs)
2021/11/29(月) 14:26:25.88ID:fU6A/Nzl0 同じ結果のようです
818デフォルトの名無しさん (ワッチョイ 9f47-mgIj)
2021/11/29(月) 14:33:18.46ID:692Uu7Kx0819デフォルトの名無しさん (ワッチョイ 9f47-mgIj)
2021/11/29(月) 14:34:38.77ID:692Uu7Kx0 リンクおかしかった
http://bbs.wankuma.com/index.cgi?mode=al2&namber=37839&KLOG=65
http://bbs.wankuma.com/index.cgi?mode=al2&namber=37839&KLOG=65
820デフォルトの名無しさん (ワッチョイ 9f47-mgIj)
2021/11/29(月) 14:36:41.83ID:692Uu7Kx0 EdgeからURL貼り付けると&のあとに;が入るな
;を抜いたURLです。
;を抜いたURLです。
821デフォルトの名無しさん (ワッチョイ 1787-MeBs)
2021/11/29(月) 15:15:14.82ID:fU6A/Nzl0 一応できました 他の事象もでましたが
ありがとうございます
ありがとうございます
822デフォルトの名無しさん (アウアウウー Sa5b-ZQOw)
2021/11/29(月) 15:43:55.34ID:eIWrHApta823デフォルトの名無しさん (ワッチョイ 9748-MeBs)
2021/11/29(月) 16:34:12.32ID:/HK8Z1xK0 実はこのあとに次の文字描画が続くのですが
gr.DrawString("ABC", font, pen.Brush, x, y);
一度これをしてしまうと
gr.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
後でSourceOverに戻してもgr.Dispose();して新規作成しても
DrawStringが例外発生して文字が描画できないのです
これの原因がわかりません
gr.DrawString("ABC", font, pen.Brush, x, y);
一度これをしてしまうと
gr.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
後でSourceOverに戻してもgr.Dispose();して新規作成しても
DrawStringが例外発生して文字が描画できないのです
これの原因がわかりません
824デフォルトの名無しさん (ワッチョイ 9f2c-ol1Y)
2021/11/29(月) 17:42:32.66ID:daOVtdvf0 雑に作っただけだと再現しないねえ
GraphicsのSaveとRestore使ってみるとかどう?
var bmp = new Bitmap(128, 32, PixelFormat.Format32bppArgb);
var f = new Form() { BackgroundImage = bmp };
f.Click += (s, e) => {
var now = (int)DateTime.Now.Ticks;
using (var brush = new SolidBrush(Color.FromArgb((now >> 16) & 0xff, (now >> 8) & 0xff, now & 0xff)))
using (var g = Graphics.FromImage(bmp)) {
g.Clear(Color.Red);
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
g.FillRectangle(Brushes.Transparent, new Rectangle(32, 8, 64, 16));
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
g.DrawString("あいうえお", new Font("メイリオ", 12f), brush, 0, 0);
}
f.Invalidate();
};
Application.Run(f);
GraphicsのSaveとRestore使ってみるとかどう?
var bmp = new Bitmap(128, 32, PixelFormat.Format32bppArgb);
var f = new Form() { BackgroundImage = bmp };
f.Click += (s, e) => {
var now = (int)DateTime.Now.Ticks;
using (var brush = new SolidBrush(Color.FromArgb((now >> 16) & 0xff, (now >> 8) & 0xff, now & 0xff)))
using (var g = Graphics.FromImage(bmp)) {
g.Clear(Color.Red);
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
g.FillRectangle(Brushes.Transparent, new Rectangle(32, 8, 64, 16));
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
g.DrawString("あいうえお", new Font("メイリオ", 12f), brush, 0, 0);
}
f.Invalidate();
};
Application.Run(f);
825デフォルトの名無しさん (ワッチョイ 9748-MeBs)
2021/11/29(月) 17:54:00.35ID:/HK8Z1xK0 手数かけて頂いてありがとうございます
今丁度SaveとRestore使っていました
なんとか解決できたようです
ありがとうございます
今丁度SaveとRestore使っていました
なんとか解決できたようです
ありがとうございます
826デフォルトの名無しさん (ワッチョイ 5701-bVNF)
2021/11/29(月) 23:14:42.20ID:Vvd11AJl0 初めてC#でTaskを触りましたが、分からないことがあるため知っていたら教えてください。
ボタンをクリックしたイベント(1階層目)から3階層下の関数内でTask.Runをして4階層目の関数を実行して3階層目にawaitを付けました。
3階層目の関数は待っているのですが、2、1階層の関数は待たずに進んでしまいました。
原因分かる方いらっしゃいませんか?
イメージとしては↓の感じです。
void btnClick()
→void test1(←進んでしまう)
→→void test2(←進んでしまう)
→→→void test3(←ここでtest4をawait)
→→→→void test4
ボタンをクリックしたイベント(1階層目)から3階層下の関数内でTask.Runをして4階層目の関数を実行して3階層目にawaitを付けました。
3階層目の関数は待っているのですが、2、1階層の関数は待たずに進んでしまいました。
原因分かる方いらっしゃいませんか?
イメージとしては↓の感じです。
void btnClick()
→void test1(←進んでしまう)
→→void test2(←進んでしまう)
→→→void test3(←ここでtest4をawait)
→→→→void test4
827デフォルトの名無しさん (ワッチョイ 9f2c-mgIj)
2021/11/29(月) 23:18:35.41ID:daOVtdvf0 voidなメソッドはawaitできない
test1からtest4まで全部Task返すようにしてそれぞれawaitして
test1からtest4まで全部Task返すようにしてそれぞれawaitして
828デフォルトの名無しさん (ワッチョイ ffa7-v9CU)
2021/11/29(月) 23:25:00.09ID:6/yij7hO0 これがasync汚染か
829デフォルトの名無しさん (ワッチョイ bfda-PzMz)
2021/11/30(火) 00:27:25.41ID:LFRa8U690 そういう時はtest1〜4を全部同期メソッドにして
await Task.Run(()=>test1());
に変更する
await Task.Run(()=>test1());
に変更する
830デフォルトの名無しさん (ワッチョイ 5701-bVNF)
2021/11/30(火) 05:27:43.45ID:YI8pY0990 ありがとうございます。
そうだったのですね、知らなかったです。
btnClickもtest4の処理が終わるまで後続処理はしないようにしたいので、btnClickまでreturn task?するようにしてみます。
そうだったのですね、知らなかったです。
btnClickもtest4の処理が終わるまで後続処理はしないようにしたいので、btnClickまでreturn task?するようにしてみます。
831デフォルトの名無しさん (ワッチョイ 178b-MeBs)
2021/11/30(火) 11:13:24.34ID:46JZSEzy0 タイマー定期処理を行いたいです
public Form1()のところで timer = new Timer();〜Interval〜EventHandler(Timer_Tick);の記述をしています
Timer_Tickの中でInvalidate();がありOnPaintで画面の更新描画がされるようにしています
Form1上のボタンを押すとtimer.Start();の記述があり
for(x++){}のループの中でビットマップへ線の連続描画がされるようにしています
予想では線が右にずれながら描画される姿が連続的に見えると思ってたのですが
forが終わるまで真っ暗で全部描き終わってから最後に描画の全貌が表示されてしまいます
forループで描画中はTimer_Tickが呼ばれてないようです
ループ中も定期で呼ばれるようにするにはどうすればよいでしょうか?
public Form1()のところで timer = new Timer();〜Interval〜EventHandler(Timer_Tick);の記述をしています
Timer_Tickの中でInvalidate();がありOnPaintで画面の更新描画がされるようにしています
Form1上のボタンを押すとtimer.Start();の記述があり
for(x++){}のループの中でビットマップへ線の連続描画がされるようにしています
予想では線が右にずれながら描画される姿が連続的に見えると思ってたのですが
forが終わるまで真っ暗で全部描き終わってから最後に描画の全貌が表示されてしまいます
forループで描画中はTimer_Tickが呼ばれてないようです
ループ中も定期で呼ばれるようにするにはどうすればよいでしょうか?
832デフォルトの名無しさん (ワッチョイ 178b-MeBs)
2021/11/30(火) 11:21:49.74ID:46JZSEzy0 forの中というか実際はもっといろいろな処理が入っていて
全体が終わるまでは数秒かかるかんじになってます
Console.WriteLine("Timer_Tick呼ばれた"); でチェックしたのですがTimer_Tickは呼ばれてないようです
全体が終わるまでは数秒かかるかんじになってます
Console.WriteLine("Timer_Tick呼ばれた"); でチェックしたのですがTimer_Tickは呼ばれてないようです
833デフォルトの名無しさん (ワッチョイ 9f47-iSRf)
2021/11/30(火) 12:27:33.83ID:qX5mLnYT0 >>832
forループを別スレッドか非同期処理に入れる
forループを別スレッドか非同期処理に入れる
834デフォルトの名無しさん (アウアウウー Sa5b-ZQOw)
2021/11/30(火) 13:53:17.77ID:c6SfutN/a >>831
タイマーのイベントハンドラを実行するのはちっさいおじさん(UIスレッド)
の仕事なので、当然のことながらちっさいおじさんが別の仕事をしている
時には呼ばれない。
ちっさいおじさんは別の仕事(forのビジーループ)にかかりきりで忙しい。
だからTimer_Tickは実行されない。
タイマーのイベントハンドラを実行するのはちっさいおじさん(UIスレッド)
の仕事なので、当然のことながらちっさいおじさんが別の仕事をしている
時には呼ばれない。
ちっさいおじさんは別の仕事(forのビジーループ)にかかりきりで忙しい。
だからTimer_Tickは実行されない。
835デフォルトの名無しさん (ワッチョイ 97bf-MeBs)
2021/11/30(火) 14:10:35.52ID:+pE1HCGZ0 タイマーは複数種あるんですね
System.Timers.Timerのタイマーでなんとか解決できましたm(_ _)m
System.Timers.Timerのタイマーでなんとか解決できましたm(_ _)m
836デフォルトの名無しさん (オッペケ Srcb-BhQk)
2021/11/30(火) 14:33:06.41ID:nsEaThE+r ゴミ言語
837デフォルトの名無しさん (ワッチョイ ffbb-Z91i)
2021/11/30(火) 14:58:37.89ID:OTX12hhF0 >>835
どっち道、UIスレッド上でfor文がループしてる途中なんだろ?
そのタイマーからUIを書き換えるのは、たまたまその時は動いていてもまずいだろう・・・・
C#の言語自体なんて出来ても何にもなんないんだし、先に情報科学の基礎を固めた方がいいんじゃないの
どっち道、UIスレッド上でfor文がループしてる途中なんだろ?
そのタイマーからUIを書き換えるのは、たまたまその時は動いていてもまずいだろう・・・・
C#の言語自体なんて出来ても何にもなんないんだし、先に情報科学の基礎を固めた方がいいんじゃないの
838デフォルトの名無しさん (オッペケ Srcb-BhQk)
2021/11/30(火) 15:58:44.14ID:ARnSQzz0r ウンコ言語、async/waitでUIなんて作ってるwww
839デフォルトの名無しさん (スフッ Sdbf-iSRf)
2021/11/30(火) 16:26:44.72ID:2niMnZWKd >>837
C#できてもなんにも何にもなんないってどういうこと?
C#できてもなんにも何にもなんないってどういうこと?
840デフォルトの名無しさん (アウアウウー Sa5b-sosU)
2021/12/01(水) 08:49:58.20ID:5XL66mYQa >>838
C+SDKじいさん乙!
C+SDKじいさん乙!
841デフォルトの名無しさん (ワッチョイ 9f02-rrA7)
2021/12/01(水) 12:12:03.66ID:GG/I4Skr0 ちょっと待って!>>837がいい事言った
>先に情報科学の基礎を固めた方がいいんじゃないの
>先に情報科学の基礎を固めた方がいいんじゃないの
842デフォルトの名無しさん (ワッチョイ 17de-MeBs)
2021/12/01(水) 12:58:21.55ID:OSLu0EtY0 UIスレッドの使い分けってどんなサイトで勉強すればいいの?
843デフォルトの名無しさん (ワッチョイ bfda-PzMz)
2021/12/01(水) 13:02:10.03ID:R9kNDfRh0 できるふりしてソフトウェア開発部門へ就職し、
業務利用されるソフトを作るのが一番の近道
はっきりいって独学じゃムリ
業務利用されるソフトを作るのが一番の近道
はっきりいって独学じゃムリ
844デフォルトの名無しさん (アウアウウー Sa5b-UL9W)
2021/12/01(水) 21:53:31.39ID:d+Yo+uULa 使い分けも何もUIのメインスレッドだけで処理してたら具合悪いとなれば別スレッドでやるしかないんじゃ?
普通に調べればinvokeやらなんやら色々出てくるでしょ
適当に調べて自分でデバッグしてみれば最適解見つかると思うけど
普通に調べればinvokeやらなんやら色々出てくるでしょ
適当に調べて自分でデバッグしてみれば最適解見つかると思うけど
845デフォルトの名無しさん (ワッチョイ bfe9-3PcT)
2021/12/01(水) 21:53:49.92ID:kCj+gN+70 Excelから実行ファイルを起動するとカレントディレクトリが起動したExcel基準になるようです
実行ファイルを直接動かすとカレントディレクトリが実行ファイル基準になるので困ってます
世間様ではどのように解決してるのでしょうか
実行ファイルを直接動かすとカレントディレクトリが実行ファイル基準になるので困ってます
世間様ではどのように解決してるのでしょうか
846デフォルトの名無しさん (ワッチョイ 9f47-iSRf)
2021/12/01(水) 21:58:15.63ID:K43krm2i0 >>845
どこがカレントディレクトリだろうが動くようにプログラミングする
どこがカレントディレクトリだろうが動くようにプログラミングする
847デフォルトの名無しさん (ワッチョイ bfe9-3PcT)
2021/12/01(水) 22:43:33.38ID:kCj+gN+70848デフォルトの名無しさん (ワッチョイ 9f47-mgIj)
2021/12/01(水) 22:54:45.65ID:K43krm2i0849デフォルトの名無しさん (アウアウウー Sa5b-ZQOw)
2021/12/02(木) 01:45:33.06ID:Cd8C69Nla っていうか今時そんな四半世紀前のスタイルを使ってる人がいるんだねw
850デフォルトの名無しさん (スフッ Sdbf-iSRf)
2021/12/02(木) 01:53:55.42ID:Z/KKuSnhd >>849
コンフィグってconfig.sysのことと思ってる?
コンフィグってconfig.sysのことと思ってる?
851デフォルトの名無しさん (アウアウウー Sa5b-ZQOw)
2021/12/02(木) 02:22:27.63ID:Cd8C69Nla appのことでしょ
いや時代錯誤だなと感じるのは「カレントディレクトリ」という概念。
そんなものにわざわざ依存する必要ってあります?
どこにもないよね。
いや時代錯誤だなと感じるのは「カレントディレクトリ」という概念。
そんなものにわざわざ依存する必要ってあります?
どこにもないよね。
852デフォルトの名無しさん (ワッチョイ 9f47-iSRf)
2021/12/02(木) 03:41:52.86ID:tCUN1pkY0 まあまあ、
exe のディレクトリ==カレントディレクトリ
前提でコーディングするって初心者あるあるだからそうやって馬鹿にするなよ
exe のディレクトリ==カレントディレクトリ
前提でコーディングするって初心者あるあるだからそうやって馬鹿にするなよ
853デフォルトの名無しさん (ドコグロ MM4f-7Kcm)
2021/12/02(木) 06:53:06.04ID:BMgfYVOUM854デフォルトの名無しさん (ワッチョイ 5701-3PcT)
2021/12/02(木) 07:18:07.12ID:HY05Xx580 ExcelのVBAと連携する小さいシステムなので伝統的なカレントディレクトリ使ってるんです
Excelと実行ファイルを同じフォルダに入れれば解決なのでしょうが実行ファイルのライブラリが多いのでExcelが埋もれて見難いなとそれはそれで困り
Excelと実行ファイルを同じフォルダに入れれば解決なのでしょうが実行ファイルのライブラリが多いのでExcelが埋もれて見難いなとそれはそれで困り
855デフォルトの名無しさん (ブーイモ MMbf-6JBT)
2021/12/02(木) 07:27:14.41ID:YVKX2AcGM pushd popd は?
856デフォルトの名無しさん (ワッチョイ d75f-BO5v)
2021/12/02(木) 11:49:27.62ID:7dnZygEt0 namespace System.Collections.Generic
{
public class List<T> : ICollection<T>,…の中にある、
public void Add(T item);の具体的な処理(リストの最後に加える)はどこに書いてあるのでしょうか?
{
public class List<T> : ICollection<T>,…の中にある、
public void Add(T item);の具体的な処理(リストの最後に加える)はどこに書いてあるのでしょうか?
857デフォルトの名無しさん (ワッチョイ 9f2c-mgIj)
2021/12/02(木) 12:19:20.09ID:c3Ghpzze0 .NET Frameworkならmscorlib.dll, .NET 5以降ならSystem.Collections.dllの中
ソースコード見たいなら
.NET Frameworkのはreferencesource.com
.NETのはgithubのdotnet/runtime
ソースコード見たいなら
.NET Frameworkのはreferencesource.com
.NETのはgithubのdotnet/runtime
858デフォルトの名無しさん (ワッチョイ 5701-kQHb)
2021/12/02(木) 12:58:34.73ID:07tMJNiS0859デフォルトの名無しさん (ワッチョイ 9701-7VES)
2021/12/02(木) 15:25:00.14ID:HUSWEurn0860デフォルトの名無しさん (スフッ Sdbf-iSRf)
2021/12/02(木) 16:02:12.03ID:B97F3cDod VSTOでExcelの拡張をC#で書いてしまえば
861デフォルトの名無しさん (ワッチョイ 9fe4-jwak)
2021/12/02(木) 18:17:26.30ID:7pZIqj+v0 >>845
そもそも論としてWindowsではカレントディレクトリの扱いが環境として定義
されるようになっているので、プログラミングしてアプリを作るときにカレント
ディレクトリっていう使い方をするならば自分で必要な設定を行えば良いんだよ
まぁお約束(嫌いな人ゴメンねw)でdobonだけど
https://dobon.net/vb/dotnet/file/currentdirectory.html
そもそも論としてWindowsではカレントディレクトリの扱いが環境として定義
されるようになっているので、プログラミングしてアプリを作るときにカレント
ディレクトリっていう使い方をするならば自分で必要な設定を行えば良いんだよ
まぁお約束(嫌いな人ゴメンねw)でdobonだけど
https://dobon.net/vb/dotnet/file/currentdirectory.html
862デフォルトの名無しさん (ワッチョイ ffa7-v9CU)
2021/12/02(木) 19:13:04.88ID:IM4axE/K0 dobonいいじゃん
俺の量産するコードの半分はdobonのコピペだ
俺の量産するコードの半分はdobonのコピペだ
863デフォルトの名無しさん (ワッチョイ f72f-EJbf)
2021/12/02(木) 20:21:44.09ID:2Y5uTKRe0 Excel VBAからどうやってEXE起動してるのかしらんが
必要ならカレントディレクトリ変えればいいだけじゃないのか
必要ならカレントディレクトリ変えればいいだけじゃないのか
864デフォルトの名無しさん (ワッチョイ d75f-BO5v)
2021/12/02(木) 21:56:32.95ID:7dnZygEt0 >>857
ありがとうございます。問題が解決しました。
次に湧いてくる疑問なのですが、
Visual StudioでList<T>を右クリックして、「定義へ移動」をすると。下のように書かれています。
//
// 概要:
// Adds an object to the end of the System.Collections.Generic.List`1.
//
// パラメーター:
// item:
// The object to be added to the end of the System.Collections.Generic.List`1. The
// value can be null for reference types.
public void Add(T item);
初心者としてはreferencesource.comにあるように↓こう書かれていたらわかるのですが
public void Add(T item) {
if (_size == _items.Length) EnsureCapacity(_size + 1);
_items[_size++] = item;
_version++;
}
なぜこれで動くのでしょうか? そしてどうして下のように処理を書いてないのでしょうか?
ありがとうございます。問題が解決しました。
次に湧いてくる疑問なのですが、
Visual StudioでList<T>を右クリックして、「定義へ移動」をすると。下のように書かれています。
//
// 概要:
// Adds an object to the end of the System.Collections.Generic.List`1.
//
// パラメーター:
// item:
// The object to be added to the end of the System.Collections.Generic.List`1. The
// value can be null for reference types.
public void Add(T item);
初心者としてはreferencesource.comにあるように↓こう書かれていたらわかるのですが
public void Add(T item) {
if (_size == _items.Length) EnsureCapacity(_size + 1);
_items[_size++] = item;
_version++;
}
なぜこれで動くのでしょうか? そしてどうして下のように処理を書いてないのでしょうか?
865デフォルトの名無しさん (ワッチョイ 822c-xgq1)
2021/12/03(金) 00:14:41.65ID:QhpimBIa0 > なぜこれで動くのでしょうか?
mscorlib.dllの中にコンパイル済みのが入ってるから
> そしてどうして下のように処理を書いてないのでしょうか?
コンパイル済みのしか入ってなくてソースがないから
mscorlib.dllの中にコンパイル済みのが入ってるから
> そしてどうして下のように処理を書いてないのでしょうか?
コンパイル済みのしか入ってなくてソースがないから
866デフォルトの名無しさん (ワッチョイ ea47-r5iX)
2021/12/03(金) 00:52:15.83ID:z+zUeQIZ0 ILSpy使えばmscorelibも含めてC#に逆アセンブルしたソースコードを直接確認できるよ
867デフォルトの名無しさん (ワッチョイ a45f-tift)
2021/12/03(金) 20:46:41.26ID:9rfUUeSM0868デフォルトの名無しさん (ワッチョイ c001-tKic)
2021/12/04(土) 09:48:16.38ID:+8uP6ahU0 VCLは偉大だった
869デフォルトの名無しさん (ワッチョイ 7cda-3kCG)
2021/12/04(土) 12:39:42.98ID:3AJK8KN00 利用者は尊大だった
870デフォルトの名無しさん (アウアウウー Sa30-K6tz)
2021/12/04(土) 15:21:42.70ID:iCwoSy6wa 逮捕者は日大だっあ
871デフォルトの名無しさん (オイコラミネオ MM71-Z6Z9)
2021/12/04(土) 19:18:15.48ID:RmSrjW3jM 5chが高齢化してきてこんな感じでレベルの低い無駄なレスが増えてってる
872デフォルトの名無しさん (ワッチョイ 3a6a-Lz9/)
2021/12/04(土) 20:11:05.81ID:grkGode/0 S/N比は昔からたいして変わってないだろ
昔の方が良かったなんてのはそれこそ年寄りの繰り言だ
昔の方が良かったなんてのはそれこそ年寄りの繰り言だ
873デフォルトの名無しさん (ドコグロ MM08-fTy5)
2021/12/04(土) 20:14:22.47ID:KZXGnJ6pM > 5chが高齢化してきてこんな感じでレベルの低い無駄なレスが増えてってる
>>871 のことだなw
>>871 のことだなw
874デフォルトの名無しさん (オイコラミネオ MM71-Z6Z9)
2021/12/04(土) 20:40:20.96ID:RmSrjW3jM 年を取り感受性が低下して正常な感性が失われて昔も変わらないと言う
ジジイのダジャレを垂れ流すスレではないぞここはw
ジジイのダジャレを垂れ流すスレではないぞここはw
875デフォルトの名無しさん (ワッチョイ 3a6a-Lz9/)
2021/12/04(土) 20:45:50.00ID:grkGode/0876デフォルトの名無しさん (ワッチョイ 2bad-K6tz)
2021/12/05(日) 00:05:53.41ID:nyTfINJm0 ダジャレを言うのは誰じゃ
877デフォルトの名無しさん (ワッチョイ 6e54-r5iX)
2021/12/05(日) 05:39:51.38ID:xWrtzU7s0 >>870
これは最高につまんない
これは最高につまんない
878デフォルトの名無しさん (ワッチョイ ce89-PP5C)
2021/12/05(日) 19:03:31.29ID:a+muEo/d0 ASP.net MVC 3.1を触り始めたんだが、これ、どんな些細な変更もいちいち発行しないと見れないのかな?
いままでのように「IIS Expressをプロジェクトのディレクトリ指定して起動しておいて、ビューは変更した都度リロード、ロジック変えたらビルドして確認」なんて気楽な開発が出来なくなってかなり面倒……
いままでのように「IIS Expressをプロジェクトのディレクトリ指定して起動しておいて、ビューは変更した都度リロード、ロジック変えたらビルドして確認」なんて気楽な開発が出来なくなってかなり面倒……
879デフォルトの名無しさん (ワッチョイ 2bad-K6tz)
2021/12/05(日) 19:37:11.95ID:nyTfINJm0 実行時にコンパイルしてくれる設定はあったはず
880デフォルトの名無しさん (ワッチョイ 66ad-GQft)
2021/12/05(日) 20:22:19.92ID:c+AK18I70 ほっとりろーど
881878 (ワッチョイ ce89-PP5C)
2021/12/06(月) 10:28:43.40ID:88ozVNfm0 >>879-880
ああ、なるほど。ASP.net MVC 3.1(というか、VisualStudio2019や2022)では、【デバッグしながら】ソースをいじって、それをすぐにブラウザで見れるんだ。
chtmlは今までも出来たけど、コードビハインド(と今は呼ばないかもしれないが)の変更も可能になってて、それを反映する「コード変更を適用」なんてボタンもVSに追加されてるんですな…。
これなら確かにわざわざIIS Expressを別に起動する手間は必要ありませんね。
例外が出た時にコマンドプロンプトからも確認できなくなったのがちょっと不便になったが、これも仕事で書くまともなコードならNLogなりを入れている筈だし。
アドバイスに感謝。いやはや、便利になったモノですなぁ…
ああ、なるほど。ASP.net MVC 3.1(というか、VisualStudio2019や2022)では、【デバッグしながら】ソースをいじって、それをすぐにブラウザで見れるんだ。
chtmlは今までも出来たけど、コードビハインド(と今は呼ばないかもしれないが)の変更も可能になってて、それを反映する「コード変更を適用」なんてボタンもVSに追加されてるんですな…。
これなら確かにわざわざIIS Expressを別に起動する手間は必要ありませんね。
例外が出た時にコマンドプロンプトからも確認できなくなったのがちょっと不便になったが、これも仕事で書くまともなコードならNLogなりを入れている筈だし。
アドバイスに感謝。いやはや、便利になったモノですなぁ…
882デフォルトの名無しさん (ワッチョイ 56bd-QDcv)
2021/12/06(月) 20:25:20.35ID:kcw1evd50 文字と数値が入り混じるリストのソート掛けが分かりません。
[0]丸/B/30/40/B/60/0
[1]丸/B/70/20/B/20/0
[2]丸/B/30/5/B/60/0
[3]角/B/70/20/B/20/40
[4]丸/B/30/40/B/60/0
[5]角/B/20/20/B/20/100
1番左の丸、角等の文字でまとめ、
[0]の40の位置の数値を昇順、
[0]の30位置の数値の昇順に並び替えたいです。
丸角の順番はまとまってれば良くて、数値は小数点ありです。
どなたかコードを、教えて頂きたいです。
[0]丸/B/30/40/B/60/0
[1]丸/B/70/20/B/20/0
[2]丸/B/30/5/B/60/0
[3]角/B/70/20/B/20/40
[4]丸/B/30/40/B/60/0
[5]角/B/20/20/B/20/100
1番左の丸、角等の文字でまとめ、
[0]の40の位置の数値を昇順、
[0]の30位置の数値の昇順に並び替えたいです。
丸角の順番はまとまってれば良くて、数値は小数点ありです。
どなたかコードを、教えて頂きたいです。
883デフォルトの名無しさん (アウアウウー Sa83-PP5C)
2021/12/06(月) 20:41:57.32ID:Qbq2EdCDa >>882
そのリストの要素(例えば「丸/B/30/40/B/60/0」)
は文字列なんだよね?
だったら要はスラッシュで区切られた文字列の中から
n番目の要素を取り出すメソッドが書ければ目的は達成できるのと違うの?
そのリストの要素(例えば「丸/B/30/40/B/60/0」)
は文字列なんだよね?
だったら要はスラッシュで区切られた文字列の中から
n番目の要素を取り出すメソッドが書ければ目的は達成できるのと違うの?
884デフォルトの名無しさん (テテンテンテン MM34-Z6Z9)
2021/12/06(月) 23:26:59.64ID:qid4C38qM >>882
普通は何らかの自作クラスにその文字列をパースした値を入れてソートする
普通は何らかの自作クラスにその文字列をパースした値を入れてソートする
885デフォルトの名無しさん (テテンテンテン MM34-Z6Z9)
2021/12/06(月) 23:30:33.29ID:qid4C38qM まずね
> 文字と数値が入り混じるリストのソート掛けが分かりません。
これはリストじゃないね
ただの文字列だろ
自分の好きなようにパースしたらいい
> 文字と数値が入り混じるリストのソート掛けが分かりません。
これはリストじゃないね
ただの文字列だろ
自分の好きなようにパースしたらいい
886デフォルトの名無しさん (ワッチョイ 9b02-yt/O)
2021/12/07(火) 20:03:11.57ID:hXBXLlEy0 new object[][] { new object[] { "丸", "B", 30, 40, "B", 60, 0 } }
とかだったりね。
まあ 894 の言う通りだと思う。
data.OrderBy( a => (string)a[0] ).OrderBy( a => (int)a[3] ).OrderBy( a => (int)a[2] ) とかでも出来るかもしれないけど。
とかだったりね。
まあ 894 の言う通りだと思う。
data.OrderBy( a => (string)a[0] ).OrderBy( a => (int)a[3] ).OrderBy( a => (int)a[2] ) とかでも出来るかもしれないけど。
887デフォルトの名無しさん (ワッチョイ 0662-UKtn)
2021/12/07(火) 21:47:17.88ID:S2DijEtm0 >>882
result = list.OrderBy(x =>GetValue1(x))
.ThenBy(x => GetValue2(x))
.ThenBy(x =>GeValue3(x));
でGetValueメソッドの実装をするのが初心者でもわかりやすい
GetValueを共通化するとかはお好みで
result = list.OrderBy(x =>GetValue1(x))
.ThenBy(x => GetValue2(x))
.ThenBy(x =>GeValue3(x));
でGetValueメソッドの実装をするのが初心者でもわかりやすい
GetValueを共通化するとかはお好みで
888デフォルトの名無しさん (アウアウウー Sa83-PP5C)
2021/12/07(火) 21:47:55.35ID:cdrKb2eoa この程度の話だったらどんな設計でも問題ないと思うけど、
>>882の人はそういう設計の問題で躓いているんじゃないでしょ。
恐らくいわゆる「分割統治」ができない人なんだと思う。
普通のプログラマなら当たり前のように自然に
デリミタで区切られた文字列の3番目の要素でソートしたい ⇒
(1) 3番目の要素を抜き出す
(2) 文字列を実数に変換
(3) 変換し数値を使ってソート
という風に大きな問題を小さな問題に分割して考えるけど、できない人にはこれができない
>>882の人はそういう設計の問題で躓いているんじゃないでしょ。
恐らくいわゆる「分割統治」ができない人なんだと思う。
普通のプログラマなら当たり前のように自然に
デリミタで区切られた文字列の3番目の要素でソートしたい ⇒
(1) 3番目の要素を抜き出す
(2) 文字列を実数に変換
(3) 変換し数値を使ってソート
という風に大きな問題を小さな問題に分割して考えるけど、できない人にはこれができない
889デフォルトの名無しさん (ワッチョイ 8ea7-NsGH)
2021/12/07(火) 22:20:44.44ID:Is+OlLjN0 イコールだったら次の項目の比較をするって部分ができねぇのと違う?
890デフォルトの名無しさん (ワッチョイ 8ea7-NsGH)
2021/12/07(火) 22:21:56.47ID:Is+OlLjN0 つまりソートの優先順位の話をしてるのではないか?と
891デフォルトの名無しさん (ワッチョイ 2f24-3BeG)
2021/12/07(火) 23:54:19.12ID:C4n8qnlb0 分割統治って今日本が米帝にやられてる統治法かよ
892デフォルトの名無しさん (アウアウウー Sab5-JhWO)
2021/12/08(水) 00:07:29.07ID:JmKuL7Fea 新しくbyte[]配列を定義してコピーせずに、byte[]を文字列に直すのはどうしたらいいのでしょう?
byte[] data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //末尾にnullがたくさんあるデータ
string text = Encoding.ASCII.GetString(data);
//string text = Encoding.ASCII.GetString((byte*)data,2); //こうしたいけどキャストできずエラー
Console.WriteLine(text); //「0???????????」が出力される
byte[] data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //末尾にnullがたくさんあるデータ
string text = Encoding.ASCII.GetString(data);
//string text = Encoding.ASCII.GetString((byte*)data,2); //こうしたいけどキャストできずエラー
Console.WriteLine(text); //「0???????????」が出力される
893デフォルトの名無しさん (スップ Sd02-E64m)
2021/12/08(水) 00:19:57.85ID:8icXIUsNd894デフォルトの名無しさん (ワッチョイ 822c-xgq1)
2021/12/08(水) 00:20:50.66ID:wMA9/Vnj0 質問内容がよく分からんが欲しいのはEncodingクラスの
GetString(byte[], int, int)
オーバーロードか?
length引数はその例の場合1にしないとtextに\0文字が入っちゃうぞ
GetString(byte[], int, int)
オーバーロードか?
length引数はその例の場合1にしないとtextに\0文字が入っちゃうぞ
895デフォルトの名無しさん (スップ Sd02-E64m)
2021/12/08(水) 00:23:08.99ID:8icXIUsNd ああ文字列化のときにコピーが走るのはよくて、前処理としてbyte配列からbyte配列にコピーするのは嫌ってことか?
GetStringに範囲を指定できるオーバーロードがあるだろ
GetStringに範囲を指定できるオーバーロードがあるだろ
896デフォルトの名無しさん (ワッチョイ ea47-oWHg)
2021/12/08(水) 00:26:17.98ID:f3DwDnQi0 Encoding.ASCII.GetString(data, 0, 1);
じゃダメなの?
じゃダメなの?
897デフォルトの名無しさん (アウアウウー Sab5-JhWO)
2021/12/08(水) 00:26:56.95ID:JmKuL7Fea >>894
それ探してました。完全に見落として存在気づいてませんでした
ソース見てたら今見つけた・・・
https://source.dot.net/#System.Private.CoreLib/Encoding.cs,233647d04fbec0c0
それ探してました。完全に見落として存在気づいてませんでした
ソース見てたら今見つけた・・・
https://source.dot.net/#System.Private.CoreLib/Encoding.cs,233647d04fbec0c0
898デフォルトの名無しさん (ワッチョイ ea47-r5iX)
2021/12/08(水) 00:32:14.59ID:f3DwDnQi0899デフォルトの名無しさん (ワッチョイ 92da-h4bo)
2021/12/08(水) 00:37:02.39ID:e703d0nc0 Spanを引数にとるGetStringを早く実装しろよ、MS
900デフォルトの名無しさん (アウアウウー Sa83-PP5C)
2021/12/08(水) 00:44:28.31ID:b+i+HzV1a もう解決済みみたいだしもっといい方法がたぶんあると思うけど
いちいち手動で長さを指定せずにC文字列を文字列に変換したいってことならこれで出来た
var data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var sb = new StringBuilder();
sb.Append(Encoding.ASCII.GetChars(data));
var text = sb.ToString();
いちいち手動で長さを指定せずにC文字列を文字列に変換したいってことならこれで出来た
var data = new byte[] { 0x30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
var sb = new StringBuilder();
sb.Append(Encoding.ASCII.GetChars(data));
var text = sb.ToString();
901デフォルトの名無しさん (ワッチョイ ea47-r5iX)
2021/12/08(水) 01:08:03.30ID:f3DwDnQi0 >>899
自分で拡張メソッド作れば
自分で拡張メソッド作れば
902デフォルトの名無しさん (ワッチョイ 2f24-3BeG)
2021/12/08(水) 09:34:35.47ID:lj53vMC40 あんまり行儀は良くないけど1行で出来るしbyte[]じゃなくてSpanで受け取るときって往々にして変換先もReadOnlySpan<char>で済ませたいときだから標準で必要だとは思わないな
Span<char> stack = stackalloc char[u8.Length];
string str = stack.Slice(0, Encoding.UTF8.GetChars(u8, stack)).ToString();
Span<char> stack = stackalloc char[u8.Length];
string str = stack.Slice(0, Encoding.UTF8.GetChars(u8, stack)).ToString();
903デフォルトの名無しさん (ワッチョイ 4e3a-wVd4)
2021/12/09(木) 18:07:45.75ID:Oxvlsd/n0 VC#からVC++へは移植はしやすいですか?
904デフォルトの名無しさん (ワッチョイ 0a8e-9fbA)
2021/12/09(木) 18:12:01.88ID:T9HnMcRs0 >>903
その質問をここでするくらいの人にはどちらにしろ無理だな
その質問をここでするくらいの人にはどちらにしろ無理だな
905デフォルトの名無しさん (エアペラ SD46-A/rS)
2021/12/09(木) 18:27:06.11ID:vdjQHUNbD 全然
レイヤの違いが極端なので文法が少し似てる以外完全に別物
レイヤの違いが極端なので文法が少し似てる以外完全に別物
906デフォルトの名無しさん (アウアウウー Saab-wFmK)
2021/12/09(木) 19:40:17.12ID:RDoYY/RSa 久しぶりにc#書くんだけど今VSって2022が最新と思っていいのかな?2019のほうがいい?
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 中国外務省局長 「ポケットに手を入れていたのは寒いから」 日本との局長級会談で ★2 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★7 [ぐれ★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 ★3 [お断り★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★8 [ぐれ★]
- 【外交】元台湾総統・馬英九氏、高市首相発言に「台湾を危険にさらす」台湾海峡の問題は「両岸の中国人が自ら話し合うべき」★2 [1ゲットロボ★]
- 【実況】博衣こよりのえちえちフログロ学力テスト🧪★5
- エッヂ落ちた?
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- 中国発の日本行きチケット、50万枚キャンセルwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww✈ [329329848]
- 【ぺこ専🐰】なんG 兎田ぺこら実況スレ🏡【ホロライブ▶】
- 【街の声】高市人気爆発!野党に怒りの声!! [237216734]
