X



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

■ このスレッドは過去ログ倉庫に格納されています
2017/10/09(月) 19:00:56.93ID:Y4203ffV0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part131
http://mevius.5ch.net/test/read.cgi/tech/1504861931/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://mevius.5ch.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/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/10/28(土) 17:13:47.24ID:i6LcJWfh0
>>574
そのメソッドが所属するクラスにはプロパティorメンバー宣言出来ないって書いてあるかな?
2017/10/28(土) 17:19:01.18ID:EvuLUtue0
1行挿入したらそれ以降の行を全部更新しないといけないけど
そういう心配は不要な使い方なの?
2017/10/28(土) 17:42:01.52ID:m7p7dboTa
>>575
手を動かす(コードを書き始める)前によく考えなかったツケとしか言いようがないね
修正箇所が多いことは間違った設計を正当化する理由にはならんでしょう。

>>576
拡張メソッドの実体はただの静的メソッドなので基本状態を持てませんw

thisをキーにするDictionaryでも持てばやってできないこともないだろうけど、
努力の方向が間違ってる感が半端ない
2017/10/28(土) 18:19:38.89ID:ot1H0tr20
>>576
>実際に、拡張メソッドは、それらが拡張している型のプライベート変数にはアクセスできません。
>>574のこの部分だな
宣言できても外部から使えない
2017/10/28(土) 18:42:13.42ID:Ei3q78sJ0
なぜ諦めろと言えないのか
2017/10/28(土) 18:48:53.63ID:LD30atSwM
intに行番号追加したいと言ったらアホかで終わる
stringだとなぜアホかでおわらないのかな
2017/10/28(土) 18:54:17.52ID:rXHf5Axha
>>581
00001(*゚∀゚)using system;
00002(*゚∀゚)using unko;
00003(*゚∀゚)using chinko;

デリミタ(*゚∀゚)

みたいな
2017/10/28(土) 18:55:16.39ID:rXHf5Axha
ごめん
やっぱアホやと思う
2017/10/28(土) 19:15:45.09ID:rZWSN5VzM
>>581
OOPでは文字列というかプリミティブ型をそのまま使う方が間違い
行という概念が対象とする業務にあるならそういうクラスを作る
2017/10/28(土) 20:14:28.12ID:X1c8HG7Y0
とりあえずstringと暗黙に相互変換できるクラス作ればいいんじゃね
2017/10/28(土) 20:49:55.33ID:WUINebrs0
>>570
継承(is-a)じゃなくて包含(has-a)にすべきパターン
2017/10/28(土) 21:14:06.22ID:EvuLUtue0
>>575
>いたる所に行番号やらが必要になったstring変数

この「行番号やら」とstring変数の用途というか使用目的は?
2017/10/28(土) 21:16:11.03ID:lTHigkwZr
>>586
素直に委譲するべきですな
継承してstringの全メソッドを公開してしまうアホさ加減が理解出来ない人多いよねw
2017/10/28(土) 21:35:30.21ID:m7p7dboTa
>>586
>>588
この質問者のケースは単なる設計ミス(というよりあまりに思慮が足りない)だけであって
継承かコンポジションかの対立じゃありませんw
2017/10/28(土) 22:59:54.69ID:rZWSN5VzM
設計ミスの原因は値オブジェクトの作成をサボったこと
2017/10/29(日) 01:41:15.85ID:niGJJWdU0
Form1のコントロールに他クラスからアクセスするとき、VB.NETだと
Form1.DataGridView1.〜
のようにアクセスできたけど、C#は同じようにできなかった
https://teratail.com/questions/36464
ここのページのように実装したけど、みんなはどうしてる?
592デフォルトの名無しさん (ワッチョイ d98a-5+y+)
垢版 |
2017/10/29(日) 01:56:06.10ID:9lQAHngl0
>>591
いやできるけど
2017/10/29(日) 02:40:31.76ID:WQc+sGcxa
>>591
C#だとデフォフトのアクセスレベルがprivateになってる(VBはpublic)から
これをpublicとかに変更してやればできる。(デザイナのプロパティグリッドだとデザイン/Modifier)

