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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9e9f-LwdJ)
垢版 |
2018/10/04(木) 18:56:38.41ID:JnxMNCXd0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/10/20(土) 08:18:20.72ID:vp6V3Xy/M
>>172
おお、Windows3.0を使ってた人なんて初めて見たわ
3.1から使い始めた俺はまだまだ若造なんだな w
176デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/20(土) 08:20:31.03ID:Nttc2RvPa
⒊0は日本じゃ売られなかったって誰か教えてやれよ。。。
2018/10/20(土) 08:59:16.77ID:8XvHu+iJ0
>>176
え?
https://www.betaarchive.com/imageupload/2017-12/1512511364.th.57831.jpg

Windows for Workgroupsと勘違いしてるのかな?
178デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/20(土) 09:17:14.34ID:Nttc2RvPa
悪かったよ。
B何てあったんか。
PC98懐かし過ぎて二度見したわw
2018/10/20(土) 09:22:24.86ID:8XvHu+iJ0
>>174
そう言うのもあるだろうけど、俺等の世代はテキスト主体だったけど今の若い奴等は画像メインって言うのが大きい気がする
俺だけかも知れないけど640KBでやりくりして56Kbpsがスゲーって言ってた世代の記憶は一生消えないと思う
180デフォルトの名無しさん (ワッチョイ bea5-Fc6z)
垢版 |
2018/10/20(土) 10:03:32.03ID:qexLty9p0
Task.Delay()の時間設定ってかなりテキトーですか?
0と1msがあまりにも差がありすぎる気がス
2018/10/20(土) 10:54:16.89ID:ODHHe6QF0
>>180
そりゃ「"最小***ms以降"で目を覚まして」ぐらいの意味だからねそれ
1ms単位できっちりスレッド切り替えを保証できるOSでは無いのだ

状況次第だけどMMCSSやtimeBeginPeriod(非推奨)を設定すればある程度改善できる場合もある
182デフォルトの名無しさん (ワッチョイ bea5-Fc6z)
垢版 |
2018/10/20(土) 12:57:53.42ID:qexLty9p0
>>181
そうなのか
正確に測ったわけじゃないけど1msに設定しても
体感的に10msくらい止まってる気がする
短い停止はThread.Sleepのほうがレスポンス速いな
でもこっちは長くするとデッドロック?しちゃう
でTass.Delayにしてみたんだけど・・・
あちらを立てればこちらが立たずだな
2018/10/20(土) 13:07:38.97ID:dg5LoPsJ0
10ms ぐらいだろ

組み込みみたいな、リアルタイムOS じゃないから
184デフォルトの名無しさん (ワッチョイ be81-fIkj)
垢版 |
2018/10/20(土) 13:28:52.22ID:fOofNO0j0
>>179
DOS=HIGH

これも未だに覚えてるわ
オフセットとセグメントというめんどくさいもののおかげで
+64K-36バイト余分があるという
2018/10/20(土) 15:48:18.27ID:sxRx8jfWd
絶対パスなら(先頭に¥マークを含む)相対パスに変換するって処理って何か関数あるかな?
2018/10/20(土) 15:51:44.06ID:HNej4b9n0
c# 絶対パス 相対パス
で検索すれば一発じゃん
187デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/20(土) 15:55:52.46ID:Nttc2RvPa
大分離れたけど、何年か前のC#6か、それより前で文字列に@付けたりなんだりで解決してなかったか?
2018/10/20(土) 15:56:22.36ID:/P2yZ5cia
>>185
Path.GetRelativePath
189デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/20(土) 16:00:52.98ID:Nttc2RvPa
>>187
すまん。
的外れだった。
2018/10/21(日) 23:07:31.83ID:gVzxUBHM0
配列の次元を動的に決める方法ってあります?
例えばHairetsuっていう名前のオブジェクトがあったとして、
コンストラクタでhoge(int x)が呼び出された時は1次元配列、
hoge(int x, int y)が呼び出された時は2次元配列にしたい。
2018/10/21(日) 23:43:26.15ID:hj9/4JnXa
>>190
Array.CreateInstance?
2018/10/22(月) 00:21:30.44ID:KsYG64zi0
>>165
一行で書くとこんな感じ?
worksheet.Columns("A").First().Cells(true).Max(cell => cell.Address.RowNumber);
2018/10/22(月) 03:54:32.49ID:lcyNLVRb0
sizeof(char) は 2 なのに Marshal.SizeOf<char>() が 1 になるのは何故ですか?
2018/10/22(月) 04:57:46.04ID:DedBSVU60
ANSI扱いで計算されてるから
2018/10/22(月) 14:42:05.76ID:z/eoCJYy0
ダブルクリックするとデフォルト値に戻るTrackBarを作りたいのですが
Trackbar.DoubleClickイベントを追加してもクリックイベントが動くだけで反応してくれません……
ググった情報を参考に継承クラスにしてからSetStyleでStandardDoubleClickを追加しても無反応でした
よければご教授よろしくお願いします……
2018/10/22(月) 16:42:10.00ID:NGaoO2J9d
サブクラス化でダブルクリックのメッセージを盗む
2018/10/22(月) 16:49:58.28ID:PhEYlXMOa
>>195
簡単だろ...と思ったけどそうでもないみたいね
CreateParamsオーバーライドしても出来なかった
https://bytes.com/topic/c-sharp/answers/492805-enable-trackbar-doubleclick-event

