X



ふらっと C#,C♯,C#(初心者用) Part135
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 8b75-uWnk)
垢版 |
2018/02/04(日) 22:02:28.59ID:FbKpa1HN0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part134
http://mevius.5ch.net/test/read.cgi/tech/1511951038/
■関連スレ
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: default:vvvvv:1000:512:----: EXT was configured
0154愛恥人
垢版 |
2018/02/06(火) 22:40:30.16
>>149
LINQは手続き型(?)よりも簡単で良いと思っていたのですが勘違いだったのですね(>_<)
参考にします(>_<)

>>150
元の2行のコードというものが分からないです(>_<)
すみません。

>>151
列挙型にForEachがないみたいですね(>_<)
ごめんなさい(>_<)
0155デフォルトの名無しさん (ワッチョイ 179d-jn1r)
垢版 |
2018/02/06(火) 22:56:56.00ID:vApM+tA70
>この二つを混同してるんだろうね。
>LINQは前者であって後者じゃないのよ。

折角のアドバイスにきつい言い方と思うかもしれないが、抽象的な説明よりも具体的に説明をすると
初心者には分かりやすい。あなたにも初心者の部下が沢山いるとおもうがそういうことを心掛けた方がいいと思う。
一番具体的なのは正しいコードで示すこと。
二番目はキーとなる概念が入った間違ったコード。(実際には正しいコードを空で書くのは、ベテランでも難しいからね)
3,4,がなくて5が説教。w
0156デフォルトの名無しさん (ワッチョイ 179d-jn1r)
垢版 |
2018/02/06(火) 23:11:07.29ID:vApM+tA70
>それになぜそんなにリンクにこだわるのか

リンクに拘ってるのはもちろん初心者に最も理解しやすいからで、Zipにとくに拘ったのは
二つのシーケンスを同時に回せないと、一方でForeachを使いながら、同時にカウンターを
回すという不細工なことになるから。
0158デフォルトの名無しさん (ワッチョイ 1716-uWnk)
垢版 |
2018/02/06(火) 23:38:39.75ID:zHDOWiCX0
なんだそのゴミレス...
0160デフォルトの名無しさん (アウアウウー Sa5b-+DFt)
垢版 |
2018/02/06(火) 23:46:58.21ID:vvoO9Mxfa
回答者に対して具体的にコードを書かないといけないと言い出す初心者
モンスター質問者

自分で手を動かして試して考えられないならコードを書く意味なんてない
永遠に誰かに書いてもらえよ
ここでいくらコードを聞いても無駄だな
0161デフォルトの名無しさん (ワッチョイ 174b-uWnk)
垢版 |
2018/02/06(火) 23:47:34.86ID:mI26xXvn0
必死やな。
0163デフォルトの名無しさん (ワッチョイ f7e3-uppE)
垢版 |
2018/02/07(水) 01:30:26.34ID:SevIc5yx0
ごちゃごちゃ言わずにスルースキルを鍛えろよ
最近はLINQコード書いたレスは全部NGブチ込んでる
こいつの質問超つまんないし
だいたい自分で作成できる処理について他人に質問するなんて気持ち悪いよ
0164デフォルトの名無しさん (ワッチョイ 178d-uWnk)
垢版 |
2018/02/07(水) 01:41:27.68ID:Lh7Y15yl0
オッサンか。
0167122 (アメ MMfb-xw+F)
垢版 |
2018/02/07(水) 10:29:05.60ID:2q33vA06M
>>122 ですが自己解決しました。
Parallel.Forにしたら問題なく動きました。
0173デフォルトの名無しさん (ワッチョイ 57b3-wbgk)
垢版 |
2018/02/07(水) 17:10:10.88ID:IuIKj6k10
SVGを使いたくてNuGetからSVG2.3というのをインストールしたんですが
これってマニュアルみたいなものはないんですか?
とりあえずググってみて簡単な長方形とテキストは表示できたんですが
どうやって覚えたらいいんでしょうか
0176デフォルトの名無しさん (ワッチョイ bf3b-YYog)
垢版 |
2018/02/07(水) 19:06:14.35ID:w9LO8NrH0
Visual Studio Community 2017 を使って
特定のフォルダ「c:\hoge」以下のサブフォルダを列挙する
UWPアプリを作ろうとしています。