でもやるな。
コントロールを外から操作したいなんて99%考え方が間違ってる。
2017/10/29(日) 03:16:14.16ID:ijP0HOZf0
>>591
エラーメッセージくらい読めよ
2017/10/29(日) 08:12:26.70ID:eDIrk2le0
>>592-594
ありがとうございます
Winフォーム作成→dataGridView貼り付け→dataGridViewのModifiersをPublic→
新しいクラスClass1.csを作成→
public void Test() {Form1.dataGridView1.Rows.Add("hoge");}
エラー CS0120 静的でないフィールド、メソッド、またはプロパティ 'Form1.dataGridView1' で、オブジェクト参照が必要です

とでます。Form1. の時点でインテリセンスにも表示されませんでした
どこが間違っているか指摘していただけるとうれしいです

VB.NETもおなじようにやってみましたが、Form1.のインテリセンス候補も10倍くらいの量がありました

>でもやるな。
>コントロールを外から操作したいなんて99%考え方が間違ってる。
ちなみにどのようにされていますか?
2017/10/29(日) 09:36:49.69ID:xy4cL51x0
クラスのインスタンスを電文フォーマットに基づくバイト列に変換するのって
どうするのが一般的ですか?

BitConverterで一つずつやるつもりでいたんだけど、電文の種類が多くて大変なんで
マーシャリングかシリアライザー使って何とかならないかなと考えています。

バイトオーダの変換はありませんが
文字コードの変換はあります。
2017/10/29(日) 09:57:15.12ID:lQWP9L+J0
>>595
クラスのインスタンスからアクセスしないといけない
他のクラスにインスタンス無しでアクセスできるのはエラーのとおりstaticなメンバーにだけ
自分で貼ったリンク先を読み返すか
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
ここを参照
2017/10/29(日) 10:00:00.89ID:8/yZ+26EM
>>596
独自形式?
ならまずはプロトコルの変更を検討
2017/10/29(日) 10:25:39.66ID:8DklepZ/0
>>596
電文フォーマットが有名な国際規格ならNugetにコンバータが落ちているだろうからそれ使えだけど、独自形式なら電文に応じてコンバータ作るしかないんじゃね
2.0時代の時は文字コード指定したBinaryWriterに1項目ずつ書き込んだけど、今だともっと良い方法あるのかね?
2017/10/29(日) 10:38:20.65ID:niGJJWdU0
>>597
説明が足りなかったです
最初のレスで貼ったリンク先の方法で実現できたのですが、VB.NETのように特別な設定等なくてもアクセスできないのかなと思いまして
2017/10/29(日) 10:46:16.93ID:lQWP9L+J0
>>600
意味が分からないのだけどインスタンス無しでアクセスしたいのなら無理
デフォルトをpublicにする設定なら知らない
datagridviewをpublicにしたくないのなら同じクラスに読み書きするためのpublicなメソッドをおいてそこに外からアクセスする
2017/10/29(日) 11:57:28.03ID:PXhFkrdq0
LINQの川俣本買ってきた
確かに変態的だがw、なかなか面白い
2017/10/29(日) 12:24:50.28ID:niGJJWdU0
>>601
勉強になりました
ありがとうございました
2017/10/29(日) 13:04:46.79ID:ZduY/p1d0
>>602
彼が本の中で出している例が、彼が実際に作っている同人ゲームというのが痛々しい
その痛さは中身とは直接関係ないけどね
2017/10/29(日) 13:54:10.92ID:KCquvjW+d
>>596
電文コンバータと、そのコンバータ用のattribute作った事ある。
ちまちまやっても辛いが、電文は自システム外との接点で一番健全であるべきだと思うから、
あんまりその辺のライブラリ使わずに、ベンダサポートのあるものを買うか自作した方が良いと思う。
2017/10/29(日) 19:15:01.89ID:DPr9B5TC0
double値で0〜1の乱数一個発生させた後何倍かしたあと50足して50〜100の乱数表示させたいんだが「何倍かして」をどう打ち込んでやればいいのか分から
2017/10/29(日) 19:27:01.08ID:JiBt02fUa
>>606
0〜1の乱数 * 50 + 50
2017/10/29(日) 19:30:31.42ID:UHlhCeyba
それが分からないってどんだけ数学苦手なんだよw
小学生でもわかる気がするけどw
2017/10/29(日) 20:04:49.47ID:QVv5Qzoo0
>>606
こたえ は らんすう かける (いちばんおおきいかず ひく いちばんちいさいかず) たす いちばんちいさいかず
2017/10/29(日) 20:24:05.16ID:XZx0dOgn0
List<string>をcomboBoxの内容に入れ替えたいんですが、

