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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 2317-qMUn)
垢版 |
2018/12/15(土) 11:07:07.89ID:0aSEF/I+0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1538646998/
■コードを貼る場合は↓を使いましょう。
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/12/20(木) 22:27:04.44ID:6LmbwAzu0
お前らなにカリカリしてんの?
2018/12/20(木) 22:34:02.07ID:uRkd43kpd
>>85
で、送出側作るのは難しいの?
恥ずかしいね。
2018/12/20(木) 22:46:47.72ID:hwNgEKL00
>>87
日本語理解できないの?
ハードル以前の話って書いてあるんだけど?
なぜそんな面倒なことを初心者にさせようとするのか意味不明なんだが
2018/12/20(木) 23:07:10.16ID:7wwBVLN+0
>>86
いつものキチガイだからNGしとこう
ほら早速ワッチョイが役に立ったぞ
2018/12/20(木) 23:43:42.93ID:uRkd43kpd
>>88
無意味だと思ってるのはお前ができないからかつやる必要があるパターンが頭に浮かんでないかだろw
意味不明なのはお前が低レベルだからだよ。
2018/12/21(金) 05:06:11.42ID:PkTs+Gix0
>>90
初心者にとってそれがベストプラクティスだと言い張るなら根拠書けばいいんじゃね?
書けるならね w
2018/12/21(金) 20:36:29.06ID:ulAOiHZ/0
便乗で質問です。
ログインしてない状態で指定時間になったら指定のユーザーでログインしてブラウザでスクレイピングしたいです。
サービスやタスクから適当なユーザーでログインするにはどうしたらいいでしょうか?
2018/12/21(金) 20:59:56.18ID:rOLcewoyM
もっと具体的でないと回答しようがないかな
ログイン認証はWebサーバー側の話ならローカルアカウント
関係ないし
ローカルアカウントの話ならグループポリシーでサービス起動
出来るようにするのが一般的だったけど
OSのバージョンやADが有効なら出来ない場合もあるよ
2018/12/21(金) 21:01:24.25ID:ZKr5QUU1a
>>92
どうもこうも、それ最初からタスクスケジューラーのオプションに入ってるんじゃないの?
http://www.atmarkit.co.jp/ait/articles/1307/08/news101.html
2018/12/22(土) 11:16:46.77ID:GEVjlJLSd
>>92
タスクスケジューラで、誰として実行するか決めれる。

タスクスケジューラ否定してる奴らは、タスクスケジューラ使って言ってるんだろうか?
2018/12/22(土) 11:47:17.60ID:h0Ytd2ZqM
誰も否定してないと思うが?
どれをそう感じたんだろう?
2018/12/22(土) 13:29:07.95ID:MYt604IR0
3日間もこの話を続けてるのか

よく飽きないねーガイジか?
98デフォルトの名無しさん (ワッチョイ abeb-6UAB)
垢版 |
2018/12/22(土) 15:43:19.97ID:UXm6+Rqz0
こういう質問者って解決の道筋を知りたいんじゃないんだよ
WindowsのこともC#も学習する気はまったくなくて、代わりにコードを提示して欲しい人なんだ
なので、「タイムスケジューラ+コードは自分でかけ」とか「自分で書いたコードをサービス化しろ」と回答しても無駄なんだな
誰かが代わりに希望のツールを作ってあげるまで延々と同じ質問をすることになっちゃう
2018/12/22(土) 16:05:02.26ID:3FbstdN40
今回のは質問者そっちのけで外野が暴走しただけだろ
100デフォルトの名無しさん (ロソーン FF59-1q7i)
垢版 |
2018/12/22(土) 16:17:42.75ID:iZWJkg8TF
いつもだな
2018/12/22(土) 16:45:04.92ID:8eMfHdb50
いつも同じなのは、問題起こすのが特定の一人なんだろうね
2018/12/22(土) 16:48:01.85ID:ejexDqVG0
特定の二人の間違いでは?
2018/12/22(土) 16:59:24.98ID:Bf3FfKs00
昔はそういうの参戦してたけど
俺が最強だとわかってからは興味がなくなった
2018/12/22(土) 17:01:56.44ID:h0Ytd2ZqM
そろそろ魔板でやって欲しい今日この頃
105デフォルトの名無しさん (ワッチョイ abeb-6UAB)
垢版 |
2018/12/22(土) 17:19:54.74ID:UXm6+Rqz0
え?これ、便乗を装った本人じゃねえの?
2018/12/22(土) 18:58:25.03ID:8REvBzyR0
一つのメソッドに処理A、処理B、処理Cがあるんだけど、処理〇と区別できる時点でメソッドとして扱うべきなんかね?
2018/12/22(土) 19:03:13.59ID:RR6G3DDfa
やってることに意味があり、それに名前が付くなら分ける
個人的には〇〇処理と名前が付くのはメソッドの単位としてはむしろ大きめ
単独で意味のある最小単位まで分けるのが理想
2018/12/22(土) 19:59:35.81ID:Bf3FfKs00
何を言ってるのかさっぱりわかりませんから設計書を書いてください
2018/12/22(土) 21:08:41.95ID:la2rnvqna
>>106
馬鹿の一つ覚えの教条主義はよくない

