TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
35歳、発達障害のB型作業所通いですが 6
プログラム板自治スレッド その16
ExcelVBAで勤務表を作ろう
初心者の俺が初めて覚えるプログラム言語
Perlについて
[RPA]PC自動化技術総合スレ[効率化] Part.5
シェルスクリプト総合 その28
今まで見た中で一番すげーコメント
リファクタリングをただのコード修正と思ってる人へ
プログラミングのお題スレ Part16

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


1 :2019/05/16 〜 最終レス :2019/07/16
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.2ch.sc/test/read.cgi/tech/1492818720/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part142
https://mevius.2ch.sc/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
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2 :
・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 :
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 :
DataTableにSelectを使うとき、

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

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

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

6 :
e.Data.GetData(DataFormats.FileDrop)
ドラッグエンターされたファイルのファイル名を取得したいのですが、
wpfだとfiledropのインテリセンスが出ません
方法が変わっているとしたら、参考ページを教えてください
エクスプローラのような表示がしたいのです

7 :
ダッセw

8 :
>>5
あるよ

9 :
>>5
winupdate関連ならこういうのとか?
https://qiita.com/CodeOne/items/22004635d3c7cc533e5e

10 :
>>9
あーなんかコレっぽいな
PNGがずれたんじゃなくてフォーム自体が横伸びしたのか
ありがとう

11 :
>>4
SQLインジェクションはエスケープされないクォートを混ぜてやるものだから
あんたの思い過ごしだよ

12 :
>>4
Ruby, PHP などのフレームワークで使う、
place holder みたいに、値だけを安全にはめ込むやつだろ

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

13 :
wpfのリファレンスってどこにあるんですか?
特にないのですか?

14 :
>>13
ちょうど専用スレが立ったっぽいから、そっち行ったほうがいいんじゃない?
http://mevius.2ch.sc/test/read.cgi/tech/1557960752/l50

15 :
↑どうも 了解です

16 :
イベントというのはすべて
mainwindow.xaml.cs
に追加されるんですか?

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

17 :
設定用のクラスを XmlSerializer を使ってファイルに保存しています。
デシリアライズ時に例外が起きた時、とりあえず今はあきらめて新たにクラスを初期値で生成するようにしています。
このとき、せめて例外が発生した変数だけ初期値にするとかの対処をしたいのですが、どのようにすればいいのでしょうか。

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

18 :
>>17
だったら設定値編集するツールでも作れ

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

19 :
>>17
それC#というか設計の問題に見える
要素ごとにチェックして例外を検出したところだけ差し替えるって泥臭い方法しか無いんじゃね

20 :
まあSAX系のParser使えば済むだろ
XmlSerializerはガタガタ文句を言わない奴が使うもんだ

21 :
設定ファイルとして使うならJSONの方がユーザーが扱いやすいよ

22 :
>>21
あれ、編集できる猛者はバイナリでもやってくれそう

23 :
jsonもxmlも手作業で編集させない前提じゃないと無理だと思う
あえてやる人は自己責任で放置

24 :
>>17
適当だけどシリアライズする時にいじられる可能性があるファイルとは別にバックアップファイルも作っておけば?
失敗したらバックアップファイルから読み込むとか

25 :
どうも、色々有り難うございます。
やっぱりかゆいところに手が届くようにするには全部自分でヤるしかないんですねえ。

>>24
一応それだけはやってます。

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

26 :
>>25
ini使うんだったらJSONの方が使い勝手いいよ
JSON.NETで簡単にシリアライズできるし

27 :
結局、key valueだったらjsonだわな。

28 :
CSVならエクセルで開けんで?

29 :
ini ファイルは古い。
XML, JSON, YAML, CSV

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

30 :
ini (プロファイル)よりCSVの方が古い
件について小一時間

SuperCalc形式だものね

31 :
jsonってコメント書けるの?

32 :
書けないンゴ

33 :
今更だけど>>17はすげえ面白い発想だなw
この発想はなかった

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

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

34 :
>>4
亀だがLINQ使えば?

35 :
てかxmlって俺らは読みやすいけどパンピーには編集不能だし
xmlって客の利点は1つもないよ
お客に「え?そのフォーマットって俺等になんの利益があるの?」
って言われてはじめて気づいたけどな
コメントもかけないし
書いても次の出力で消えるし

36 :
>>35
> コメントもかけないし
<!-- え? -->

37 :
>>36
ん?ユーザが書き込んだコメントを
次の出力で出せるの?

