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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/01/03(水) 01:44:24.84ID:zucBe8Ms0
a.exe
2018/01/03(水) 01:45:06.51ID:zucBe8Ms0
cmd.exe
2018/01/03(水) 01:47:07.02ID:zucBe8Ms0
a.js
2018/01/03(水) 01:48:25.71ID:zucBe8Ms0
script
2018/01/03(水) 01:48:44.83ID:zucBe8Ms0
<>
2018/01/03(水) 01:51:42.79ID:zucBe8Ms0
<script> ←これも書き込めない
2018/01/03(水) 03:03:39.73ID:BLwnNh6e0
ここはテストスレではありません
327デフォルトの名無しさん (ワッチョイ 9ff7-57r9)
垢版 |
2018/01/03(水) 21:40:35.60ID:4IoSL1o20
int a=2;
int b=3;
int c=9;
int d=11;
このうち10より小さいもののうちで一番大きいものを選択する(アルファベットを返す)コードはどういうふうに書けばよいでしょうか?
2018/01/03(水) 21:49:31.09ID:asJzHhKy0
>>327
var list = new List<int> { a, b, c, d };
var result = list.Where(l => l < 10).Max();
329デフォルトの名無しさん (ワッチョイ 9ff7-57r9)
垢版 |
2018/01/03(水) 21:52:22.30ID:4IoSL1o20
ありがとうございます。
2018/01/03(水) 21:55:57.06ID:zucBe8Ms0
var dict = new Dictionary<string, int>(){
{"a", 2},
{"b", 3},
{"c", 9},
{"d", 11}
};

var result = dict.Where(data=>data.Value<10).Max(data=>data.Value).Key;
331デフォルトの名無しさん (ワッチョイ 9ff7-57r9)
垢版 |
2018/01/03(水) 22:08:04.88ID:4IoSL1o20
何度もすいません
int a=2;
int b=3;
int c=9;
int d=11;
同じアルファベットに対応したフラグ
bool a_flag=true;
bool b_flag=true;
bool c_flag=true;
bool d_flag=false;
このうちフラグがtrueの中のもので一番大きいものを選択する(アルファベットを返す)コードはどういうふうに書けばよいでしょうか?
2018/01/03(水) 22:21:19.29ID:wQKC+m+qa
そういうことをやりたいなら

C#入門を全部終えてからやれ
2018/01/03(水) 22:26:46.45ID:wQKC+m+qa
処理内容を変数の名前に依存するのは悪いやり方

int aがbool a_fragに関連していると決めているのはコードを書いてる人間だけ

プログラム上は関連づけられてない
とんでもない愚かなコード
2018/01/03(水) 22:28:33.33ID:zucBe8Ms0
>>331
https://ideone.com/5Ob6vu
2018/01/03(水) 22:30:30.27ID:MV/bJa3c0
C#でなくパッパラパー向けの言語やればいい
Pなんとかっていう
2018/01/03(水) 22:30:39.56ID:asJzHhKy0
>>334
それだと最大値をもつものが複数あった場合が考慮されていない
2018/01/03(水) 22:33:25.93ID:zucBe8Ms0
>>336
うむ。
一応Valueは重複しないものとして最初に出現したやつを選ぶことにしておいた
2018/01/03(水) 22:39:35.15ID:zucBe8Ms0
最大値を持つアルファベットをすべて出力するVer
https://ideone.com/RfUhMp
339デフォルトの名無しさん (ワッチョイ 9ff7-57r9)
垢版 |
2018/01/03(水) 22:43:09.66ID:4IoSL1o20
ありがとうございます
自分のコードにあてはめて書いてみます
また来ます
2018/01/03(水) 22:47:32.12ID:zucBe8Ms0
何故Max関数はリストの要素そのものではなく判別に使った式の値を出力する仕様にしたのか
2018/01/03(水) 22:48:35.18ID:zucBe8Ms0
と思ったけど最大値が複数あるときにそうじゃないと困るからか!初めて気付いた
2018/01/03(水) 22:56:32.16ID:wQKC+m+qa
いやいやそんな理由じゃないぞw
最大値を求める関数から要素返されても困るだろ
2018/01/03(水) 22:59:13.78ID:zucBe8Ms0
>>342
まあそうなんだけどさw
要素自体を抽象的な順序数として考えれば要素が返されてもおかしくないのにって思ってたは w
2018/01/03(水) 23:02:45.49ID:zucBe8Ms0
DateTimeオブジェクトみたいな w
2018/01/03(水) 23:04:14.73ID:a50vShvf0
どれか一個えらぶ関数じゃなくて一応演算の結果を返す関数だからな
SumとかAvgとかと挙動違ったら面倒くさい
2018/01/03(水) 23:07:01.35ID:wQKC+m+qa
そういう問題でもない…
2018/01/03(水) 23:09:47.06ID:kBuweVPR0
>>331
さっきの解を、swichで判定だな。
もしくはdictionary型をつかう。
348デフォルトの名無しさん (ワッチョイ 9ff7-57r9)
垢版 |
2018/01/03(水) 23:59:11.68ID:4IoSL1o20
var list = new List<bool> { true, false, true, true, true, true };
Console.WriteLine(list.Count(true));