分けた方がそのメソッドの可読性が上がるなら分ける。
可読性に寄与しないなら無理に分けちゃダメ。
なぜならクラス全体の視点ではメンバーは少ない方がいい。
2018/12/22(土) 23:25:46.03ID:RR6G3DDfa
メソッドの可読性ってセンスが求められるからなあ
端的に言えば、そのメソッド呼び出しを見たときに、その中身をいちいち見に行かなくてもコードを理解できるかどうか、が全てだ
それができるならどこまで細かく分けてもいいし、できないなら分けないほうがマシ
処理の流れがわからんからサブプロシージャやめろおじさんの言い分も、低レベルな現場なら極めて正しい
2018/12/23(日) 00:20:31.69ID:pgnM6zpMM
そうだよな。calcって名前のメソッドがあれば計算していることはわかる。
2018/12/23(日) 00:30:49.90ID:iOIA70EQ0
とは言え、ループが把握できる大きさに抑えるのは大事
メソッドの処理の流れが見える範囲に大きさコントロールするように心がけているな
2018/12/23(日) 00:40:03.70ID:THpahYm7M
>>111
場合によるだろ
「多角形の面積」クラスのcalcメソッドを呼び出してたら面積を計算してるのは明らかであり、面積の計算方法に関心がない限りは中を見る必要はない
それが「多角形」クラスのcalcメソッドだったら意味不明だろう
極端な例だけど、そういうのってセンス無い奴は本当にセンスないから
2018/12/23(日) 00:44:44.37ID:744F4yO+0
まあそういうところに日本語のコメント書いとけばすむ話だな。
命名センスないからな。自分。。
2018/12/23(日) 00:55:46.55ID:iOIA70EQ0
メソッド名はわかり易さより英語として恥をかかない程度の単語かどうかってのを気にするな
後で見られたときに笑われたくはない
簡単な単語でもスペルはチェックする
2018/12/23(日) 08:07:40.95ID:Qo063XKD0
日本語でも良いよ
2018/12/23(日) 08:42:15.02ID:+g/rmc35M
全角文字でもOK
2018/12/23(日) 09:14:34.28ID:Ap3NimBD0
絵文字もok
2018/12/23(日) 19:57:25.95ID:6n30X/gf0
おかわりもOK
2018/12/24(月) 01:28:35.64ID:bmrfjFY/0
長さが10,15と異なるList<string>が2つあって10のListの値を15のListに先頭から埋めていきたいんだけど、ListでArray.Copyメソッドみたいなのないのかな?
2018/12/24(月) 01:53:50.78ID:JltPtxYxa
>>120
a10 = a15.GetRange(0, a10.Count);
ボトルネックでないならこんなんで十分
2018/12/24(月) 02:02:57.20ID:Z+6dfbfKa
120がやりたいのは要素の置換じゃないの?
まあ、組み込みの方法は用意さえてないので自分で書くしかないよね
2018/12/24(月) 02:11:14.58ID:Gf2UgbH0M
インプレースで置換する必要があるなら a10.Clear(); a10.AddRange(a15.Take(a10.Count)); でいいよ
少々非効率だがどうせこんなもんボトルネックにはならん
2018/12/24(月) 02:17:03.76ID:+5I2QCyu0
15の方にコピーしたいって言ってるのに逆ばっかじゃねーか
偉そうに答える前に日本語の読み方を覚えろよ
2018/12/24(月) 07:24:20.71ID:zs7tYDO50
ワラタ
2018/12/24(月) 07:24:47.31ID:zs7tYDO50
ガイジばっかだな
2018/12/24(月) 08:28:00.92ID:KFYgg8m6M
よく見ると逆ですらない
121はa15の先頭から10要素のリストだし
123はa10.Clear()後にa10.Countを参照してるので、実行後のa10は空だ
2018/12/24(月) 08:30:42.16ID:zs7tYDO50
ガイジの宝石箱かよ
2018/12/24(月) 08:35:25.17ID:APgc2n6m0
>>123
Clearしていいの?
2018/12/24(月) 08:42:01.70ID:APgc2n6m0
>>120は、こういうことなんだよな??

