[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 04/22 22:51 / Filesize : 279 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:28:06.27 ID:s+6oZKe00.net]
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

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

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:28:59.30 ID:s+6oZKe00.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

3 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 19:29:16.32 ID:s+6oZKe00.net]
C# のガイド
https://docs.microsoft.com/ja-jp/dotnet/csharp/index

Microsoft Docs
https://docs.microsoft.com/en-us/

.NET Documentation
https://docs.microsoft.com/en-us/dotnet/
https://referencesource.microsoft.com/

4 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 21:27:50.86 ID:ZoVvvxluM.net]
DataTableにSelectを使うとき、

dt.Select("Value = '" + value + "'");

なんて行うと、valueにシングルクォートが含まれた時にエラーになります。
もしシングルクォートだけが問題ならこの文字だけエスケープすればいいのですが、
SQLインジェクションと同じことができそうで、なんかSelectの中の文を
作成してくれるなんとかBuilderみたいなものがありそうな気がしたのですが
探しても出てきません。valueは外部から与えられるとき、安全でエラーなく
dt.Selectを実行するなんか対策方法はないでしょうか。

5 名前:デフォルトの名無しさん [2019/05/17(金) 06:38:03.53 ID:pevdljBD0.net]
いつからかは定かではないけど気付いたのは2週間ほど前
埋め込んだPMG画像のX軸方向の表示比率が狂ってフォームのレイアウトがずれる現象が起こった
「あれ−プロパティの設定間違えたままビルドしたのかな?確認しなきゃー」と思っていたら
今朝見ると元に戻ってた
なんで???こんなこと起こる物?
Windowsのアップデートに関係あるのかな?

6 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 07:11:50.30 ID:GiXqVPbm0.net]
e.Data.GetData(DataFormats.FileDrop)
ドラッグエンターされたファイルのファイル名を取得したいのですが、
wpfだとfiledropのインテリセンスが出ません
方法が変わっているとしたら、参考ページを教えてください
エクスプローラのような表示がしたいのです

7 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 07:20:19.39 ID:9MJvTMs2M.net]
ダッセw

8 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 07:44:53.08 ID:YBOnmRBMd.net]
>>5
あるよ

9 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 08:11:02.59 ID:gZLbXhzCd.net]
>>5
winupdate関連ならこういうのとか?
https://qiita.com/CodeOne/items/22004635d3c7cc533e5e

10 名前:デフォルトの名無しさん [2019/05/17(金) 08:20:13.62 ID:pevdljBD0.net]
>>9
あーなんかコレっぽいな
PNGがずれたんじゃなくてフォーム自体が横伸びしたのか
ありがとう



11 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 08:44:00.43 ID:65sULU0k0.net]
>>4
SQLインジェクションはエスケープされないクォートを混ぜてやるものだから
あんたの思い過ごしだよ

12 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 11:39:10.48 ID:8VLhbVxR0.net]
>>4
Ruby, PHP などのフレームワークで使う、
place holder みたいに、値だけを安全にはめ込むやつだろ

SQL インジェクションでは、; で一旦、文を終わらせてから、
また違う文をつなげてくる奴もいる

13 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 12:08:51.26 ID:GiXqVPbm0.net]
wpfのリファレンスってどこにあるんですか?
特にないのですか?

14 名前:デフォルトの名無しさん [2019/05/17(金) 15:30:49.88 ID:JF+UKpuC0.net]
>>13
ちょうど専用スレが立ったっぽいから、そっち行ったほうがいいんじゃない?
mevius.5ch.net/test/read.cgi/tech/1557960752/l50

15 名前:デフォルトの名無しさん mailto:sage [2019/05/17(金) 16:22:19.88 ID:GiXqVPbm0.net]
↑どうも 了解です

16 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 06:49:02.88 ID:M6x4drXG0.net]
イベントというのはすべて
mainwindow.xaml.cs
に追加されるんですか?

自分で作ってcsファイルなどに分けないとコードでごっちゃになるんじゃないでしょうか
イベントは
mainwindow.xaml.cs
に置いて、
処理部分は他から呼び出すというセオリーなんですかね