trueの数を表示させたいのですがこの場合ラムダ式はどのように書けばいいでしょうか?
2018/01/04(木) 00:05:25.85ID:7evDO2yEa
それは「この場合ラムダ式」が分からないんじゃなくて、そもそもラムダ式がまるで分からないんだと思うw
質問する前にやることがあるんじゃないのかな
350デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 00:08:30.14ID:dskbzAHG0
すいません…
LINQ触るの初めてなもので…
2018/01/04(木) 00:22:00.97ID:jrk7LVb6a
ラムダ式以前にc#がわかってないだろ
コード書くには早すぎる
入門書を読み返せ
回答が出てないなら新しいのを買え
352デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 00:28:30.17ID:dskbzAHG0
var list = new List<bool> { true, false, true, true, true, true };
Console.WriteLine(list.Count(n => n == true));

とりあえずこれで動きました
nはメソッドの引数みたいなものでなんでも構わないのでしょうか?

var list = new List<bool> { true, false, true, true, true, true };
textBox1.Text = list.Count(n => n == true).ToString();

また上の様にすると動かないのですが、これは何故でしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
2018/01/04(木) 00:36:28.14ID:uPERGx+M0
質問です
わたしはパッパラパーなりにC#を勉強してきて、自分用の初歩的なGUIアプリを作れる程度には覚えれたんですが
Pなんとかのほうが良かったんですか?
それがパッパラパーに向いてる理由をふくめて教えていただけるとありがたいです
2018/01/04(木) 00:42:55.37ID:T+TxDQDt0
>>352
そう、nは引数。

>>352
動かないとは具体的にどうなる?エラーとかでテルル
2018/01/04(木) 00:43:17.15ID:T+TxDQDt0
でテルルじゃなくて出てる?
356デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 00:44:43.18ID:dskbzAHG0
>>354
Tostringの後の;で
型 'System.NullReferenceException' のハンドルされていない例外が LINQtest.exe で発生しました
追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません。
と出ます
2018/01/04(木) 00:45:23.69ID:T+TxDQDt0
>>353
Pなんとか=Python?
Pythonだと高度な機能が無いから簡単ってことかな?
でもC#で簡単な機能だけ使えばいいのでは...
2018/01/04(木) 00:46:43.86ID:T+TxDQDt0
>>356
うーん...ideoneに全部貼ってうp頼む
359デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 00:49:07.59ID:dskbzAHG0
>>358
https://ideone.com/mDt50q
こちらになります
お手数おかけしますがよろしくお願い致します。
2018/01/04(木) 00:52:04.58ID:T+TxDQDt0
>>359
Form1メソッドはForm1クラスのコンストラクタなんだが、ここじゃなくてform1_Loadの中に書かないといけない。
デザイナーでフォームのウィンドウをダブルクリックすればform1_Loadが作成されるからその中に。
2018/01/04(木) 00:59:42.00ID:T+TxDQDt0
あと、コピぺするときに省略しただけかもしれないけどInitializeComponent();っていう文がForm1メソッドの中に書いてあったはずなんだがそれは必要
362デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 01:01:20.45ID:dskbzAHG0
>>361
出来ました!
有難うございます。
助かりました。
363デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 04:02:02.66ID:dskbzAHG0
>>334
同じ値の時はあらかじめ決められている優先順位を取りたかったのでこのコードが非常に参考になりました
有難う御座います。
優先度が高いものを上にすればいいんですね

