ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:12:11.06ID:Ej7G00WU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
0750デフォルトの名無しさん
垢版 |
2017/10/04(水) 16:25:32.68ID:eKN2AIaa
>>748
大域的な設計はトップダウンで考えよう
例えば、現在表示しているページのURLを管理するクラスがあって、
フォームはその内容を画面に反映させる&ページ遷移時に新しいURLを管理クラスに伝えると考えればいい
管理クラスはUIの細かいことを気にせずに状態の管理と保存・復帰だけを考えればいいし、
フォームは管理クラスの状態と同期するだけでいい
0751デフォルトの名無しさん
垢版 |
2017/10/04(水) 17:53:53.15ID:inVVPc+t
>>750
ありがとうございます。話を自分なりに理解するとタブ現在表示しているUrlを別クラスPageページクラスが持ち
Pageクラスを内包したPageListクラスでファイルへの保存・復帰処理を行い、Formクラスでインスタンスを持ちTabControlに渡し、
各タブで何を表示するかのコントロールはTabControlで行おうと思うんですが、こういう感じですか?
0753デフォルトの名無しさん
垢版 |
2017/10/04(水) 18:07:50.98ID:ZH15U2S2
>>751
全体の構造が憶測でしかわからないのに「これでいいですか」って聞かれても困ると思う
タブコントロールの各タブにPageListとかがぶら下がっていてそこを選択して表示するとかなんだろうけど
質問の仕方から見ても自分でもまとめられていないようだし、まず動くもの作ってから拡張していけば?
0756デフォルトの名無しさん
垢版 |
2017/10/04(水) 20:35:25.42ID:i6quWUAT
プロパティってgetset関数毎回書くのアホらしいので省略しませんか?ってのかと思ってましたけど、レス読んでると他に意味があるんでしょうか?
浅い知識しかないので気になりました
0757デフォルトの名無しさん
垢版 |
2017/10/04(水) 20:44:18.31ID:0TdBJUYX
>>756
>>745に書いてあるようにメソッドのように扱える
必要ないのならpublicとかinternalとかの変数にして好きにしたらいいと思う
0758デフォルトの名無しさん
垢版 |
2017/10/04(水) 21:14:51.00ID:ULvxLO80
>>756
書くのが面倒って言うより、ゲッターとセッターは
オブジェクト指向におけるオブジェクトの属性って概念の素直な表現になってないのが
美しくないというか、直感的じゃないよね
0759デフォルトの名無しさん
垢版 |
2017/10/04(水) 21:53:15.88ID:D0l3uaQA
データクラスを除けば、最近は作ったプロパティの大半が読み取り専用だわ
セッターいらね
0760デフォルトの名無しさん
垢版 |
2017/10/04(水) 22:33:20.23ID:X/chSHNo
>>751
current urlのコレクションを管理するクラスを自前で作って、そのコレクションをシリアライズ/デシリアライズするイメージだよ
>>750はわかりやすく書いてくれてると思うぞ

current urlのコレクションはMVCのModel
Viewに依存すべきじゃない
0761デフォルトの名無しさん
垢版 |
2017/10/04(水) 22:37:19.76ID:inVVPc+t
イベント実装しようとしていますが難しいですね
全然勉強してこなかったことが身にしみてきます
0762デフォルトの名無しさん
垢版 |
2017/10/04(水) 23:32:25.16ID:inVVPc+t
自分でイベントを書くときに思ったのですが、
イベントを発生させるときは、そのイベントがnullではないことを確認するのはなぜでしょうか?
0763デフォルトの名無しさん
垢版 |
2017/10/05(木) 00:08:10.31ID:kvz6wfH4
例外になるから

nullチェックを避けるために何もしないラムダ式を登録しておく方法もあるけど、
なんか馬鹿くさいのは確かだね

VBみたに専用ステートメン用意した方がよかったかも。
でもこのVB方式はカスタムイベントで問題が出るそうだけど
0764デフォルトの名無しさん
垢版 |
2017/10/05(木) 00:20:49.58ID:w76cxVZ0
今は ?. があるからどうでもいい
ソースでイベントでnullチェックしてたら古いソースなんだなと思う

そうnullチェックは昔話
0766デフォルトの名無しさん
垢版 |
2017/10/05(木) 07:15:53.39ID:gKycoOZO
業務システムなんですが、今どきeachでもないfor文の多重ループ書く人って流石にマズいですか

それとも普通でしょうか

他人の四重ループを見て世間ではどうなのだろうと思いまして
0767デフォルトの名無しさん
垢版 |
2017/10/05(木) 07:25:17.32ID:lN/7t8RB
>>766
ixyzとかあると簡単に4重ループできるぞ
どうやって回避するんだ?
i=オブジェクト数、x方向、y方向、z方向
ってなってたら俺はこのままのがいいと思うが?