https://ideone.com/IBD8SG
2018/12/24(月) 17:58:02.29ID:0GmOXyNR0
>>127
うける
2018/12/24(月) 21:29:07.13ID:wShZDi2Q0
a15=a10.AddRange(a15);
で良くね?
2018/12/24(月) 22:49:22.82ID:kvP3AY+C0
a15は.Skip(a10.Count)が必要だしAddRangeは返値voidだし
a10が破壊されるのは気持ち悪すぎる せめて.Concatでやって
2018/12/24(月) 23:00:49.18ID:BVW7JO960
a10.Select((v, i) => i).ToList().ForEach(p => a15[p] = a10[p])
2018/12/25(火) 05:37:13.78ID:o3bLdzU90
質問です
applicationSettingsBaseを使って設定を保存したソフトのフォルダを移動したところ
設定がすべて消えてしまいましたが仕様でしょうか。
これを回避するためにはソフトと同じフォルダにiniを作るなどして設定を保存しないといけないでしょうか。
2018/12/25(火) 08:31:43.73ID:Pk7gkPrC0
SettingsProviderを自作すれば保存場所は変えられなかったか
2018/12/25(火) 12:19:27.12ID:H2h1tiNca
>>135
ApplicationSettingsBaseなんて使ったことないのでいい加減に言うけど、
普通に考えれば保存場所は起動したバイナリのパスになんか依存しないはずだと思うけど

http://www.atmarkit.co.jp/fdotnet/dotnettips/438winsettings/winsettings.html
ここにも書いてあるけど、バージョンとか製品名とかアセンブリの属性を何か変更したから
保存場所も変わったんじゃないの?
2018/12/25(火) 12:21:30.96ID:H2h1tiNca
ごめん>>137は訂正
俺の記憶違いで、記事にはバイナリのパスにも影響されると書いてあるねw
2018/12/25(火) 12:25:14.95ID:yMEv05zrd
>>137
いいえexeの絶対パスが変わると保存先も変わります
知らないなら適当に答えるなよ
2018/12/25(火) 12:49:04.91ID:H2h1tiNca
いいえ私はさそり座の女〜
2018/12/25(火) 20:05:08.93ID:C73Cga6+0
C#スレが伸びてるけど、unityのおかげ?
2018/12/25(火) 20:36:10.99ID:bRmFmcZ5r
いいえ
2018/12/25(火) 20:49:56.13ID:wyvxpdNe0
設定の保存ならjson.net使ったほうが幸せになれるね
2018/12/25(火) 22:00:49.69ID:nl4zamMYa
>>143
保存時のフォーマット?
2018/12/25(火) 22:03:32.60ID:cYaw21oJ0
イニファイルにしとけ
イニファイルにな
2018/12/25(火) 22:20:50.60ID:NRydG5TYM
Windows用語ではプロファイル
2018/12/25(火) 22:21:37.22ID:m1C7tGngd
>>145
老害おつ
148デフォルトの名無しさん (ワッチョイ 658a-6UAB)
垢版 |
2018/12/26(水) 06:18:38.10ID:1oivSykz0
課題で10進数を2進数の文字列に変換したいのですが、これだとびっくりすくらい遅いです。
速くするにはどうしたらいいでしょうか。

class Program
{
public static void Main(string[] args)
{
string input = Console.ReadLine();

int i = Convert.ToInt32(input);

string output = "";

while(i >= 1)
{
output = output.Insert(0,(i % 2).ToString());
i >>= 1;
}

Console.WriteLine(output);
Console.ReadLine();
}
}
2018/12/26(水) 07:14:08.48ID:H45VhGP50
>>148
stringはほとんどの場合毎回新しいインスタンスが作られるから、代わりにStringBuilder使ってみ
2018/12/26(水) 07:18:31.50ID:H45VhGP50
あとたぶん普通はこれ
https://dobon.net/vb/dotnet/programing/converthex.html#section7
2018/12/26(水) 07:35:37.09ID:gklwQdG7M
遅いっつっても一瞬じゃない?
たかが32bit整数くらいで。
試してないけど
2018/12/26(水) 09:33:17.59ID:Ts4c5NN9M
Stringは吃驚するほど遅いよ
2018/12/26(水) 10:28:31.49ID:yGWBBV+aM
遅いっつっても一瞬じゃない?
2018/12/26(水) 11:19:21.70ID:pZkVuIQAd
>>153
ループ一回ならね
2018/12/26(水) 12:39:12.50ID:UFWOb61Ja
>>150
Convertのそんなのあったな感w
でもこれゼロサプレスされるみたいだな。
まあリーディングゼロ付けるのは簡単だけども
2018/12/26(水) 19:06:58.35ID:Dcs5aUpT0
Windowsフォームアプリケーションで、
「ボタン上をドラッグしてる間(左クリック押下中、かつボタン上にカーソルがある時)」に音を鳴らしたいんだけど