var flaggedList = list.Where(data => data.Flag);
これだけよくわからないのですがif(true)とかと同じ様な書き方でtrueのものだけソート出来るんでしょうか?
2018/01/04(木) 05:47:57.28ID:+aPSEg6K0
上は下の省略形で下の括弧内で好きに条件をかけばいい
data => data.Flag
data => {return data.Flag;}
勿論ifも使えるしこんな感じで書きかえることもできる
data =>{
if(data.Flag){
return true;
}
else{
return false;
}}
2018/01/04(木) 14:01:04.73ID:Pa4sGEBaa
>>348
s => s
2018/01/04(木) 14:02:40.76ID:uPERGx+M0
>>357
ありがとうございます
367デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 16:11:37.44ID:dskbzAHG0
レス有難う御座います。
>>334
でFlagが全てfalseだった場合止まってしまうので、mavValueOwnerKeyに空である表示をしたいのですがどうすればいいでしょうか?
368デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/04(木) 16:14:27.34ID:dskbzAHG0
list.Countで場合分けしてみます
2018/01/04(木) 16:34:11.21ID:v6C8tRIY0
そうだな。
てかmaxがmavになってた
2018/01/05(金) 14:35:10.83ID:vfHtPi/n0
ある文字列に特定の文字列が含まれていれば別の文字列に置換する、という処理を行いたいんですが
だぜ→です
ですわ→です
といった感じの置換したい文字列が数百パターン存在する場合はひとつひとつ置換を試していくしかないのでしょうか…?
2018/01/05(金) 14:37:31.37ID:1LmylbFqa
>>370
Replaceじゃダメなん?
2018/01/05(金) 14:51:45.66ID:vfHtPi/n0
>>371
基本的にはreplaceを使うことになると思うのですが、例えば
'今日はほんといい天気だぁ〜〜〜!!'
という文字列に対して
だぜ→です
だぁ→だ
ほんと→ほんとうに
といった変換ルールが複数ある場合は
ひとつひとつreplaceをかける(あるいはループで変換ルールすべてを試す)しかないのかなぁと思いまして

要するに実行速度が気になっているのです
2018/01/05(金) 14:54:03.66ID:1LmylbFqa
>>372
やってみろよ
問題なければそれでいいじゃん
2018/01/05(金) 14:55:24.40ID:mKj1Hxz16
>>372
そうするのが自然
2018/01/05(金) 14:55:33.45ID:vfHtPi/n0
>>373
それもそうですね
一度試してみます
ありがとうございました
2018/01/05(金) 16:40:20.28ID:/39Jd9H6a
>>372
そこに”今日はほんとうにいい天気だ”を突っ込むとどうなる?
2018/01/05(金) 16:43:17.51ID:L4TaysN80
うにうに
2018/01/05(金) 16:52:08.84ID:1LmylbFqa
変換済みワードは一旦固めてしまわないと駄目かもしれんね
2018/01/05(金) 22:21:11.06ID:zjfuYfzH0
インクリメンタルにトライ木に掛けると1走査でできるよ
2018/01/05(金) 23:01:40.39ID:FSL+3S710
なんぞそれ
2018/01/06(土) 11:25:54.88ID:A/n+HHYoa
switch c

case 'だ':
var n=nextWord();
if(n=='ぜ')
replace("です");
else if(n=='ぁ')
2018/01/06(土) 15:58:34.34ID:lrwhIMsB0
C♯のswitchってC♯6からint以外も扱えるようになってたのか知らなかった
2018/01/06(土) 17:26:53.26ID:lMgufIkRM
2008とかでも使えるけど?
384デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/08(月) 18:15:27.77ID:N8MhEzoU0
"one"
"two"
"three"
の様な文字列が用意されていて