ダブルクリックの成立条件がOSの設定と別になるのは諦めて
自分でダブルクリックを実装するしかない気がする。知らんけど

private Stopwatch mStopWatch = new Stopwatch();
protected override void OnClick(EventArgs e)
{
  base.OnClick(e);

  const int maxDoubleClickInterval = 500;
  if (mStopWatch.IsRunning && mStopWatch.ElapsedMilliseconds <= maxDoubleClickInterval)
  {
    OnDoubleClick(e);
    mStopWatch.Stop();
  }
  else mStopWatch.Restart();
}
2018/10/22(月) 16:50:32.09ID:PhEYlXMOa
>>196
メッセージ自体が飛んでこないのよ
2018/10/22(月) 17:10:21.59ID:z/eoCJYy0
>>197
あーーやはり根本から用意されてないんですね……
自分の初歩が間違ってるのかなと思っていたのですが少し安心しました
ありがとうございます!
200デフォルトの名無しさん (ワッチョイ f3a5-Fc6z)
垢版 |
2018/10/23(火) 08:10:29.01ID:WlOKeoDJ0
素人のボヤキで恐縮ですが
何度も書いては直しを繰り返し書き足したコードが
最後の最後、どうしてもデバッグが通らなくなりまして
いくら調べても動かない原因か分からず
もう考えるの面倒くさくなって
新規のFormに一から同じコード書き直してみたら・・・動くじゃん!
たぶん何度もトライ&エラーしたから何処かで操作間違えて
IDEが自動で生成したコードにゴミが混じったんじゃないかと思ったのですが
この動くコードと動かないコードの違いを簡単に発見できませんかね?
今、全ての.csファイルを一行ずつ比較してますが・・・もう飽きましたwww
メインのコードは全く同じでした
ちなみにデバッグで出るエラーは、あるクラスのメソッドの定義が無いというやつです
2018/10/23(火) 08:58:05.56ID:4KRTdb+90
定義がなくてエラーを吐くところまで分かるなら
動くほうのコードをその定義名で検索してコピペすればいいのでは……?
202デフォルトの名無しさん (ワッチョイ f3a5-Fc6z)
垢版 |
2018/10/23(火) 09:16:11.92ID:WlOKeoDJ0
自作のメソッドじゃないのです
usingでちゃんとクラス指定してますし
少なくとも手で入力したコードは同じなので
2018/10/23(火) 09:37:53.24ID:4KRTdb+90
いや、だから自動生成のコードも比較してるんだよね
普通にそこにヤマ当てて検索すればいいのでは…………???
2018/10/23(火) 10:00:22.54ID:XCdCnqpbd
List<int>型をカンマ区切りの文字列にしたいんだけども一個ずつforeachで要素取り出して繋げるしかないかな?
2018/10/23(火) 10:03:28.47ID:XCdCnqpbd
joinをレスかいた後に見つけました!
すみません
2018/10/23(火) 10:43:05.65ID:IN4ounIY0
質問した直後に答えが見つかるのはありがちである
2018/10/23(火) 10:55:13.88ID:cDc5Fd7gM
質問する際に文字に起こすことによって頭が整理されるためである
2018/10/23(火) 11:08:35.71ID:mgVace2od
staring[] strLine = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)