list.Clear();
foreach (var item in comboBox1.Items)
{
list.Add(item.ToString());
}

もっといい書き方ありますか?
2017/10/29(日) 20:35:08.53ID:2obBvs8R0
>>610
list = comboBox1.Items.Cast< string >().ToList();
2017/10/29(日) 20:37:54.07ID:2obBvs8R0
listを作り直すのが嫌だったら

list.Clear();
list.AddRange( comboBox1.Items.Cast< string >() );
2017/10/29(日) 20:39:32.25ID:GAnQ71f80
>>610
DataSourceにデータソースをバインドしてDisplayMemberとValueMemberをゴニョニョする方が良いと思う
2017/10/29(日) 20:42:13.20ID:GAnQ71f80
ごめん、忘れて
2017/10/29(日) 20:53:42.20ID:XZx0dOgn0
>>611-612
ありがとうございます。
やってみます。
616デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/10/29(日) 21:38:31.04ID:AI+osUJX0
あるstringのデータを
コンソールで表示すると

1 2 3 4
5 6

となるのですが
フォームアプリケーションのtextBoxで表示すると
1 2 3 45 6
となってしまいます
これはどうしてでしょうか?
コンソールアプリケーションと同じように表示する方法はありますか?
2017/10/29(日) 21:42:40.40ID:YJExHDlc0
textBox.Multiline = true;
618デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/29(日) 21:46:02.25ID:+ffco7dx0
>>616
フォームデザイナーでテキストボックス選択すると出てくる三角マークで出てくるチェックボックスにチェック
619デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/10/29(日) 21:49:41.90ID:AI+osUJX0
>>617>>618
Multilineはチェックしています
620デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/29(日) 21:50:16.20ID:+ffco7dx0
>>606
「*」の入力の方法
https://i.imgur.com/JX4EAnJ.jpg
621デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/29(日) 21:50:47.43ID:+ffco7dx0
>>619
改行コードは\nじゃなくて\r\n
622デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/10/29(日) 21:53:57.78ID:AI+osUJX0
>>621
なるほど、データの\nを\r\nに置換すれば良いのですね
プログラム内で出来る様やってみます
ありがとうございました!
2017/10/29(日) 22:29:57.26ID:3xWluLewM
>>606
乱数で1〜0じゃなくて
乱数で0〜50出して50足せばいいよ
2017/10/29(日) 23:09:13.97ID:lLtElflAr
>>610
悪いこと言わんからlistを入れ換えなさい
2017/10/29(日) 23:41:17.91ID:XZx0dOgn0
>>624