17 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 09:42:52.47 ID:GEx07AN40.net]
設定用のクラスを XmlSerializer を使ってファイルに保存しています。
デシリアライズ時に例外が起きた時、とりあえず今はあきらめて新たにクラスを初期値で生成するようにしています。
このとき、せめて例外が発生した変数だけ初期値にするとかの対処をしたいのですが、どのようにすればいいのでしょうか。

そんなにはないのですが、書き出した設定ファイルを人が編集するのにある程度耐性を持たせたいと思っています。
特に enum は綴り間違うとすべてがパーになるので。

18 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 10:39:13.87 ID:7Pnn73GQ0.net]
>>17
だったら設定値編集するツールでも作れ

パンピーにxmlの編集はできそうで無理
すぐに階層ぶっ壊す
どこでエラーが出たのかわからない
せめて読み込んだときに○行目でエラーですよとか
括弧の対応付が腐ってますよとか
出れば・・・それが直せる人間ならエラー出さん気もするが

19 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 10:54:32.86 ID:oTYVhQug0.net]
>>17
それC#というか設計の問題に見える
要素ごとにチェックして例外を検出したところだけ差し替えるって泥臭い方法しか無いんじゃね

20 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 11:06:09.13 ID:tLFT43eQM.net]
まあSAX系のParser使えば済むだろ
XmlSerializerはガタガタ文句を言わない奴が使うもんだ



21 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 11:37:15.79 ID:fYyO/h33F.net]
設定ファイルとして使うならJSONの方がユーザーが扱いやすいよ

22 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 11:38:53.24 ID:7Pnn73GQ0.net]
>>21
あれ、編集できる猛者はバイナリでもやってくれそう

23 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 12:00:07.41 ID:R06AaKeM0.net]
jsonもxmlも手作業で編集させない前提じゃないと無理だと思う
あえてやる人は自己責任で放置

24 名前:デフォルトの名無しさん [2019/05/18(土) 12:42:19.98 ID:OQYrbR790.net]
>>17
適当だけどシリアライズする時にいじられる可能性があるファイルとは別にバックアップファイルも作っておけば?
失敗したらバックアップファイルから読み込むとか

25 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 15:49:30.00 ID:GEx07AN40.net]
どうも、色々有り難うございます。
やっぱりかゆいところに手が届くようにするには全部自分でヤるしかないんですねえ。

>>24


26 名前:一応それだけはやってます。

まあ、XML 形式は人間がいじるには不便なので、昔ながらの ini ファイル形式の処理なども検討してみます。
[]
[ここ壊れてます]

27 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 17:42:36.41 ID:eMzBQbdsd.net]
>>25
ini使うんだったらJSONの方が使い勝手いいよ
JSON.NETで簡単にシリアライズできるし

28 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 18:00:47.70 ID:GtOtQ7tSd.net]
結局、key valueだったらjsonだわな。

29 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 19:40:41.40 ID:7Pnn73GQ0.net]
CSVならエクセルで開けんで?

30 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:05:43.33 ID:XXYGI5ia0.net]
ini ファイルは古い。
XML, JSON, YAML, CSV

Vagrant, Chef ではRuby、Gradle ではGroovy など、
プログラミング言語そのものが設定ファイルになるのが、間違いが少ない



31 名前:デフォルトの名無しさん mailto:sage [2019/05/18(土) 22:16:44.23 ID:AjHoo0DiM.net]
ini (プロファイル)よりCSVの方が古い
件について小一時間

SuperCalc形式だものね

32 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 14:54:54.80 ID:Tz3mdNYZ0.net]
jsonってコメント書けるの?

33 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 15:18:17.73 ID:ZizjC4JWp.net]
書けないンゴ

34 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 15:31:02.10 ID:gLWKrV0ia.net]
今更だけど>>17はすげえ面白い発想だなw
この発想はなかった

他の人も書いてるけど、「手動で編集して壊してももそれなりによきに計らうようにしたい」
って発想がそもそも合理的じゃないね。
労力の使い方が間違ってる。