strLine = strLine[0].Split(chrCut)

return strLine;

フォーム1で一回通ったあとフォーム2で2回目通るときにエラーで別のプロセスで使用されているって出るんですがどういったエラーですか?
ファイル開いてるってことですか?
209デフォルトの名無しさん (ワッチョイ bee8-nBLa)
垢版 |
2018/10/23(火) 11:14:39.42ID:Vkutn+dk0
>>207
あるある
2018/10/23(火) 11:29:22.32ID:IN4ounIY0
探すのをやめたとき見つかることもよくある話で
2018/10/23(火) 14:06:54.25ID:GxUzOGox0
>>208
そう
ただFile.ReadAllLinesはオープンからクローズまでやってくれるので普通は発生しない
他でそのファイルを触ってない?
あと自プログラム上はクローズしたけどアンチウィルスソフトがまだ触ってるってケースがある
2018/10/23(火) 21:57:42.31ID:H4AFqJh00
>>211
原因を探る方法ってなんかあります?
2018/10/23(火) 22:47:02.21ID:beMFeyu90
>>208
Readだとそもそも他でロックしていても別のプロセスで使用されているってエラーにならないはずなんだけど
書き込みモードで開いたままとかよっぽど変なことしていないか?
>>212
とりあえずダミーで
string[] strLine = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)
のすぐ下に別の配列への読込み
string[] strLine2 = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)
を入れて見てエラーになるかならないか確認してエラーが出たらお手上げ
エラーが出ないのならstring[] strLine = system.IO.File.ReadAllLines(tarTxtPath,System.Text.・・・)から2回目の実行時にエラーの原因がある
2018/10/23(火) 22:54:16.72ID:t0pM1C750
Windowsで簡単なデスクトップアプリ、コマンドプロンプトアプリを作るのが目的で
無料のVisual Studio 2013 for Desktopをインストールしている

最近調べたらVisual Studio 2017 Community版なるものが無料でリリースされてるようだけど
2013 for Desktopから乗り換える価値あると思う?
それとも2013 for Desktopをそのまま使い続けていた方がいい?
2018/10/23(火) 23:19:13.87ID:beMFeyu90
>>214
2013だと最新のC#や.NetFrameWorkwpターゲットにしたものが作れないと思うけどVisualStudioのスレで聞いて
メリットとデメリット詳細に説明するのは難しいと思うから
2018/10/23(火) 23:37:40.87ID:EnOD72ofM
>>214
VS communityは商用利用に制約が有ります。
Express 2017 for Windows Desktopを利用しましょう。
Express 2017 for webはないのでwebはVSCODEに移行しました。
2018/10/24(水) 00:13:22.70ID:mtZGy2HS0
dd
2017 for Windows Desktopに乗り換えまつ
2018/10/24(水) 00:29:43.28ID:XKgg3tJUa
>>216は間違い
VS Communityは組織の規模に制限があるが用途に制限はない
2018/10/24(水) 07:44:57.85ID:s6gpcYwid
>>213
書き込みモードで放置してました。
お手数おかけしました!
2018/10/24(水) 10:07:14.94ID:3/mFq1HRd
>>216
5人以上での開発からじゃなかったっけ
2018/10/24(水) 13:09:57.36ID:AbQuJmTL0
プログラマーとして転職するにはどんな本までマスターしてれば大丈夫ですか?
ゴールからはじめるC#は読めました。
222デフォルトの名無しさん (アウアウカー Safb-dUTK)
垢版 |
2018/10/24(水) 13:24:18.69ID:pa4PW987a
基礎としては入門で十分。

読んでから作るのではなく、作りながら読む。
必要だと感じないと頭に入らない。
2018/10/24(水) 13:34:18.54ID:KNarJnl6M
C#ってあんまり未経験OKの仕事ないからJavaから入るのがいいと思うよ
JavaならFizBuz書ければ十分仕事できる
2018/10/24(水) 13:46:07.47ID:uTlH1PNGr
まじかよ
2018/10/24(水) 13:53:12.06ID:8s24r2uo0
>>221
本ならEssential C#
まぁ作った物を見せるのが一番だけどな
2018/10/24(水) 18:41:34.40ID:HJod1vGPM
VS2013でweb formを作っています。
以前VS2008の時代、AjaxControlToolkitのModalPopupExtenderを使って設定用のポップアップを作っていました。
今回同じような事をしたいのですが、VS2013の環境で、同等の事を簡単にできるよい方法はありませんか。
2018/10/24(水) 19:08:39.26ID:KNarJnl6M
>>226
WebFormsに頼るのはやめてBootstrapを使ってください
2018/10/24(水) 20:20:05.07ID:a4OXlgOjM
>>220
開発者の数じゃない
でかい企業は開発者の人数関係なく使っちゃダメ
小さい企業は5人までならいいってこと
なので会社が小さくても3人の開発者が2チームいたらアウト