int keisan(2,"one")
→2*1
int keisan(2,"one","two")
→2*(1+2)
int keisan(2,"one","two","three")
→2*(1+2+3)
int keisan(2,"one","three")
→2*(1+3)
の様な結果を返すメソッドを作りたいのですが
引数の数が決まっていないメソッドを作るにはどうすればいいのでしょうか?
2018/01/08(月) 18:17:47.15ID:vvKSl3ZPM
params
2018/01/08(月) 18:21:03.05ID:oFrueEmX0
>>384
string[ ] args
2018/01/08(月) 18:28:46.09ID:6LQHZKeL0
シグネチャは int keisan(int x, params string[] xs) になるかな
2018/01/08(月) 18:43:03.94ID:5t6jHGkha
たぶんずっと同じ人だと思うけど、こういう人には質問するより前に
まず自分で一通り勉強したらって言ってあげるのが優しさだと俺は思うけどなあw
2018/01/08(月) 18:44:35.51ID:LRSoqKZx0
俺はそうは思わんわ
これも一種の勉強やろ
390デフォルトの名無しさん (ワッチョイ fb03-wNfw)
垢版 |
2018/01/08(月) 19:00:26.28ID:Jvqg6B4Y0
質問するより前にまず自分で一通り勉強した結果がお前らなのだから
俺は自分で勉強するより前に質問する方を選ぶよ
2018/01/08(月) 19:29:32.05ID:7hYpzMEE0
>>388
ここ質問スレだから
2018/01/08(月) 19:38:26.81ID:uSMEFASC0
これあれじゃん
printfっぽいやつじゃん
2018/01/08(月) 19:42:36.36ID:uSMEFASC0
c++のときの記憶だったw
2018/01/08(月) 19:48:50.27ID:YqcrQaEG0
例えばこんな感じのことがしたいのか
2の部分や演算順序が固定で気持ち悪い感じするが、簡易パーサーか何かかな
https://ideone.com/b4A3Hl
2018/01/08(月) 21:05:58.44ID:JPcKKnXVa
いや
同じ人なら
どうせまた変な事がしたいだけ
2018/01/08(月) 21:33:14.77ID:xV7in+AG0
自閉症かなんかっぽいよね
2018/01/08(月) 21:40:08.24ID:zg3P5Xfz0
勉強というよりもこの程度の内容をググれないのが心配だ
"引数の数が決まっていないメソッド"って感じの適当な検索でもかなりヒットするのに
2018/01/08(月) 21:40:13.41ID:bJftSVCJ0
おかげでスレの話題が新鮮に保たれてる
2018/01/08(月) 21:45:51.25ID:O8jIltI+0
ここは
>「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
て、ことだからねえ。
>>1 が気にいらないなら自分で自分の主義にあるスレを立ち上げればいいだけ。

検索するにも適切なキーワードを思いつけなくて1日悩み続けた挙げ句に、聞いたら一瞬で終わるなんて事もあるし。
今回のは簡単な方だったみたいだけど。
2018/01/08(月) 21:55:49.50ID:F+Qn6y7R0
>>399
「VS2017 のプロジェクト(P)→プロパティ(E)のスタートアップオブジェクト(O) に相当する
eclipse や intelliJ のメニューってなんですか」
と、今も探しているが、そもそも適切なキーワードが思いつかない

自分の話ですまん‥
2018/01/08(月) 22:07:40.25ID:fM4iC4afa
(1) 勉強して理解できなかった疑問点や調べても解決しなかったことを質問する
のと

(2) 面倒くさいからとにかくお前ら手取り足取り教えてくれ

では全然違うと思うよw

誰でも変な思い込みや勘違いをすることがあるから、(1)であるならくだらない質問でも問題ないと思う。
でも(2)は見ててあんまり気分がよくないなと思う人もいると思うけどね。

