ふらっと 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/27(金) 19:10:40.47ID:+TQssIne0
>>531

int count=0;
int x=10000;
while (x>100)
{
x=x/2;
count++;
}
2017/10/27(金) 19:24:20.57ID:8mvsL+zrd
課題の答えを教えてもらうスレみたいになってるな
534デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/27(金) 19:30:24.53ID:pAogLeJi0
>>530
俺は実際にやったんだがまず最新バージョンだとダメだった
サイトに書いてるバージョンをインストールしたら名前空間未解決は全部消えたけどImageItemクラスが見つからないって出たわ
535デフォルトの名無しさん (ワッチョイ eb96-O+EC)
垢版 |
2017/10/27(金) 19:47:20.37ID:fMt9E+qB0
>>532さんありがとうございます
2017/10/27(金) 20:06:30.51ID:mnqGPV0ma
>>531-532
Math.Log使って算術的に求めればいいのに、と一瞬思ったけど底の変換で誤差が出るからだめかw
でも解析的に溶けるはずの問題を力技でやるのは面白くないな馬鹿っぽくて
537デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/27(金) 20:58:27.40ID:pAogLeJi0
1000/(2^x)<=100
∴x>=-ln(100/1000)/ln(2)

整数単位なら
ceil(-ln(100/1000)/ln(2))

C#なら
(int)Math.Ceiling(-Math.Log(100.0/1000.0)/Math.Log(2.0))
538デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/27(金) 21:00:22.12ID:pAogLeJi0
1000じゃなくて10000だった
2017/10/27(金) 21:10:00.24ID:Kbs4W3Kw0
質問です
WPFで、MenuのItemSourceをXMLとデータバインドして、ItemContainerStyleでXMLに書かれたアイコンのパスからアイコンを表示してます
テキストはうまく並びますが、アイコンは現在最後の1個だけ表示される状態です
試行錯誤したのですがなんかうまくいきません
教えてください!
540デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
垢版 |
2017/10/27(金) 21:15:13.29ID:Xsu5cNz50
>>534
ありがとうございます
バージョンをサイトのに合わせたらエラーが以下の7つにまで減りますね
https://pastebin.com/a3enEffB
ちょっと希望が見えてきました
541デフォルトの名無しさん (ワッチョイ d175-rVGZ)
垢版 |
2017/10/27(金) 21:18:58.21ID:pAogLeJi0
>>539
>>1のサイトにコード貼ってうp
2017/10/27(金) 21:20:12.73ID:FTyfNVM40
>>539
faqネタ
https://msdn.microsoft.com/ja-jp/library/aa970778(v=vs.110).aspx
2017/10/27(金) 21:22:05.47ID:+vbTuR/l0
>>533
俺なんか、実際プログラミングの授業さっぱりわからなかったから気持ちはわかるw
卒業して全然違う職に就いてから、独学で勉強して業務アプリ作ってるけど
やっぱ理系の大学教授って教えるの下手だよなぁ
2017/10/27(金) 22:31:09.83ID:Kbs4W3Kw0
>>542
ありがとうございます!
x:Sharedを調べてきます

>>541
もうちょっとがんばってみます
2017/10/27(金) 22:33:56.47ID:FTyfNVM40
>>544
画像のようなリソースは共有できないのだ。
2017/10/27(金) 22:34:54.26ID:FTyfNVM40
>>543
正直、工学部のレベルが落ちてると思うよ。
2017/10/27(金) 22:44:05.65ID:jS4JzIKN0
作れる、と組める、はかなり違うスキルだと思う
2017/10/27(金) 22:45:42.16ID:EnZPczDa0
作れるけど組めないタイプです
2017/10/27(金) 22:51:06.59ID:Kbs4W3Kw0
できましたありがとう!
ResourceDictionaryにx:Shared="false"でできました!
本当に感謝です! これでスマートに書けます!
2017/10/27(金) 23:08:50.40ID:5w2xVZwP0
>>549
それデザイナーだと、ちゃんと出るからたちが悪いよ。
エッセンシャルWPFとか読んでないとわからんと思う。
2017/10/27(金) 23:10:50.85ID:SAD9Ru6t0
WPFのグリッドコントロールが死ぬほど遅いのって解消された?
2017/10/28(土) 01:15:13.63ID:Ng05dLeH0
いいえ
WPFの思想を正しく理解してたらグリッドコントロールなんか必要ないとわかるはず
それを面倒に感じるようなタイプのアプリならWinFormsかASP.NETで作るべき
2017/10/28(土) 07:09:18.71ID:t/WJitLPp
どういうことだってばよ
2017/10/28(土) 07:46:40.11ID:03EiXsZ60
>>551
EnableColumnVirtualizationプロパティをTrueにする
2017/10/28(土) 08:04:18.05ID:WUINebrs0
Gridじゃなくて、DataGridかよ。
2017/10/28(土) 08:47:45.45ID:03EiXsZ60
忖度です
2017/10/28(土) 10:45:25.48ID:DalFF2zW0
Gridが遅いなんて話聞いたことないからわかるだろ
2017/10/28(土) 11:52:51.58ID:KdTyFqmQ0
>>552
賛同
2017/10/28(土) 12:46:46.71ID:PsP4EoQE0
つか、DataGridに数千数万突っ込む仕様がどうかしている
どうせ使う人もそこまでスクロールするはず無いんだがなぜか作らされる理不尽さ
2017/10/28(土) 13:03:06.41ID:bdNJdn2b0
>>559
ほんとこれ
2017/10/28(土) 13:09:55.85ID:pcT2EQ6Aa
>>559
役所のアプリってそのぐらいの人数
簡単にいくじゃん