■個人開発者
あらゆる個人開発者は Visual Studio Community を利用でき、無償または有償のアプリケーションを作成できます。
■ 組織
以下のシナリオでは Visual Studio Community を利用者数に制限なく利用することができます: 教室の研修環境、学術的調査、オープン ソース プロジェクトへの貢献
■その他のすべての利用シナリオ:
●エンタープライズではない組織において 5 ユーザーまでは Visual Studio Community を利用できます。
●エンタープライズ組織 (PC 台数 250 台以上または年商 100 万ドル以上) は上記の教室の研修環境、学術的調査、オープン ソース プロジェクトへの貢献以外では従業員や請負契約者ともに利用を認められません。
https://visualstudio.microsoft.com/wp-content/uploads/2017/05/Visual-Studio-2017-Licensing-Whitepaper-March-2017_Japanese.pdf
2018/10/24(水) 20:23:21.79ID:pUZreFeO0
リリース用のビルドマシンは1台で
他は全部expressや

ってやったらどうなるの?
2018/10/24(水) 20:24:41.18ID:j9WcSB4FH
年商1億って結構安いよな
ケチ
2018/10/24(水) 20:28:06.50ID:mBAz6liX0
>オープン ソース プロジェクトへの貢献
ってすごい曖昧な定義だよな
2018/10/24(水) 20:43:45.15ID:lYnaZc560
Javaは設定ファイル多すぎて挫折したけどdotnet new mvcですぐ始められるのは良いね
サーバーもいらないし
2018/10/24(水) 20:45:46.94ID:FS+T0WbLa
>>229
意味ない
ビルドだけなら.NETさえ入ってればmsbuild一発でできる
2018/10/24(水) 21:02:31.52ID:uTlH1PNGr
MSが委託請負が開発したCommunityでビルドしたアプリまで特定できるの?
2018/10/24(水) 21:04:15.38ID:3/mFq1HRd
tiff画像をBitmapクラスを使って読み込みたい
読み込みはできたのだけど、1ピクセル辺りに要するバイト数が想定と違って困ってます

Bitmap b = new Bitmap(file)
BitmapData d = b.LockBits(new Rectangle(0,0,b.width,b.height),ImageLockMode.ReadWrite,b.PixelFormat)

b.pixelFormatがどうやらサイズが間違っているようなんだけども
ここってどう指定すべきなのでしょうか
2バイトのところ4バイトのARGBが入ってるのでサイズがめちゃことなってしまって
2018/10/24(水) 21:39:43.47ID:pUZreFeO0
>>233
Visualstudioのお金払う必要無いって言ってる?
ライセンスの話ね
2018/10/24(水) 21:55:47.42ID:0ETaBBAFa
>>235
tiff使ったことはないけどここ参考になったりしない?
https://teratail.com/questions/136266
2018/10/24(水) 22:47:55.18ID:FS+T0WbLa
>>236
ビルドだけが目的ならVSなんか全く必要ないよ
2018/10/24(水) 23:48:44.98ID:sUnPoBu6d
>>237
回答があるようでない感じやねありがとう
ファイルの先頭ポインタから何番目ってをIntPtrで変換とかはStreamReaderでできるんかな?
2018/10/25(木) 00:00:10.59ID:6CwUNa2j0
>>238
じゃ、Visualstudioって実質金出さんでもいいの?
2018/10/25(木) 00:02:26.32ID:bJEmGRRpM
>>240
開発生産性を度外視するならその通り
2018/10/25(木) 02:14:51.71ID:LTnIM1RR0
最近ほぼVisualStudioCodeしか使ってないわ
2018/10/25(木) 09:35:23.68ID:BG3PZmBX0
>>235
まずその想定してるっていうPixelFormatは正しいのかExplorerからプロパティ>詳細のビットの深さ見て確認する
> 2バイトのところ4バイトのARGBが入ってる
想定とBitmapDataでどっちがどっちなのか読み取れないけど1ピクセル2バイトってRGB565とかその辺なの?
2018/10/25(木) 11:59:33.09ID:dYjhTuUoa
たぶん直接の原因は>>237にある通りじゃないのかな
文面を見る限り質問者はあまり注意深い人に思えないしw
2018/10/25(木) 12:11:30.07ID:dYjhTuUoa
ところで、LockBitsってインスタンスメソッドなのに何で自分自身のPixelFormatを
引数で要求するんだろう。
2018/10/25(木) 13:07:15.03ID:r31i+JfIM
GDI+のAPIがそうなっているから、それを何も考えずに猿のようにラップしてそうなっただけ
2018/10/25(木) 19:40:29.60ID:gTpJa4iN0
>>246
Q. では何故GDI+のAPIはそうなっているのですか?