IEnumerable<string> subFolders = Directory.EnumerateDirectories(@"c:\hoge", "*", SearchOption.AllDirectories);

foreach (string subFolder in subFolders) {
MessageDialog md = new MessageDialog("");
md.Content = subFolder;
md.ShowAsync();
}

とすると
System.UnauthorizedAccessException:
'Access to the path 'c:\hoge' is denied.'
とのエラーとなります。

しかし、対象フォルダをデバッグビルドされるフォルダ
「C:\foo\bin\x64\Debug\AppX」にすると思った挙動となります。

デバッグビルドされる以外のフォルダにアクセスできるようにするには
どうすればいいでしょうか?
ちなみに Visual Studio を管理者権限で実行しても変わりませんでした。
以上、お知恵をお貸しください。よろしくお願いします。
0178デフォルトの名無しさん (ブーイモ MMcf-+DFt)
垢版 |
2018/02/07(水) 19:19:24.20ID:wak0MWKrM
忘れたけどユーザーにフォルダピッカーで選ばせないとアクセスできない

アクセスしたらその情報を保存する方法があって次回からそこは普通にアクセスできるようになる
めんどくさいからUWPやPCLは触りたくない
0180デフォルトの名無しさん (ブーイモ MMcf-+DFt)
垢版 |
2018/02/07(水) 19:25:52.82ID:wak0MWKrM
初心者はUWPを避けたほうがいいと思う
UWjP自体使われていないからこんな質問が出てくる
これ以外にもめんどくさい仕様がてんこ盛り

ある程度勉強が終わった後改めてUWPやったほうがいいよ
0183122 (アメ MMfb-xw+F)
垢版 |
2018/02/07(水) 20:06:28.97ID:F0tz6mVZM
>>172
後出しですいませんが
並列化したかった箇所は外部の特殊な装置へのアクセスで並列化した数だけドライバのインスタンス持ってます。
arrayとしましたが、最終的にはconcurrentDictonaryを使い装置からのデータをまとめています。

async await使ったことないのですが、
また調べてみます。 ところでそもそもの質問ですが、
>>122のコードでtask内からループカウンタを参照した時にnumItems以上になるのでしょうか?
0186恥人
垢版 |
2018/02/07(水) 20:49:50.30
スレチ
0187デフォルトの名無しさん (スッップ Sdbf-Ismr)
垢版 |
2018/02/07(水) 21:17:02.65ID:2uWQJaLvd
>>183
whileのタスクの終了待ち?が機能してない
だからタスクより先にi++が行われる可能性があるのでエラーの現象がでてる
IsCompleteってプロパティがあるからそれを使うといいよ
0189デフォルトの名無しさん (ワンミングク MM7f-NUVM)
垢版 |
2018/02/07(水) 21:31:07.99ID:QlGLhKOtM
既存のXMLを編集したい
編集したタグ以外の要素はテキスト表現を変えたくない

どうしたらいいかな?
コンペア取った時に編集した箇所以外も差分に含まれてしまい困ってる
1回DOMを経由してる以上仕方がないのかもしれないけどなんとかしたい
0191122 (ワッチョイ 97b3-xw+F)
垢版 |
2018/02/07(水) 21:42:13.93ID:3m9Z95aP0
>>188
検証ありがとうございます。
各taskがパラレルに実行されてるから期待どおりです。
IsCompleteにすると当然Serialに実行されるのでやりたい事じゃないです