編集させたいなら編集できるツールを提供するのが筋でしょう普通に

35 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 15:43:58.11 ID:5QEI0n2d0.net]
>>4
亀だがLINQ使えば?

36 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 16:58:39.64 ID:Sq+osQsS0.net]
てかxmlって俺らは読みやすいけどパンピーには編集不能だし
xmlって客の利点は1つもないよ
お客に「え?そのフォーマットって俺等になんの利益があるの?」
って言われてはじめて気づいたけどな
コメントもかけないし
書いても次の出力で消えるし

37 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 17:36:13.38 ID:rIeXrTmo0.net]
>>35
> コメントもかけないし
<!-- え? -->

38 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:02:37.75 ID:Sq+osQsS0.net]
>>36
ん?ユーザが書き込んだコメントを
次の出力で出せるの?

39 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:03:37.96 ID:d2+mGljV0.net]
別にxmlになったから読みやすいとか無いけど
プログラムとかライブラリが読みやすいでは?

40 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:03:41.06 ID:W8L8TXY00.net]
>>35
読みやすいかな?
そりゃ意味はわかるけど、読みやすくはないなあ。



41 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:05:20.48 ID:Sq+osQsS0.net]
>>39
プログラムから読み込み易いってこと

42 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:08:33.90 ID:QuCKjtMQd.net]
>>35
コメントは書けるだろ

43 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:11:37.65 ID:Sq+osQsS0.net]
>>41
書いたコメントを読み込めない

44 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:13:57.67 ID:QuCKjtMQd.net]
>>42
DOM使えば読み込めるよ

45 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 18:14:01.15 ID:Tz3mdNYZ0.net]
>>42
c# - XmlDocument reading XML Document comment Issue - Stack Overflow
https://stackoverflow.com/questions/6468994/xmldocument-reading-xml-document-comment-issue

46 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 19:01:25.29 ID:QuCKjtMQd.net]
xmlよりもjsonの方がかなりデータサイズが小さいからファイル保存にしても通信文にしても最近はjsonの方を使ってるわ

47 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 19:18:03.58 ID:PMIzDMsea.net]
xmlといえば@ITのC#記事でのこき下ろし方が
まるでxmlに親でも殺されたかのような書きっぷりで笑えた記憶が

48 名前:デフォルトの名無しさん mailto:sage [2019/05/19(日) 19:19:08.50 ID:rIeXrTmo0.net]
>>37
出力が何を示すのか知らんけどコメントのためのクラスもあるから適切に処理すればコメントも扱えるよ
https://docs.microsoft.com/ja-jp/dotnet/api/system.xml.xmlcomment?view=netframework-4.8

49 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 01:15:28.17 ID:ee7ewuKV0.net]
データの一時保存のためにXMLエディタみたいな機能積むのは嫌だ。
自己データの保存用のXMLなんだから不必要なタグや属性は無視したいよ。
ただ、どんな保存形式であれ不正データの発生は防ぎきれないから質問主の方針には賛成する。
不正データな時点で内容が信用できないと判断してオール初期化するのも悪手ではない。

50 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 01:26:07.42 ID:K7mtfUzra.net]
質問内容は不正データを排除する方法じゃなくて、
手動で編集されて(あるいは別の理由で)「壊れた」データからでも読める部分だけでも読めないかって話だから



51 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 03:34:53.02 ID:ittsRsgU0.net]
手っ取り早いのはシリアライズするenum型のプロパティをstring型に変更して想定値以外に編集されてもExeceptionが発生しないようにすることでしょうな

52 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 07:13:37.85 ID:h4Os3XI/M.net]
不正データを排除って言っても
> 特に enum は綴り間違うとすべてがパーになるので。
ぐらいだけなら>>50とかの対処療法でなんとかなるけどタグ名の間違いとか文字列のダブルクォーテーションの抜けとかまで言い出したらパーサーを作り直すに近いことになるからそんな所で苦労するなら>>33の言うようにツールなりを提供した方が楽