A. The pixel format of the temporary buffer does not have to be the same as the pixel format of this Bitmap object.
[https://docs.microsoft.com/en-us/windows/desktop/api/gdiplusheaders/nf-gdiplusheaders-bitmap-lockbits]
2018/10/25(木) 20:44:40.21ID:n3Rz+F82a
>>247
フルカラーをトゥルーカラーにしたり、アルファーチャンネルを付け加えたり、
そういうフォーマットの変換機能も兼ねてるってことなのかな

MSDNのLockBitsの解説にはそんなこと書いてないけど。

不細工な設計だねw
2018/10/25(木) 21:41:33.94ID:JIQ6DfsAp
>>248
> 不細工な設計だねw
なんで?
2018/10/25(木) 22:26:50.74ID:n3Rz+F82a
>>248
フォーマットの変換機能は別に持たせた方がスマートでしょ
(現にCloneでできるみたいだし)

少なくともLockBitsにPixelFormatを引数にとらないバージョンがあってしかるべき。

GDI+はやっつけで作ったのかこういう不条理な実装他でも見た記憶があるなあ
2018/10/25(木) 22:33:36.48ID:mF3BZxvh0
GDI+は処理の遅さが致命的
2018/10/25(木) 23:29:37.31ID:JIQ6DfsAp
>>250
ソース元のフォーマットに制限されず指定のフォーマットで読み書きできた方が普通に便利でしょ
別のビットマップが欲しいわけじゃないのにCloneを仲介する方が意味わからん
(LockBits自体は自動的に複製を作るようなもんだけどね)
2018/10/25(木) 23:30:45.76ID:oh52xQKG0
cbo1のテキストと同じものを3行目の3列目から右に同じものを見つかるまで探し、見つかったセルから下へループし、「※」印がある場合のみ「※」印の行の1列目の氏名を配列に入れ、cbo2にADD。
注)入れる際に同一氏名がすでに配列にある場合除外。
これをやるために、closedxmlで書いて見ましたがちょっと処理が遅い。

コードの書き方的には右にforで最終列までループ処理→ifで一致
forで一致した列の最終行まで下へループ処理→ifで一致したら配列に詰め込む。

現在ここで重複排除のやり方が分からないのでとりあえず全て配列にいれてます。
どうやって、書くのが最善ですか?

https://i.imgur.com/hEMt9ir.jpg
2018/10/26(金) 00:14:26.87ID:mydHUNdj0
>>253
格納するときに現在あるやつ全部とダブリチェックでいーじゃん
2018/10/26(金) 00:36:10.18ID:pE8f1AMra
>>253
低い抽象度でものを考えすぎている
お前がやりたいのはExcelの操作を自動することではなくて目的とする結果を得ることだろ?
まず要件を明確にし、それをそのままコードに落とすだけだ
カーソルだのセルだのは最後の最後に出てくるどうでもいい瑣末な部分だ
2018/10/27(土) 08:30:41.59ID:F8L6v78S0
複数の.csvファイルを一つの.xlsxファイルに簡単に纏められる?
2018/10/27(土) 08:55:21.44ID:BNqfM2zkM
VBAでできることはC#でも全く同じ方法でできる
C#ではなく "VBA CSV 複数 結合" でググったら一発でサンプルは出てくる
そして "C# Excel 操作" でググって出てきたサンプルを真似してC#に機械的に書き直せ
それ以上細かいことはスレ違い
2018/10/27(土) 09:14:14.56ID:if75aWaZ0
>>256
できる
2018/10/27(土) 11:23:15.72ID:AkygrdAXM
>>256
やればできる
2018/10/27(土) 15:22:42.49ID:GAIyH11Qr
やれば出来るだろうが、手間は掛けられん。
簡単に出来るなら、ちょっと考えてみるかな。