>>611-612
では問題あるのでしょうか?
2017/10/30(月) 00:51:20.04ID:ZjjJl5MKr
>>625
その二つが違うんですけどね (´・ω・`)
2017/10/30(月) 02:19:11.99ID:WHu/EAiX0
>>600
VB.NETの既定のインスタンスのことかな?
VB.NETではフォームのインスタンスをnewすることなく使える
http://www.atmarkit.co.jp/fdotnet/special/vb6tovb2005mig02/vb6tovb2005mig02_01.html

ただ、VB6との互換というか、ごまかしだから避けるのが基本
メリットが薄い割に後々混乱やバグのもとになる
2017/10/30(月) 06:37:07.25ID:VzdyAy7l0
>>610
コンボボックスのデータソースにリスト当ててやればおけ
2017/10/30(月) 16:27:34.12ID:uU3Z1NO30
C#凄く難しい。
みんなよく覚えられるね。
630デフォルトの名無しさん (ワッチョイ 7102-rVGZ)
垢版 |
2017/10/30(月) 17:05:11.69ID:ZRry2d4e0
最も無駄がなく整理されて簡潔な言語なのに
2017/10/30(月) 17:11:32.17ID:+mMPfUc40
互換性の為の無駄はあるよ

そして難しくはないっつーかかなり簡単な部類
仕様とライブラリが膨大で覚える事が多いだけ
2017/10/30(月) 17:13:03.05ID:em1IyeD/0
Dictionaryを使って
stringとfloat型で特定の人物の電話番号を
WriteLineでコンソールに出力するプログラムを作りたいのですが
例えば0001234567という電話番号だったりすると
000の部分が省略されて1234567の部分しかコンソールに出力できません
float型では0は扱えないのでしょうか?
633デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 17:16:37.50ID:1Rgk/fXB6
なぜ電話番号を浮動小数で表すのか謎だがこのサイト見ながらで書式設定すればできる
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/formatting-numeric-results-table
2017/10/30(月) 17:21:42.29ID:ct0tj9Za0
>>632
電話番号には文字列を使いなよ。国際電話を使うかもしれないぜ。
2017/10/30(月) 17:28:01.76ID:dYkZ5PSi0
>>632
float型だろうがdecimalだろうが頭に0が付かないのは当たり前。電話番号は文字列として扱え
数値以外の要素のチェックが必要なら面倒でもチェック用のメソッドを作る
>>633
それができるのは桁数が決まっているものだけだから電話番号には使えない
2017/10/30(月) 17:35:14.59ID:ZipmH/zBd
>>629
何に比べてどこが難しいの?
637デフォルトの名無しさん (ワッチョイ eb96-O+EC)
垢版 |
2017/10/30(月) 17:37:33.80ID:em1IyeD/0
>>634
>>635
文字列として扱ったら表示されました!
ありがとうございました!
2017/10/30(月) 17:42:51.79ID:MXOIFBwWa
スレ的に笑っちゃいけないのかもしれないけどその発想はなかったw
だけど常識的に考えて、0と00が別の値として認識される数値型があったら変だろうw
639デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 17:43:10.06ID:1Rgk/fXB6
電話番号って幅バラバラなんだ初めて知った
640デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 17:44:12.67ID:1Rgk/fXB6
確かにバラバラだわ
2017/10/30(月) 17:46:47.02ID:MXOIFBwWa
東京の局番が増えたのついこの間だったろう...と思ったらもう20年以上前かw
2017/10/30(月) 17:48:26.11ID:+mMPfUc40
まあ固定電話と携帯電話でも桁数違うし
2017/10/30(月) 17:57:55.85ID:qj0DpEco0
電話番号は真面目に考えると結構複雑
nugetでPhoneNumberを調べるとすでに作ってる人がいるので参考にするなり拝借するなり
してきた方がいいかもしれない
2017/10/30(月) 18:01:26.63ID:Bbjg4pNZa
問題点番号26
110と119、117が登録できない

永久凍結(笑)
645デフォルトの名無しさん (ワッチョイ 7116-rVGZ)
垢版 |
2017/10/30(月) 18:02:40.83ID:zMAqCiK10
常識的に考えて緊急電話がサービスに登録してこない
電話帳かな?
2017/10/30(月) 18:03:59.63ID:53AKimFld
電話番号って番号だからなぁ。一応。
単純に文字列が良いかと言うと、ソートは国番号、市外局番、市内局番、内線番号で数字順にやりたい、とか、局番のハイフンは数字じゃないじゃんとか、市外局番変わるので洗い替えます、とか結構うんざりする。
業務系だと電話番号クラス作る(というかプリミティブな型をデータを表す型に使わない)けど、そこまでやってるとキリないしな。
2017/10/30(月) 18:05:30.03ID:+mMPfUc40
結局、要件定義次第だからね
将来的な変更を見越して型を作るのはアリだと思うけど
2017/10/30(月) 18:27:19.96ID:1DqnyPzkM
電話番号は番号というより記号
数字としての役割はしてない
649デフォルトの名無しさん (ガックシ 068b-rVGZ)
垢版 |
2017/10/30(月) 18:32:37.98ID:6LR7RaNa6
x 数字
o 数値
2017/10/30(月) 19:14:48.75ID:ums4+xqt0
>>630
MSDNの糞っぷりは天下一級品
2017/10/30(月) 19:17:16.26ID:BJc9Pwjb0
2017/10/30(月) 19:20:01.70ID:Bbjg4pNZa
>>650
よく書いてあるじゃん
vc6の頃なんてリンク切れだったぜ
2017/10/30(月) 19:28:47.29ID:ums4+xqt0
>>652
VC6と比べると幾らかマシと言うレベルで褒められたもんじゃない。
.NETの少しマイナーなクラスだと「そんな説明で分かるかボケ」か説明すらない状態だ。
2017/10/30(月) 19:31:46.66ID:Bbjg4pNZa
>>653
最近サンプルソースも充実してるじゃん
2017/10/30(月) 19:36:22.59ID:ums4+xqt0
>>654
その充実(笑)なサンプルソースとStackOverflowの親切な外人様のおかげでなんとかなってる状態w
2017/10/30(月) 19:46:34.67ID:YIhgL7yL0
>>655
docsの間違いか?
657デフォルトの名無しさん (ワッチョイ 7102-rVGZ)
垢版 |
2017/10/30(月) 19:48:27.09ID:4jg/LOEr0
ワシみたいな趣味グラマーは公式ドキュメントなんか読まないからノープロブレム
2017/10/30(月) 19:49:37.11ID:s0I2evXG0
await/asyncの良い資料ってどこかに無いかね
ParallelやTaskの奴なら昔MSが出してたParallel Programming with Microsoft .NETが参考になったけど、こっちは全然見当たらない
2017/10/30(月) 20:09:03.29ID:1DqnyPzkM
>>658
具体的に何が必要?
2017/10/30(月) 20:18:18.09ID:s0I2evXG0
>>659
解説に加えてパターンやアンチパターンがあるとわかりやすいからありがたいけど、ググってもブログでちょっと触ってみましたみたいな記事しか無いんだよな
2017/10/30(月) 20:30:18.29ID:wEmOlfDHr
つかってりゃあ解るレベルのもんなんで何とも
2017/10/30(月) 20:32:27.51ID:RKfFK5VC0
OracleやAppleに比べるとMSDNは神レベル
2017/10/30(月) 20:35:57.71ID:ct0tj9Za0
>>662
MSDNは情報は多いが、ひどくのろまな亀だ。
664デフォルトの名無しさん (ワッチョイ 41b3-jdGw)
垢版 |
2017/10/30(月) 20:40:19.79ID:OohuTOK70
c#初心者のDTですが質問良いですか?
Visual Stdio 2017 でプログラムの実行方法が分かりません猫でも解るC#を見て打ち込んだのはいいのですが走りません
アドバイスをおぬがいします
2017/10/30(月) 20:40:41.88ID:RKfFK5VC0
単に使いこなせてないだけかもね
2017/10/30(月) 20:41:05.20ID:BomO59sy0
>>627
C#とVB.NETは構文が違うだけでだいたい一緒っていうイメージがありましたが、そういう側面もあるんですね
参考になりました
ありがとうございます
2017/10/30(月) 20:41:46.20ID:+mMPfUc40
>>664
先ずコードを晒せ、話はそれからだ

>猫でも解るC#を見て打ち込んだのはいいのですが
て事は、大して長いコードでも無いんだろうし
668デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/30(月) 20:48:55.38ID:59na0HEH0
>>664
情報が少なすぎる
とりあえずなにかを動かしたいのか?

「新しいプロジェクト」

「コンソールアプリ」のプロジェクトを作成

static void Mainしたの中括弧の中にConsole.WriteLine(“Hello World”);
を追記する

画面の上にある再生ボタンを押す
669デフォルトの名無しさん (ワッチョイ 41b3-jdGw)
垢版 |
2017/10/30(月) 21:01:28.13ID:OohuTOK70
>>668
説明が足りなくてすいません
http://imepic.jp/20171030/755380
こんな感じで本を見て書いたやつを走らせたい息子が困っていまして
2017/10/30(月) 21:05:25.57ID:qj0DpEco0
全裸でデバッグする奴なら知ってるが
まさかチンコでタイプするツワモノがいたとは
2017/10/30(月) 21:10:30.63ID:Bbjg4pNZa
>>669
プロジェクト作ってないな

>>668の通りやってみるが吉
672デフォルトの名無しさん (ワッチョイ 41b3-jdGw)
垢版 |
2017/10/30(月) 21:12:08.05ID:OohuTOK70
>>671
ありがとうございます
2017/10/30(月) 21:12:54.40ID:dYkZ5PSi0
>>669
http://www.atmarkit.co.jp/ait/articles/1704/10/news026_5.html
http://www.atmarkit.co.jp/ait/articles/1704/10/news026_6.html
2017/10/30(月) 21:13:18.64ID:+mMPfUc40
>>669
画面に顔が映り込んでんぞw

プログラミングの前に、リテラシーを何とかしようぜ……
2017/10/30(月) 21:13:48.43ID:wouAVMNAH
Visual Studio 2017じゃない気がするんだけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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