多重ループの数でPGの実力見ようとしてるお前がキチガイ過ぎてどうにもw
0769デフォルトの名無しさん
垢版 |
2017/10/05(木) 08:51:15.85ID:nBCW+G24
名前の隠蔽とオーバーライドの違い・意義について教えていただきたいです

名前の隠蔽: 同じ名前のメソッドを派生先で作ると基本クラスの同名メソッドは見えなくなる

オーバーライド: 派生先でオーバーライドメソッドを定義することによりインスタンス化したオブジェクトの基本クラスの内容を書き換えること

ということで間違いないですか?
オーバーライドメソッドのこの「インスタンス化した後に内容を変更する」というのが多態性であるとネットであったのですが名前の隠蔽で様々なメソッドを定義して使うのは多態性に当たらないのですか?どうしてもこの違いだけわかりません
どなたかお願いします(><)
0770デフォルトの名無しさん
垢版 |
2017/10/05(木) 08:52:36.97ID:lN/7t8RB
状況によるよ
多重ループ避ける程度でいちいち意味不明なメソッド作られても困る
0773デフォルトの名無しさん
垢版 |
2017/10/05(木) 11:22:55.40ID:URIOD7FQ
>>766
本当に四重ロープが必要な処理で
最適化した結果ならしょうがない
個人的には業務システムでそう言う状況に出会ったことはないが
0774デフォルトの名無しさん
垢版 |
2017/10/05(木) 11:30:16.11ID:Bb6+6uGp
>>769
多態って何だ?みたいな哲学論(笑)は後回しにして機能的な違いだけに注目した方がいいよ。

http://www.atmarkit.co.jp/ait/articles/0209/11/news001.html
↑の記事にある通り、隠蔽の場合はインスタンスとそのインスタンスの入っている変数の型が一致している
場合のみ隠蔽したメンバーが呼ばれるのがオーバーライドとの違い

上の記事、オーバーライドより隠蔽を使うのが普通って言ってるような印象を受けるけど
実際は逆だからそこは勘違いしない方がいいよ

隠蔽はベースクラスの設計がおかしい場合の回避策みたいな感じでしか使われないと思う。
だからとりあえずはオーバーライドだけ覚えれば問題ない
0781デフォルトの名無しさん
垢版 |
2017/10/05(木) 23:14:11.64ID:Xseher3k
Console.WriteLine(“”);
string = Console.ReadLine();
の意味がわからんな。Console.ReadLineをstringに代入する所とか
0783デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:39:00.40ID:HTxWyqCb
>>781
Console.ReadLine()で処理した結果の文字列を
stringという名前の変数に代入してる
name = Foo.GetName()と同じ
0784デフォルトの名無しさん
垢版 |
2017/10/06(金) 00:44:39.70ID:BZdgO6jG
さすがにそれは説明せんでもいいやろw
0785デフォルトの名無しさん
垢版 |
2017/10/06(金) 01:04:12.92ID:HTxWyqCb
>>784
そうかな? わかってたら「Console.ReadLineをstringに代入する所」なんて書き方しないと思うんだが
0786デフォルトの名無しさん
垢版 |
2017/10/06(金) 06:57:53.28ID:R65vFnX0
>>781
1行目:画面に1行空行を書き込む
2行目:ユーザーの入力を受け取り、Enterが押される(=改行)と、その1行を変数stringに格納
0787デフォルトの名無しさん
垢版 |
2017/10/06(金) 06:59:00.06ID:/+rBbbka
Form1のlowLayoutPanelに他のクラスからボタンを追加したい
という場合には
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1434882684
この内容を理解すれば良いのでしょうか?
0788デフォルトの名無しさん
垢版 |
2017/10/06(金) 07:21:39.66ID:/+rBbbka
ごめんなさい。とりあえず別の方法でお茶濁して解決しました
まだ↑のは理解が及びません
0791デフォルトの名無しさん
垢版 |
2017/10/06(金) 09:44:09.73ID:386xmGqT
>>762
なるほどです、イベントの中がNullの場合発生させないということなのですね
あと自分でイベントを定義するときInvokeメソッドを呼ぶのはなぜでしょうか?
0792デフォルトの名無しさん
垢版 |
2017/10/06(金) 10:14:27.91ID:UT/zOTND
拝む為さ。
0793デフォルトの名無しさん
垢版 |
2017/10/06(金) 10:41:08.98ID:R+OFu5Ep
>>791
>>792 も言ってるようにお祈りおまじないの部類。invoke無くても同じ。
UIスレッドで実行するためのcontrol.invokeとは別もん。
0794788
垢版 |
2017/10/06(金) 11:33:07.23ID:/+rBbbka
>>790
ありがとうございます