っていうかそういう道徳的話はともかく、それって学習効率悪いよね絶対。
優しさ云々はそういう意味
2018/01/08(月) 22:11:51.21ID:4Iuopxo1M
くだらない調査に時間かけるより聞いた方が良い
答える方もグダグダ言わずに知ってることを教えてやれ
そういうネットワークができれば社会全体の生産性が上がるんだよ
日本にはなくて外国には当たり前のようにあるシステムだ
日本人は性格が排他的すぎるからITに向いてない
だから負けるんだ
403デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/08(月) 22:29:20.81ID:N8MhEzoU0
>>385
>>386
>>387
有難う御座います。
後でやってみます。

入門書は一冊終わらせてはいるのですが作りたいものを作ろうとした時、その本に載っていないことの方が多くて…
ここのスレの方々のおかげで今作っているプログラムもだいぶ形になってきました
非常に助かっています
可変長引数についても一応事前に調べて存在は知っていましたが説明を読んでもいまいちわからなく
もっと簡単な方法があるかも…と思って聞いてみました
でもやっぱりparamsと答えられたのでそれがベストなんだなと知ることが出来て
説明をもう一度読み直したらなんとか理解出来ました
404デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/08(月) 22:32:02.44ID:N8MhEzoU0
>>394
ありがとうございます。
参考にします。
2018/01/08(月) 22:34:04.87ID:7hYpzMEE0
くだらん質問だと思うならスルーするなり他のスレに行けよ
ここは

> 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

だよ
406デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/08(月) 22:40:28.65ID:N8MhEzoU0
ちなみにこういう書き方はできるのでしょうか?
int keisan(params string[] xs,int x)

int keisan("one","two","three",2)
2018/01/08(月) 22:44:04.38ID:LRSoqKZx0
無理です
ちょっと考えればそれができたら困ったことになるのは分かるはず
2018/01/08(月) 22:45:14.32ID:zg3P5Xfz0
>>406
paramsは最後のみ
エラーでるから試してみるといい

>>405
スルーも何も質問は2分後に解決してる
その後はこういったプログラミング初心者対して別アプローチをした方がって話で質問とは関係ないと思うんだが
409デフォルトの名無しさん (ワッチョイ fb03-wNfw)
垢版 |
2018/01/08(月) 22:51:04.77ID:Jvqg6B4Y0
>>407、408
よう初心者クン
で何を教えて欲しいのかね?
2018/01/08(月) 23:37:32.94ID:evPy5QQs0
>>407
最後にint型が来るって指定なんだから別に困らない
パターンマッチではよくあるでしょ
2018/01/09(火) 00:41:16.91ID:5Fj63PJf0
>>410
この場合は困らんけど一般的には困るだろ
こんな文法が許されてたら。
2018/01/09(火) 03:29:04.52ID:V7ZjzcjU0
>>411
デフォルト引数の順番の制限もなくなったことを考えてみ?
2018/01/09(火) 04:57:15.02ID:/Jm0Q1+w0
>>408
> 質問とは関係ないと思うんだが
スレ違いだとは思わないのか?
414デフォルトの名無しさん (ワッチョイ bbf7-k1u0)
垢版 |
2018/01/09(火) 05:02:51.20ID:A/ESCl++0
可変長は一種類だけで、最後に定義しないといけないみたいですね
無事に機能を実装できました。
質問に答えて下さった方有難う御座いました。
2018/01/09(火) 08:16:40.42ID:5Fj63PJf0
>>412
おまえに言われなくてもそんなこと考えてるし
そのパターンは非現実的だって分かるだろ
2018/01/09(火) 08:29:24.71ID:yV0bRmzSd
>>415
なぜ?
2018/01/09(火) 08:58:27.18ID:jhkCquMi6
>>416
hoge(arg=1, args=2, arcs=3, n=2)

argsの配列感がない上に1,2,3っていう順番付けが曖昧

hoge((arg=1, 2, 3,) n=2)

こんな文法を作ったとしても、もう配列で良いよねってなる

説明させんなよメンドくせえな
2018/01/09(火) 12:19:24.01ID:EqlP/XAyr
なぜ>>417はこの程度の理解で答えたがるのか?
他人事と思わず皆考えてみよう
2018/01/09(火) 12:47:31.69ID:p+9rZZ3s6
具体的に指摘できないなら喋んな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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