Button1.MouseDownで再生、Mouseupで停止させるまでは出来ても

MouseLeaveに停止処理書いて、クリックしたままボタンからカーソル外したときには音がなり続けてしまいます

どういう記述がいいんでしょうか?
2018/12/26(水) 20:13:17.23ID:/gJf0JvK0
>>156
クリックしたままだとMouseLeaveが動かないみたいだな
https://ideone.com/c67R3i
これは音を鳴らす代わりにフォームのタイトルにMouse On/Offと表示する
MouseDownとMouseMoveでカーソルの場所を見てボタンの範囲外だと無条件でOffにする
イベントとしてのMouseLeaveは外せそうな気がするしフラグ作ってもっと作りこめると思うけど面倒だからここまで
2018/12/26(水) 21:13:57.82ID:0HU+mpFl0
ありがとうございます!
入門したて故コード読んでも理解できないけど、丸写しからの改変で勉強しながらやってみます
2018/12/26(水) 21:40:59.20ID:sOj8GKWaa
>>156
やらずに適当に言うけど、MouseDownのイベントハンドラか何かで
Captureの値をfalseにしてやったら望んでるような動作になるんと違う?
160デフォルトの名無しさん (ワッチョイ f9da-ikDe)
垢版 |
2019/01/03(木) 03:05:05.68ID:2jZ78iU60
dotnet new webapp コマンドでプロジェクト生成した時に Controllers も Models も Views も作られないので、ちょっと面食らっています。
ASP.NET Core で Razor Page を使ったアプリを作る際は、ASP.NET でいう Controllers と Models に該当するフォルダはどこに作ったらいいんでしょうか?
特にビジネスロジック部分はどこにまとめるのがいいのでしょうか?
2019/01/03(木) 05:32:43.60ID:ZmWGvR5ia
splitcontainerのpanel1に30個程度のボタンを設置し、それらは一つのイベントハンドラにまとめてて
押したボタンの色を変えるということをしようとしています

splitContainer1.Panel1.Controls[●].backColor = Color.Red ;


●の位置に入る数字はどのボタンと対応しているかがイマイチわかりません。
タブインデックスの数値とは別のようですし、どの数値の事を言っているのでしょうか。
2019/01/03(木) 06:22:31.48ID:2jZ78iU60
>>161
期待通りの回答じゃないかもしれないけど、これでもいいんでは?
protected void button_Click(object sender, EventArgs e)
{
((Button)sender).BackColor = Coler.Red;
}
2019/01/03(木) 09:33:34.04ID:mzbwP5/d0
>>160
dotnet new
2019/01/03(木) 09:49:03.47ID:92o1UEKg0
>>160
dotnet new mvc
ASP.NET Coreは3.0以降でfull .NET Frameworkを切り捨てるから、必ず.NET Coreを使うように
2019/01/06(日) 07:48:04.81ID:ys0B5FJg0
>>148
遅い原因は
>string input = Console.ReadLine();
じゃね?
ユーザーが全文字入力するのをぼんやり待ってないで
1文字でも入力された時点でその桁に関する処理を開始しとかないと
2019/01/06(日) 10:33:12.47ID:ijGp0fE40
>>165
>>149で解決すると思ったけど、その最後の行の実装例出せる?
2019/01/06(日) 10:50:54.92ID:SZQOw9ve0
>>166
件のプログラムで一番処理時間が長いのは起動だと思うから
実際にはその程度やっても変わらんでしょ
2019/01/06(日) 13:46:05.21ID:s+NsL/70M
>>165てネタじゃなかったのか?
2019/01/06(日) 15:10:03.44ID:yoKg5XOLM
何でもかんでもまずネタだと考えるのやめた方がいいですぞ
170デフォルトの名無しさん (ワッチョイ 332d-ikDe)
垢版 |
2019/01/06(日) 16:43:50.05ID:Dx0jhieJ0
ASP.NET Coreを使う練習してるんだけどさあ
実機で動かしてみるに当たって、手元のVisualStudioやVSCodeからLAN上にあるサーバ(Ubuntu)に配置して実行するまでって結構面倒に感じてしまう・・・・
これってなにかVisualStudioに配置実行を楽にする手段があるのかな?
それとも楽をしたければJenkinsかなにか勉強しなきゃあかんのかな・・・・
2019/01/06(日) 16:54:31.32ID:YMMAI1S40
今はどんな手順でやってるん?
172デフォルトの名無しさん (ワッチョイ 332d-ikDe)
垢版 |
2019/01/06(日) 18:18:02.00ID:Dx0jhieJ0
今のところ、「手元でビルド→SCPコマンドで転送→SSHで実行」みたいにしてるんだけど・・・・やっぱもっといい方法あるよな
2019/01/06(日) 18:22:43.98ID:SgRztK6B0
LINQの質問です
list1とlist2はList<int>型だとして