https://ideone.com/76njZo

public FlowLayoutPanel flowLayoutBase = new FlowLayoutPanel();
とForm1外に持ち出して、ボタン生成用のクラスをFrom1の継承クラスにしてもボタン現れず
で、こういうことじゃないだろう…ということで色々やってみて

外部クラスからインスタンス参照というのを参考に
https://ideone.com/TFCiQp
こんな形のメソッドに纏めて、そこを外部クラスから参照しようとするも、どう参照するのか…
恐らく何か的はずれなことしてると思いますが、何が駄目なんでしょうか?

よろしくお願いします
0795デフォルトの名無しさん
垢版 |
2017/10/06(金) 11:38:08.44ID:Pjx+vQ2Q
>>791
?.演算子を使いたいから
デリゲートを呼ぶときは普通はInvokeは省略してaction()のように書くけど、
nullのとき何もしたくない場合にClick?.()みたいな書き方はできないから、仕方なくInvokeを明示的に書いてる
0796デフォルトの名無しさん
垢版 |
2017/10/06(金) 11:46:30.70ID:kruj0zmW
windows form 上にIPカメラ(AXIS製)の動画を表示したいです。
どうすればよいでしょうか?

OpenCVとか使うのが一般的なのでしょうか?
環境的に、社外ソフトをインストールし辛いので、確証を得てから試したいと思っています。

dllを配置するだけのmjpegprocessorとかは違うのかな?

調べる手がかりでも教えてもらえればありがたいです。
0798デフォルトの名無しさん
垢版 |
2017/10/06(金) 12:22:26.38ID:/+rBbbka
単純なテストで使い方を学ぶ段階なので、FlowrayoutpanelをForm_Load()の中で作るのが自然だと思ったからですが…なにか変ですか?
Form1にあるFlowrayoutpanelに外部クラスからボタン設置する方法を色々試してるので…
Flpset呼ばないとパネル無い状態ですし…
Flowrayoutpanelに外部クラス(ButtonRayout)から使うためにFlpsetを作った感じです(色々的外れかもしれませんが)
まだ色々よく分かっていないので、頓珍漢なことになってるとは思いますがすみません
0802デフォルトの名無しさん
垢版 |
2017/10/06(金) 13:22:30.01ID:/+rBbbka
>>801
ありがとうございます
Form1_Lordがタダのイベント(メソッド)だったというの、頭からすっかり飛んでました
今は時間無いので別クラスからControl配置は試せませんが、あとで色々やってみます
とりあえず、外に持ち出してpublicは適応できて、前と変わらぬ作動は出来ました
0804デフォルトの名無しさん
垢版 |
2017/10/06(金) 14:28:37.52ID:UQfFYJO/
ロケールが日本語環境のところで
指定された国コード(ISO)を指定された言語で表示させるには
どうしたらいいでしょうか。

string CountryName = GetCountryName("CN", "ko-kr");

という風に呼んだとき、中国という文字を韓国語で得たいのです。

public string GetCountryName(string CountryCode, string language)
{
  // この中
}

CNのRegionInfoを取得するところまでは出来たんですが、
DisplayName だと日本語で、NativeName だと中国語で、それぞれ取れるのですが
韓国語に変換させたいのです。

Windowsのロケール自体を韓国に変更すれば、DisplayNameで韓国語が取れましたが
それはやりたくないです。
0805デフォルトの名無しさん
垢版 |
2017/10/06(金) 14:57:21.64ID:BnWE0qO1
やったことないけど
Application.CurrentCultureか
Thread.CurrentThread.CurrentCultureを変えるのは?
0806デフォルトの名無しさん
垢版 |
2017/10/06(金) 15:35:24.88ID:vlZuL3bi
MSDNにはCurrentUICultureの方だって書いてあるね。
システムが持ってるリソースから拾ってくるんだろうからまあそうでしょう
0808デフォルトの名無しさん
垢版 |
2017/10/06(金) 16:12:02.05ID:+xC3oUH1
当たり前だけど韓国語とかの表示させる言語の言語パック入ってなかったらどうにもならない
0809デフォルトの名無しさん
垢版 |
2017/10/06(金) 17:25:14.70ID:UQfFYJO/
> CNのRegionInfoを取得するところまでは出来たんですが、
のところを補足します。

var CountryCode = "CN";
var CountryName = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.SpecificCultures)
  .Where(a => a.TwoLetterISOLanguageName.Equals(CountryCode, StringComparison.CurrentCultureIgnoreCase))
  .First().DisplayName;