53 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 08:04:55.23 ID:WRHDTme5a.net]
属性を持たせたいならxml一択

54 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 08:07:45.04 ID:MXQiPVhxM.net]
そもそもxmlを編集する有名なツール自体がない
あってもとても一般人には触れない代物

人に編集させたいくせにあえてこのフォーマットにする意味がそもそも皆無
エクセルでも読めないし
一体どうして欲しいのか?
別の設定ツールを作るときにプログラムから読み書きがしやすいってただそれだけだろ
んでツールの提供も嫌だって言うんじゃ
メリット皆無
そもそもxmlを選択した時点で担当者は無能で死刑

55 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 09:18:28.49 ID:1dspVVtJd.net]
えくせるwww

56 名前:デフォルトの名無しさん [2019/05/20(月) 11:20:58.13 ID:g1Dx2x5o0.net]
xml は糞

57 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 15:53:54.65 ID:IYtfHjiI0.net]
以下のように非async関数proc1から、awaitが必要な関数proc3を呼び出すのに async void の関数proc2を挟んでいます。
この時、proc3/proc2のすべての処理が終わってからproc1に返ってきてほしいのですが、ログを確認すると

Enter proc2⇒Enter proc3⇒proc3 start⇒Exit proc2⇒proc3 end⇒Exit proc3
となってしまいます。

Enter proc2⇒Enter proc3⇒proc3 start⇒proc3 end⇒Exit proc3⇒Exit proc2
という順序で実行させるにはどうすれば良いのでしょうか。

private void proc1()
{
  Debug.Write("Enter proc2");
  proc2();
  Debug.Write("Exit proc2");
}
private async void proc2()
{
  Debug.Write("Enter proc3");
  if(await proc3())
  {
    foo();
  }
  Debug.Write("Exit proc3");
}
private async Task<bool> proc3()
{
  Debug.Write("proc3 start");
  await bar();
  Debug.Write("proc3 end");
  return true;
}

58 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 16:29:27.47 ID:UpaSmFYv0.net]
>>56
proc1でproc2をawait

59 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 16:48:17.44 ID:IYtfHjiI0.net]
>>57
proc1は同期メソッドなので、await proc2(); はできません。

60 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 17:25:01.51 ID:UpaSmFYv0.net]
>>58
なら、proc2.Wait()



61 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 17:25:01.60 ID:wrDP3R9n0.net]
async Task proc2()
にして
proc2().GetAwaiter().GetResult();
とか

62 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 17:58:04.54 ID:IYtfHjiI0.net]
>>59
そんなやり方があったんですね。

ただ、async void proc2() だとエラーになったので async Task proc2() に変更して希望の動作になりました。

ありがとうございます。

63 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 18:13:28.96 ID:yAZ6lWg7a.net]
イベントハンドラーなど戻り値をvoidにするしかない場所でだけ、async voidを使うべき
それ以外はasync Taskかasync Task<T>を使おう
neue.cc/2013/10/10_429.html

64 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 19:47:30.75 ID:NntmuTz60.net]
>>62
そんなのは設計や仕様、ポリシー次第。
なんでもかんでも型にはめるな

65 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 19:53:39.19 ID:Ea6E7La1r.net]
初心者スレだから自己判断しろというのは難しいかもしれんが、
有用なノウハウや定石ってのはあるんだよ

66 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 19:57:11.89 ID:yAZ6lWg7a.net]
>>63
イベントハンドラー以外に戻り値voidが必須な場面があるなら
具体例を挙げていってもらったほうがためになるんだが

67 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 20:06:27.69 ID:hMek9ucfM.net]
上級者様は自殺するか死ね

68 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 20:14:59.41 ID:NntmuTz60.net]
>>65
非同期タスクを管理する処理が別にあるとか、
サーバ間でデータ同期するけどリアルタイム性は求めず、整合性チェックも後でやるとか
俺はいろんなとこで経験したぞ。

時間のかかる処理はとにかく後回しでfire&forgetして、
目の前の処理を最優先にしたいことだってある。