38 :
別にxmlになったから読みやすいとか無いけど
プログラムとかライブラリが読みやすいでは?

39 :
>>35
読みやすいかな?
そりゃ意味はわかるけど、読みやすくはないなあ。

40 :
>>39
プログラムから読み込み易いってこと

41 :
>>35
コメントは書けるだろ

42 :
>>41
書いたコメントを読み込めない

43 :
>>42
DOM使えば読み込めるよ

44 :
>>42
c# - XmlDocument reading XML Document comment Issue - Stack Overflow
https://stackoverflow.com/questions/6468994/xmldocument-reading-xml-document-comment-issue

45 :
xmlよりもjsonの方がかなりデータサイズが小さいからファイル保存にしても通信文にしても最近はjsonの方を使ってるわ

46 :
xmlといえば@ITのC#記事でのこき下ろし方が
まるでxmlに親でも殺されたかのような書きっぷりで笑えた記憶が

47 :
>>37
出力が何を示すのか知らんけどコメントのためのクラスもあるから適切に処理すればコメントも扱えるよ
https://docs.microsoft.com/ja-jp/dotnet/api/system.xml.xmlcomment?view=netframework-4.8

48 :
データの一時保存のためにXMLエディタみたいな機能積むのは嫌だ。
自己データの保存用のXMLなんだから不必要なタグや属性は無視したいよ。
ただ、どんな保存形式であれ不正データの発生は防ぎきれないから質問主の方針には賛成する。
不正データな時点で内容が信用できないと判断してオール初期化するのも悪手ではない。

49 :
質問内容は不正データを排除する方法じゃなくて、
手動で編集されて(あるいは別の理由で)「壊れた」データからでも読める部分だけでも読めないかって話だから

50 :
手っ取り早いのはシリアライズするenum型のプロパティをstring型に変更して想定値以外に編集されてもExeceptionが発生しないようにすることでしょうな

51 :
不正データを排除って言っても
> 特に enum は綴り間違うとすべてがパーになるので。
ぐらいだけなら>>50とかの対処療法でなんとかなるけどタグ名の間違いとか文字列のダブルクォーテーションの抜けとかまで言い出したらパーサーを作り直すに近いことになるからそんな所で苦労するなら>>33の言うようにツールなりを提供した方が楽

52 :
属性を持たせたいならxml一択

53 :
そもそもxmlを編集する有名なツール自体がない
あってもとても一般人には触れない代物

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

54 :
えくせるwww

55 :
xml は糞

56 :
以下のように非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;
}

57 :
>>56
proc1でproc2をawait

58 :
>>57
proc1は同期メソッドなので、await proc2(); はできません。

59 :
>>58
なら、proc2.Wait()

60 :
async Task proc2()
にして
proc2().GetAwaiter().GetResult();
とか

61 :
>>59
そんなやり方があったんですね。

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

ありがとうございます。

62 :
イベントハンドラーなど戻り値をvoidにするしかない場所でだけ、async voidを使うべき
それ以外はasync Taskかasync Task<T>を使おう
http://neue.cc/2013/10/10_429.html

63 :
>>62
そんなのは設計や仕様、ポリシー次第。
なんでもかんでも型にはめるな

64 :
初心者スレだから自己判断しろというのは難しいかもしれんが、
有用なノウハウや定石ってのはあるんだよ

65 :
>>63
イベントハンドラー以外に戻り値voidが必須な場面があるなら
具体例を挙げていってもらったほうがためになるんだが

66 :
上級者様は自RるかR

67 :
>>65
非同期タスクを管理する処理が別にあるとか、
サーバ間でデータ同期するけどリアルタイム性は求めず、整合性チェックも後でやるとか
俺はいろんなとこで経験したぞ。

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

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

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

68 :
jpgを読み込んだbyte配列をUTF8で文字列化し、それをbyte配列に戻すと正しく復元できません

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

何故でしょうか

69 :
>>68
C#以前の問題
UTF-8を使ってすべてのバイナリを文字列に対応させて変換することはできない

70 :
>>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()しても復元できない

71 :
>>70
最近Blazorのソース内でもasync voidを使うべきかって話をSteven先生らがしてたね
PRとそのディスカッション追っかけてみるとおもしろいよ

72 :
>>69 >>70
Replacement Character に変換された時点で不可逆になるってことか
助かった。ありがとう

73 :
どうしても文字列にしたいならbase64