whileは終了まちではなくdebug用途で足しました。
0192デフォルトの名無しさん (ワッチョイ 179d-jn1r)
垢版 |
2018/02/07(水) 21:42:16.51ID:e8WHE/qt0
それは簡単だよ。編集した箇所いがいは差分にでないコンペアをすればいいだけだ。
0193デフォルトの名無しさん (スッップ Sdbf-Ismr)
垢版 |
2018/02/07(水) 22:16:31.84ID:o630JNc0d
>>191
そうなのか
それならインデックスの宣言をタスクの外に持ってくだけで希望通りの動作になったのに
パラレルforだと、forのあと重たい処理やってからwaitみたいなことできないから気を付けてな
0194122 (ワッチョイ 97b3-xw+F)
垢版 |
2018/02/07(水) 22:36:14.66ID:3m9Z95aP0
>>193
あ、確かにtaskの外に置くべきでした。
元はindex = iもなしで直接iを参照してたのでってよく考えると危ないことしてました
0196デフォルトの名無しさん (ササクッテロレ Spf1-ST63)
垢版 |
2018/02/08(木) 07:40:14.42ID:2nTnRFgHp
いきなり質問失礼します
スクレイピングで取得した要素を
while (true)
{
var B = driver.FindElementByid(''id1").Text;
var S = driver.FindElementByid(''id2").Text;
Console.WritLine("要素Bは{0} 要素Sは{1}", B, S);
}
でコンソールに表示しています
BとSには常時変化する小数点のある数字が入ります。
この後、

if (B > S)

を実行したいのですが、BもSも文字列として認識されている為出来ません。

数字として認識させる為にはどうすればいいですか?
0199デフォルトの名無しさん (ササクッテロレ Spf1-ST63)
垢版 |
2018/02/08(木) 10:13:31.71ID:2nTnRFgHp
>>197
変換出来ませんと出て行き詰まってます

>>198
単にどちらが大きいか見て
コンソールに大きい方を表示させたいだけです
0205デフォルトの名無しさん (オッペケ Srf1-d1eD)
垢版 |
2018/02/08(木) 12:20:41.72ID:M09TAhGFr
>>203
ワイはお前の知性を疑っとるで
余計な事言うとすぐばれんねんバカって
0206デフォルトの名無しさん (ササクッテロレ Spf1-ST63)
垢版 |
2018/02/08(木) 12:40:08.26ID:2nTnRFgHp
>>200
それをする事でどうなりますか?

>>203
始めて1週間なので、
そう思われる理由が分からないので教えてください

>>204
ありがとうございます
試してみます!
0208デフォルトの名無しさん (ワッチョイ e1eb-5/Jh)
垢版 |
2018/02/08(木) 15:08:58.18ID:JTkprNeY0
無駄なメモリの確保を防ぎつつ、フィールドのスコープを限定する方法を教えてください

現在、このようなメソッドを用意して秒間300回程度と頻繁に呼び出しています
void A(){
byte[] data = new byte[1024];
//dataに書き込む処理省略
}
しかし、私の行う用途にでは、呼び出しのたびにdataの配列分確保するのは無駄で、前回の使い回しで十分なんです
dataをメソッドの外で宣言しメモリの確保もすればいいのかもしれませんが、スコープが広がってしまいます(すでに書いてしまったコードがdataという名前のフィールドだらけで収拾がつかなくなっています)
何か手軽に無駄なメモリ確保を防ぐ方法は無いのでしょうか?
よろしくお願いします
0210デフォルトの名無しさん (アウアウエー Sa4a-W6/A)
垢版 |
2018/02/08(木) 15:34:43.45ID:OcC2yENka
>>208
VBにはインスタンスと同じ寿命でスコープだけメソッドの変数があるけどC#にはありまへん。
意味があると思えんけど、ラムダ式のキャプチャを利用して、byte[]ではなくFunc(byte[]>のフィールドを持つとか。

まあ、そういう馬鹿馬鹿しいこだわりを捨てて、素直にbyte[]のフィールドを持つのが一番でしょう。
0211恥人
垢版 |
2018/02/08(木) 15:45:33.68
>>196
常時更新ってC#のコードでDOM操作するってこと?
0213デフォルトの名無しさん (ワッチョイ 2260-wuSi)
垢版 |
2018/02/08(木) 16:39:44.59ID:NS8cMe+I0
この間のwin10のアップデートでwebbrowserの挙動に何か変化有りませんでしたか?
0214デフォルトの名無しさん (ササクッテロレ Spf1-ST63)
垢版 |
2018/02/08(木) 17:48:49.85ID:2nTnRFgHp
>>207
変換出来ませんと表示させるコードを書けば、解決策が見つかると言う意味で解釈したらいいですか?

変換出来ませんと表示させるコードを書く理由が分からないので教えてもらえると助かります。
0215恥人
垢版 |
2018/02/08(木) 17:50:05.38
ワロタ
0216デフォルトの名無しさん (ササクッテロレ Spf1-ST63)
垢版 |
2018/02/08(木) 17:53:07.66ID:2nTnRFgHp
>>211
これがDOM操作と言うのか私には分かりませんが、
ウェブサイトに表示されている、リアルタイムで変化している数字を読み取って比較して表示するという操作がしたいって事です
0219デフォルトの名無しさん (ササクッテロレ Spf1-ST63)
垢版 |
2018/02/08(木) 18:11:56.95ID:2nTnRFgHp
>>218
申し訳ない
seleniumでphantomjs driverです
0228デフォルトの名無しさん (ワッチョイ 99b3-ST63)
垢版 |
2018/02/08(木) 19:17:49.11ID:2Quw3/HN0
>>204
これでいけました
ありがとうございます
0233恥人
垢版 |
2018/02/08(木) 21:06:28.03
>>230
isって「である」じゃないのけ?
0234デフォルトの名無しさん (アウアウカー Sa69-Xwku)
垢版 |
2018/02/08(木) 21:07:27.62ID:iBuunKtKa
Is〜もやれやれってため息つくよな
0239デフォルトの名無しさん (スップ Sdc2-gWXE)
垢版 |
2018/02/09(金) 09:40:28.56ID:/RflGba8d
>>226
trueとfalseを=で書く、falseだけ=で書く、falseだけ!で書く
どれでもいいけど!を使いたくないって話はよく聞くな
falseを=で書くならtrueも同じ様に書いた方が見やすいかもね
0241デフォルトの名無しさん (アウアウウー Saa5-nHV3)
垢版 |
2018/02/09(金) 11:00:06.20ID:fIXFpK3Ia
if(a==true) if(a==false) ははっきり言ってダメなやり方
たとえば b!=’1’の結果としてaがあった場合
aには充分な論理的結果が入っているのに
それを比較してる

つまり
if(b != '1')
bが'1'でないならを
if((b !=' 1') == true)
bが’1'でないが真なら としてる

無駄に条件比較の次元が増えてる
0243デフォルトの名無しさん (ブーイモ MM62-sLQd)
垢版 |
2018/02/09(金) 12:40:19.33ID:Un6XU7IsM
>>240
はるか昔に開発終わってるから何も変わってないよ
今のVSでアグレッシブに開発進んでるのってプラットフォームでいえばWeb関係でCoreとかAzure、
VS自体の機能でいえばチームコラボレーション系がメイン
もはや昔ながらのクライアントアプリ開発者には何の恩恵もない代物
0244デフォルトの名無しさん (ブーイモ MM62-sLQd)
垢版 |
2018/02/09(金) 12:55:39.76ID:Un6XU7IsM
あと、日々のマイナーアップデートで平気でC#の言語のバージョンが上がるという、昔のMSからするとありえないことをやってる
プロダクトを自己責任で軽いノリでリリースできるような事業形態の組織なら、
ある日突然新しい構文が使えるようになったりして楽しいからVS2017に移行する価値はあるよw
0245デフォルトの名無しさん (アウアウエー Sa4a-W6/A)
垢版 |
2018/02/09(金) 13:29:03.11ID:HaVaZvGAa
>>237
それも違うというか、まさにそういう考え方をする人が>>226みたいな書き方をするんだと思うw
ifを○○なら××する、みたいな条件判断だと考えると、○○の箇所に比較演算子を書きたくなっちゃう。
(だからBASIC上がりの人はこういうコードを書きたがる)

逆にifなんて実態は機械語のJZ(Jump if Zero)で、要するに単に値を評価して分岐するだけ、
って考えると>>226みたいな書き方見るとなんじゃこりゃって思っちゃう
0250デフォルトの名無しさん (ワントンキン MM92-O/nr)
垢版 |
2018/02/09(金) 18:08:05.87ID:boHsluDEM
>>245
プログラマは考えてはいけない
どんなにおかしなプログラムになっても設計書の通りに書くことが大切
製品の品質より方法論や会社のルールを優先しよう
それがサラリーマンのあるべき姿だよ
0254デフォルトの名無しさん (ワッチョイ c223-g12m)
垢版 |
2018/02/09(金) 21:56:26.91ID:I0pHcAAD0
単純にa==trueって書くときa=trueっていうミスしたときに発見難しいけど
true==aって書くようにしてたらtrue=aってミスしてもコンパイル通らないから見つけやすいよねってだけじゃないの?
昔客先常駐でIT土方してた先輩はそう言ってた
■ このスレッドは過去ログ倉庫に格納されています

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