return CountryName;

で、実行ロケールでの(日本語での)「中国」は取れました。
んで、どこへ "ko-kr" を挟み込めば良いのかが分かりません。

> Application.CurrentCultureか
> Thread.CurrentThread.CurrentCultureを変えるのは?

そーいう力技しかないのかなぁ・・・
0811デフォルトの名無しさん
垢版 |
2017/10/06(金) 17:44:13.26ID:vlZuL3bi
>>809
その「力技」もやってみたけど確かに出来ないね
普通に自分でテーブル用意した方が早い気がする
0813デフォルトの名無しさん
垢版 |
2017/10/06(金) 18:51:07.05ID:uoobo3tb
仕様がない
0814デフォルトの名無しさん
垢版 |
2017/10/06(金) 19:21:44.67ID:0wz1FkX0
>>794
入れ子にしたメソッドがエラーにならないのを初めて知ったw
使い道が思いつかないけどw
0815デフォルトの名無しさん
垢版 |
2017/10/06(金) 19:45:45.19ID:UQfFYJO/
>>810-811
元号もそうだけど、この手のはなるべくFrameworkに任せてしまいたいのです。
国が増えるたびにメンテなんてやりたくない・・・
(Frameworkが更新されるはずだから、それに依存したい)
0819デフォルトの名無しさん
垢版 |
2017/10/06(金) 19:59:49.34ID:vlZuL3bi
>>815
ない袖は振れないし仕方ないかと。
まあ普通に考えて想定された使い方と違うんだろうね

日付や数値のフォーマットはデフォでいろんな地域のが入ってるみたいだから
ついでに国名ぐらいサービスしてくれてもいいような気がしないでもないけど
0821デフォルトの名無しさん
垢版 |
2017/10/06(金) 20:06:57.34ID:XI0GFWBX
>>818
ごめん、知らんわ。
いつの間にpascal見たいな事ができる様に成ったんだ。
勉強不足でスマヌ。
Func、Actionで間に合ってた。死んでお詫びします。
0823デフォルトの名無しさん
垢版 |
2017/10/06(金) 23:08:48.64ID:386xmGqT
>>750
すいません、考えたのですが設計できません
データを管理するクラスを作り、UIが持っているUrlプロパティをFormが同期させるのはわかっていますが、タブの並び替えを実装しているので頭が混乱してしまいます
トップダウン設計で今までTabControl以下で持っていたTabPage変数と、TabPage以下で持っていたWebBrowser変数をFormに持ってきたのですがわけがわからなくなってしまいました
何をどこで持つべきなのかわからなくなってしまいパニックな状況です、設計ってかなり難しく感じています
0827デフォルトの名無しさん
垢版 |
2017/10/07(土) 10:24:35.11ID:34mGSqzO
C#はレガシーになりつつあるけど
拡張してなんとなく新しく見せてる

ここから新しく見せるのは無理かな
0828デフォルトの名無しさん
垢版 |
2017/10/07(土) 10:42:43.38ID:b4KK/o19
JavaとKotlinの関係のように新しい言語に乗り換えるべきだろうね
最近の歪な言語仕様拡張には辟易するよ
0832デフォルトの名無しさん
垢版 |
2017/10/07(土) 12:06:27.83ID:ky0kCJyY
>>831
EntityFrameworkとLINQ to Entitiesでググってこい
LINQは単に、いろんなデータソース(DB、配列、リスト、xml)に対する処理を同じようにかける枠組み
0839デフォルトの名無しさん
垢版 |
2017/10/08(日) 19:11:25.29ID:fHcFBAaS
今現在使っているタブ型WebBrowserでTreeView使ってJaneみたいなブックマーク機能を取り入れたいんですが、
フォルダとファイルのツリー構造を実現するクラスが思い浮かびません、どのようなクラスを作ればよいでしょうか?
0844デフォルトの名無しさん
垢版 |
2017/10/08(日) 22:34:55.91ID:jXMyRhU9
c#erの皆さんがこれだけは覚えていて損はないって言語なんですか?CとC++以外で
0846デフォルトの名無しさん
垢版 |
2017/10/08(日) 22:48:37.70ID:D0Vtmcpk
>>844
javascriptはクソだけど使う機会が多いので覚えたほうがいいと思う
しかも文法じゃなくてどういう風に使ってるかも含めて覚えたい

あとはpython
文字列など扱うとき便利
0850デフォルトの名無しさん
垢版 |
2017/10/08(日) 22:56:59.48ID:FNqA9s92
つphp

掲示板ってどうやって作るんですかぁ?
って聞いてくる可愛い女の子に教えられる
■ このスレッドは過去ログ倉庫に格納されています

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