ありがとう。
261デフォルトの名無しさん (ワッチョイ 5b9f-3knh)
垢版 |
2018/10/27(土) 15:42:55.29ID:QwPOuwmq0
>>256
テキストの状態で全ファイル連結して一つのcsvファイルを作り、それをExcelで開いてxlsxで保存。

というローテクな方法でもできる。
2018/10/27(土) 15:57:45.83ID:if75aWaZ0
>>260
普通にc#からエクセルファイル操作できるから
2018/10/27(土) 15:58:58.91ID:ntx2HiKDa
便所掃除ができることをドヤ顔で言わなくてよろしい
2018/10/27(土) 22:41:19.36ID:Qgr0BHqv0
>>262
お前の「普通に」って何だよwww
初心者用なんだしやり方を詳しく教えろやくださいませ

まさかopenXMLのAPIのことじゃないよね
2018/10/27(土) 23:31:57.17ID:/aRXu6mM0
VBEでC#書けたりするの?
2018/10/27(土) 23:56:23.88ID:cqzal98J0
C#のクラスを考えるときにテストのことを考えるとさ
privateの関数や変数は持たない方が望ましいと聞いたんだがそこまで意識してプログラミングしてる?
役割を逸脱してる可能性が高いと言われてるのだがコード的にそうはさせない方法とかあるのだろうか
2018/10/28(日) 00:27:12.07ID:hf5/u8050
えなにそれ
publicな変数にしろってこと?
2018/10/28(日) 01:01:32.10ID:sLs9tkqy0
>>267
全部パブリックにしろって話ではないと思うのだが、
クラスとしてちゃんと機能してるかをテストしやすくするものとして確認しやすいように設計をするようにと言われた
アクセッサを準備しろってことなのか
、protectedで作って継承してテストをしやすくしろってことなのかはわかってない
2018/10/28(日) 01:01:48.04ID:z9u8vCUJ0
>>266
なにそのキチガイ発言
2018/10/28(日) 01:05:59.90ID:sLs9tkqy0
>>269
たぶん本質は内部所持して扱う変数を極力減らしましょうってことなんかなって思ってる
クラスを使うのにA・B・Cを事前に呼び出して内部変数の設定をしないと使えないですとかだと
バグのもととかになるから条件縛りを減らしましょうとかってことなんじゃないかと
2018/10/28(日) 06:10:51.67ID:e0hkCJOP0
全部public staticにしろ
2018/10/28(日) 08:05:20.34ID:3RT+wTpd0
日曜プログラマです
理屈に疎いので教えてください
Win32APIをマーシャリングしてプログラムを作成中なのですが
コールバックをデリゲートでやってるので
これは必然的にFormとは別のスレッド(マルチスレッド)という理解で正しいでしょうか?
このコールバックからの信号をトリガーにForm上のコントロールを触ると
「別スレッドからアクセスした」と怒られます
これを回避するために別のデリゲートを挟んでコントロールを触っていますが
これ以外に方法ないでしょうか?
デリゲート挟むと時々信号取りこぼすみたいで
上手くコントロールが反応しないことがあるんで改良したいのです
2018/10/28(日) 08:25:18.25ID:SibvNmKY0
どうでもいいけどココって本当に初心者用スレなのかね
2018/10/28(日) 08:56:08.45ID:kvhoQsiz0
>>272
> コールバックをデリゲートでやってるので
> これは必然的にFormとは別のスレッド(マルチスレッド)という理解で正しいでしょうか?

どこのなんのコールバックなのかこっちは知らんのだが
「別スレッドからアクセスした」と怒られるんならそうなんでそ

> これを回避するために別のデリゲートを挟んでコントロールを触っていますが

デリゲートを挟んでとあるけど、前提としてコントロールを触る処理はInvokeメソッドにちゃんと投げてる?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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