どういう画面にするか迷う
2017/10/28(土) 13:14:31.33ID:pcT2EQ6Aa
某大手に依頼されたログ閲覧ツールも
200機近くある機械がそれぞれ秒単位で
ログ出すから一万とかあっという間に超える
こういうのいい作り方ない?
2017/10/28(土) 13:20:52.94ID:pcT2EQ6Aa
とりあえずDataGridもDataGridViewも
10万件ぐらいなら余裕で表示できるよ
でも無限に表示するわけにも行かないのに
3年ぐらいのデータはみたいとか言うんだよな
役所のアプリに限っては住民だから
全員並列でデータに上下がなくて
完全にどうやって表示したらいいかわからない
2017/10/28(土) 13:36:39.82ID:Ng05dLeH0
>>562
elasticsearchに突っ込んで終わり
2017/10/28(土) 13:48:34.24ID:4tOv+jEh0
>>561
もうエクセルでいいだろwww
2017/10/28(土) 14:00:05.81ID:LD30atSwM
全部表示しないでクエリで絞り込んで表示したらいい
何万件目視する必要はないと思うけど
2017/10/28(土) 14:31:38.49ID:/OSTeRXvM
能力のない人が要件定義するとそういうアホなことになるよね
客からすれば大抵そういうのはその場のノリで適当に言っただけのどうでもいいことで、
それが生み出す価値と引き換えになる品質やコストを天秤に載せれば明らかにやるべきではないような要件を「やりません」と言えない
2017/10/28(土) 14:55:50.55ID:lTHigkwZr
上の人達が頭悪いととにかく迷惑なのは確かではある
2017/10/28(土) 16:06:44.30ID:e5FcL5GRa
どうせユーザーは全部のデータは見ないから〜、とか
適当に絞り込んだ表示にしろとかいう意見ははさすがにちょっと頭悪すぎると思うw

んなアホな

っていうか仮想化すれば済む程度の話で客や上司を無能扱いする奴って
どんだけ図々しいバカだよ
2017/10/28(土) 16:18:29.56ID:IlD7K6Hl0
string型に行番号とかの変数を追加したいのですが
シール型で継承できないとエラーになりました
こんなときどうしたらいいでしょうか
2017/10/28(土) 16:49:12.51ID:i6LcJWfh0
エクステンションを使うべし
2017/10/28(土) 16:57:29.76ID:H0P2VwFl0
>>570
Stringじゃなくてクラス作って行番号や行の情報を変数として持つのは駄目なの?
2017/10/28(土) 16:58:11.15ID:rZWSN5VzM
class Line {
private readonly string _contents;
private readonly int _lineNumber;
public Line(string contents, lineNumber) {
Contents = contents;
LineNumber = lineNumber;
}
public string Contents {
get => _contents;
set {
if (value == null) throw new ArgumentNullException(nameof(Contents));
_contents = value;
}
}
public int LineNumber {
get => _lineNumber;
set {
if (value <= 0) throw new ArgumentOutOfRangeException(nameof(LineNumber));
_lineNumber = value;
}
}
}
2017/10/28(土) 17:04:36.31ID:IlD7K6Hl0
>>571
エクステンションだと↓を見る限り変数は追加できないですよね?構文糖衣みたいのを作る時は便利ですけど
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/extension-methods
2017/10/28(土) 17:09:57.61ID:IlD7K6Hl0
>>572
いたる所に行番号やらが必要になったstring変数があってあんま変えたくないのですが、
結局そうするしかないんでしょうかね
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
互換性の為の無駄はあるよ

そして難しくはないっつーかかなり簡単な部類
仕様とライブラリが膨大で覚える事が多いだけ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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