「必須」とは言ってない。
状況「次第」と言っている。

実績のあるサイトがそう言ってるからと思考停止するのはやめてくれ

69 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 20:27:56.33 ID:bliI8bxJ0.net]
jpgを読み込んだbyte配列をUTF8で文字列化し、それをbyte配列に戻すと正しく復元できません

System.Text.Encoding.GetBytes(System.Text.Encoding.UTF8.GetString(bytes));

何故でしょうか

70 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 20:33:41.61 ID:nUCZI9rN0.net]
>>68
C#以前の問題
UTF-8を使ってすべてのバイナリを文字列に対応させて変換することはできない



71 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 20:43:52.08 ID:yAZ6lWg7a.net]
>>67
状況次第でasync voidを使う場合があるんだな、知らなかったありがとう

>>68
https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding#choosing-a-fallback-strategy
https://docs.microsoft.com/en-us/dotnet/api/system.text.utf8encoding#remarks
Encodingインスタンスには、文字列化出来ない場合にどうするのかを扱うDecoderFallbackプロパティがあって
Encoding.UTF8の場合はReplacement fallbackを使ってREPLACEMENT CHARACTER (U+FFFD)に変換する
だからGetString()時点でjpg中のutf-8でない部分はU+FFFDに変わるのでGetBytes()しても復元できない

72 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 20:48:37.77 ID:xhf1KGbK0.net]
>>70
最近Blazorのソース内でもasync voidを使うべきかって話をSteven先生らがしてたね
PRとそのディスカッション追っかけてみるとおもしろいよ

73 名前:デフォルトの名無しさん [2019/05/20(月) 21:09:30.64 ID:bliI8bxJ0.net]
>>69 >>70
Replacement Character に変換された時点で不可逆になるってことか
助かった。ありがとう

74 名前:デフォルトの名無しさん [2019/05/20(月) 21:15:12.88 ID:UR9kN7had.net]
どうしても文字列にしたいならbase64

75 名前:sdfasdfasdfsd [2019/05/20(月) 21:22:49.73 ID:VWEIYE4F0.net]
Visual Studio(C#)のプログラミングに関する質問です。

インクルードする2ファイルが、双方のクラスを互いに必要とするケースにおいて、
コンパイルが通らなくて困っています。(当たり前なのですが…)

【Aファイル】
クラスAの定義{
クラスBの使用(インスタンス作成、メソッド利用)
}

【Bファイル】
クラスBの定義{
クラスAの使用(インスタンス作成、メソッド利用)
}

【全体インクルードファイル】
#include Aファイル
#include Bファイル

【コンパイル結果】
Bクラスが存在しません(Aファイルにて)

【質問】
お互いにクラス定義を必要とする場合、
★具体的に★どのような実装をすれば良いのでしょうか?

76 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 21:29:41.06 ID:Bu5yaqN9a.net]
C#でインクルード?
VisualStudio/C#のバージョンはなに?

77 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 21:34:07.81 ID:CFJtADgh0.net]
>>74
とりあえず言っておくと#includeはc#じゃない
一般論で言えばAとBの機能が両方必要な部分でCを作って処理するべきだな

78 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 21:38:58.17 ID:zvO9BMGmp.net]
C++ならImplパターン的なのになりそう

79 名前:デフォルトの名無しさん [2019/05/20(月) 22:15:36.37 ID:4rJ56KmUa.net]
>>74
どういう場合にそんな設計しないといけないのかが気になる

80 名前:デフォルトの名無しさん [2019/05/20(月) 22:38:26.25 ID:VWEIYE4F0.net]
>>75
本当はC++ cliですけど、C#の方がみなさんに馴染みがあると思うので
言語差異は私が吸収するのでC#として教えてください



81 名前:デフォルトの名無しさん [2019/05/20(月) 22:39:43.45 ID:VWEIYE4F0.net]
>>76

一般論で言えばAとBの機能が両方必要な部分でCを作って処理するべきだな

ご教授ありがとうございます。これだと実装がきたなくなります。
未解決です