foreach(var value1 in list1) {
foreach(var value2 in list2) {
Console.WriteLine(value1 * value2);
}
}


これと同じことをLINQを使ってやるとしたらどう書けばいいですか?
Zipを使ってみたのですが同じインデックス同士しか掛け合わせてくれませんでした
2019/01/06(日) 20:09:56.59ID:NF88G39c0
linqでブロードキャストできたっけ?
2019/01/06(日) 20:11:35.37ID:YeoWOZf6a
>>173
メソッド構文ならSelectManyを使う
foreach (var v in list1.SelectMany(v1 => list2, (v1, v2) => v1 * v2))
{
Console.WriteLine(v);
}

この場合はクエリ構文の方が分かりやすいかも
var q = from v1 in list1
from v2 in list2
select v1 * v2;
foreach (var v in q)
{
Console.WriteLine(v);
}
2019/01/06(日) 20:13:20.52ID:NF88G39c0
>>173
ttps://dobon.net/vb/dotnet/programing/arraymap.html
これでいけんじゃね?
ConvertAll
2019/01/06(日) 21:11:45.37ID:iQ1zVEqTM
>>170
AWSとか使えば簡単だよ
MSの推奨はもちろんAzureだけど、単なるVMのホスティングサービスとして使う以上のことを期待すると正直ゴミカスなので全くお薦めできない
2019/01/06(日) 21:17:12.87ID:iQ1zVEqTM
>>176
今時ConvertAllとか紹介してるゴミサイトはさっさと閉鎖すべき
2019/01/07(月) 00:48:07.98ID:voJmrOTp0
>>178
今だと何がベスト?
2019/01/07(月) 09:13:26.65ID:yGBdcOaa0
>>175>>176
いけました!
ありがとうございます
今回はSelectManyを使おうと思います
2019/01/07(月) 09:34:56.37ID:z57KVTQ70
>>166
考え方としては、例えば「3」が入力された時点で
次の入力結果は「3」か「30」〜「39」しかありえないから
11通りの2進数表示を用意しておいて次のキーが押されたらそこで合うものを選んで表示する
どんなに10進数の入力桁数が増えても毎回11通り用意すればいいのは一緒なのと
10進数が1桁増えるときに2進数表示で最後の4桁以外の文字列は使い回せるから文字列連結処理は多少減らせる

この処理がユーザーのキー入力速度より早くCPUが処理できれば多少意味がある程度だろうけど
2019/01/07(月) 10:20:00.74ID:e8LT8JMZa
>>181
そのためにReadKeyを繰り返してたらそのオーバーヘッドの方が効果を圧倒的に上回ります
出直してきてください
2019/01/07(月) 10:28:19.23ID:3j9bnJUUM
>>181について更にツッコむと、1文字ずつ処理するなら単に入力されたキーの値を普通に反映させていけばよい
わざわざ候補を事前に用意してGCに負担をかける意味は全く無い
2019/01/07(月) 15:22:57.85ID:Nhl1xZLpa
チラシを見てキャベツが1円安いからと電車賃300円払って遠くのスーパーまで買いに行くような無駄な努力に思える。
2019/01/07(月) 19:03:54.28ID:RNZAQQS50
ネタを元にボケてるだけかと思ったら
2019/01/07(月) 19:56:07.52ID:ukOyD8nn0
Json.NETを使ったデシリアライズについて教えてください。
以下のようなJsonファイルを読み込んで、リストにデシリアライズをしたいです。

[
{
"email": "foo.example.com",
"active": true,
},
{
"email": "bar.example.com",
"active": false,
}
]

しかし、デシリアライズ時に、オブジェクトが2つ以上会い場合に例外が発生します。
using ( var sr = new StreamReader( @".\accounts.json" ) )
{
var accounts = JsonConvert.DeserializeObject<List<Account>>( sr.ReadToEnd() );
}

例外
Newtonsoft.Json.JsonSerializationException

エラーの原因はわかるのですが、解決策が思いつきません。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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