74 :
Visual Studio(C#)のプログラミングに関する質問です。

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

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

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

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

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

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

75 :
C#でインクルード?
VisualStudio/C#のバージョンはなに?

76 :
>>74
とりあえず言っておくと#includeはc#じゃない
一般論で言えばAとBの機能が両方必要な部分でCを作って処理するべきだな

77 :
C++ならImplパターン的なのになりそう

78 :
>>74
どういう場合にそんな設計しないといけないのかが気になる

79 :
>>75
本当はC++ cliですけど、C#の方がみなさんに馴染みがあると思うので
言語差異は私が吸収するのでC#として教えてください

80 :
>>76

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

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

81 :
>>77
知識不足で教習ですがImplパターンとはなんでしょうか。
ぐぐっても出てきませんでした、

82 :
条件の後出し、質問文に虚偽か

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

83 :
実装が汚いって>>74の時点で汚物まみれやんけwww

84 :
私は貴方のお母さんではありません

85 :
頭の中もさぞかしゲロまみれであろう

86 :
マルチポストで上から目線ってすげーな
全体インクルードファイルとかいうもん作るのになんで実装が汚いなんて拘るのかも意味不明
君の思う綺麗な実装なんてなんで他の誰かが気にしなきゃいけないのw

87 :
どっちの画面からも
お互いの画面を呼び出す仕様を素直に作っちゃうとそうなるな
今は無意識にそういうの避けてるだけで
あるはあると思う
辻褄が合うように頑張るしかない

88 :
インターフェース使えばできると思うが、オススメはしないな

89 :
C++の方にはすぐ回答出てたけど前方参照するだけの話
トリッキーでも何でもなくちょっとした規模の開発なら余裕で出てくる基礎的な内容
C++ 相互 参照 あたりでググればいくらでも記事は出てくる
そんな基礎的な内容を知らないのになぜか上から目線

90 :
>>89
それで回避していいならc#も同じじゃねっけ?

91 :
ただ、一部の人間からはウンコ認定されるってだけ

92 :
そういう経験ない人からの認定なんてどうでもよくね?

93 :
組み方によって回避できるよ多分

94 :
普通にC#のプロジェクトならそのAクラスもBクラスもコンパイルエラーにはならんのじゃねえの?
言語差異を吸収するってなら、全体インクルードファイルってのをC#に置き換えてから質問しろよ

95 :
率直に思ったこと。

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

96 :
そうか、そういうのはママにお話してあげてな生ゴミくん

97 :
>>95
俺もそう思う

98 :
>>95
>>79辺りは人によっては上から目線と取る人がいるかもな
あと>>86が書いてるようにマルチポストだしそもそも言語(C++/CLI)を後出しするとか質問のしかたも色々おかしいとは思う

99 :
上から目線で、というのは>>96みたいなのを指すんだろ

100 :
レスが真矢みきの声で再生されるから、
痛いとも思わん。

むしろご褒美


100〜のスレッドの続きを読む
Win32API質問箱 Build126
Javaはもう死んだの?
Git 16
仮想環境コンテナ総合スレ Docker、Vagrant等
C++/TemplateMetaProgramming
☆★Java質問・相談スレッド182★★
ATL/WTL Part7
Smalltalk総合 Squeak Pharo
自動巡回ソフトというものを作ってみたい
C++でXML(主にxerces)やろう!
--------------------
【JR西】必 殺 15`徐行4【遅いんじゃゴルァ】
【東京】「瞳に写った景色」から女性の自宅特定(ストビューで照合)=地下アイドルの女性を襲った男
D'ERLANGER Part67
コードギアス 復活のルルーシュ 雑談スレ★89
日立GPってどうよ
【FEZ】ファンタジーアースゼロ L鯖ネツァワル晒しスレ 08
ギター初心者スレ 27 ●雑談相談質問●
スカウトについて6回目
【朝鮮日報】 少女像設置めぐり弘益大・周辺商店主ら反発「日本との交流に支障」 [03/01]
[廃止]各路線で一番ウザイ駅[通過]
仲村トオルの待たせてゴメン
握手会の様子見るかぎり堀ちゃんより美月&よだっちょの方が人気あるんだね
★旧帝卒、修士まで取ったけれど、ニート。質問ある?
【PSO2】PHANTASY STAR ONLINE2【30663】
【あさイチ】有働由美子 その14【100年インタビュー】
愛知県一宮市の固定資産税が高過ぎる
【yokomo】 MR-4TC BD5 【ヨコモ】
6/14以降のチケット転売業界について語ろう5
妖精萌え755
【画像】小1の教科書袋の言葉が「恩着せがましい」とツイッターで話題に・・・ [998671801]
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