82 名前:デフォルトの名無しさん [2019/05/20(月) 22:41:01.38 ID:VWEIYE4F0.net]
>>77
知識不足で教習ですがImplパターンとはなんでしょうか。
ぐぐっても出てきませんでした、

83 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 22:49:57.98 ID:Bu5yaqN9a.net]
条件の後出し、質問文に虚偽か

>>80の回答でもダメなんでしょ
「C#にはincludeがないから言語仕様として>>74のようなクラスの書き方をしてもコンパイルエラーにならない」
という回答にしかならないから、貴方の知識と頑張りでC++CLIに読み替えてくれ

84 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 22:53:46.69 ID:RwQcJLUy0.net]
実装が汚いって>>74の時点で汚物まみれやんけwww

85 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 22:56:25.44 ID:5mAsU23+0.net]
私は貴方のお母さんではありません

86 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 23:04:19.27 ID:XzV4NN/g0.net]
頭の中もさぞかしゲロまみれであろう

87 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 23:05:45.37 ID:Cm4lSS/q0.net]
マルチポストで上から目線ってすげーな
全体インクルードファイルとかいうもん作るのになんで実装が汚いなんて拘るのかも意味不明
君の思う綺麗な実装なんてなんで他の誰かが気にしなきゃいけないのw

88 名前:デフォルトの名無しさん mailto:sage [2019/05/20(月) 23:11:16.82 ID:0XbNrzL70.net]
どっちの画面からも
お互いの画面を呼び出す仕様を素直に作っちゃうとそうなるな
今は無意識にそういうの避けてるだけで
あるはあると思う
辻褄が合うように頑張るしかない

89 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 00:21:42.93 ID:7ZZvuA7z0.net]
インターフェース使えばできると思うが、オススメはしないな

90 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:09:08.10 ID:M9GsAJ+k0.net]
C++の方にはすぐ回答出てたけど前方参照するだけの話
トリッキーでも何でもなくちょっとした規模の開発なら余裕で出てくる基礎的な内容
C++ 相互 参照 あたりでググればいくらでも記事は出てくる
そんな基礎的な内容を知らないのになぜか上から目線



91 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:39:01.98 ID:CAN2Js5F0.net]
>>89
それで回避していいならc#も同じじゃねっけ?

92 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 01:40:43.20 ID:CAN2Js5F0.net]
ただ、一部の人間からはウンコ認定されるってだけ

93 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 06:42:05.09 ID:tdstqwiHM.net]
そういう経験ない人からの認定なんてどうでもよくね?

94 名前:デフォルトの名無しさん mailto:sage [2019/05/21(火) 07:08:14.10 ID:meTEBfC3M.net]
組み方によって回避できるよ多分

95 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 00:05:54.67 ID:uN3Dm6wF0.net]
普通にC#のプロジェクトならそのAクラスもBクラスもコンパイルエラーにはならんのじゃねえの?
言語差異を吸収するってなら、全体インクルードファイルってのをC#に置き換えてから質問しろよ

96 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 01:20:47.85 ID:rbGbzH6ha.net]
率直に思ったこと。

少なくとも俺には件の質問者が上から目線で物を言っているようには聞こえない
むしろ質問に正面から答えずに言い掛かりをつけてる連中の方がよほど上から目線で頭がオカシイ

97 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 02:15:27.63 ID:HqRLK9QX0.net]
そうか、そういうのはママにお話してあげてな生ゴミくん

98 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 03:42:23.27 ID:sEhyUb960.net]
>>95
俺もそう思う

99 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 06:16:41.31 ID:t1pLQv560.net]
>>95
>>79辺りは人によっては上から目線と取る人がいるかもな
あと>>86が書いてるようにマルチポストだしそもそも言語(C++/CLI)を後出しするとか質問のしかたも色々おかしいとは思う

100 名前:デフォルトの名無しさん mailto:sage [2019/05/22(水) 08:35:59.17 ID:PRmXlAdaa.net]
上から目線で、というのは>>96みたいなのを指すんだろ








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef