X



ふらっと C#,C♯,C#(初心者用) Part138
レス数が1000を超えています。これ以上書き込みはできません。
0273デフォルトの名無しさん (ワッチョイ 1f06-cOHa)
垢版 |
2018/06/23(土) 00:04:23.96ID:4A65QZOx0
>>267
クライアントPCからデータベースに接続します。webサービスで排他処理します。
サーバーの負担を増やしたくないとの事で、とにかく同時期にセッションを増やさないという方針は決定してます。
なので排他処理はどこかでやる事になるのですが、どこかのPCで動くアプリよりやり取りも含めて楽かなと思ったのですが。
0277デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
垢版 |
2018/06/23(土) 02:29:38.11ID:RCtrcOsy0
>>273
>クライアントPCからデータベースに接続します。webサービスで排他処理します。
webサービスは何をもらって何を返す気なんだ
なんにしても俺には想像もつかない方式を検討してそうだ
0278デフォルトの名無しさん (ワンミングク MMdf-h3K6)
垢版 |
2018/06/23(土) 06:55:53.26ID:DOoRmJ6HM
>>273
webサービスの中で普通にコネクションを開いて使い終わったらすぐにDisposeすればいいよ
ライブラリがいい感じにコネクション数を調整してくれる

どうしてもマニュアルでコネクションの数を制御したいならDB要求をループで処理し続けるスレッドを走らせて、他のスレッドとはキューで連携させる
0280デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 09:10:53.59ID:kilEB0fc0
tes
0281デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:25:15.28ID:kilEB0fc0
test
0282デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:28:34.91ID:kilEB0fc0
fwくぇ
0283デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:42:17.32ID:kilEB0fc0
fwq
0284デフォルトの名無しさん (ワッチョイ 1f75-E6HK)
垢版 |
2018/06/23(土) 11:44:04.15ID:kilEB0fc0
fwqef
0287デフォルトの名無しさん (ワッチョイ 7f9d-hF4h)
垢版 |
2018/06/23(土) 17:51:20.90ID:RCtrcOsy0
>>286
それだと(外部から)引数必須なインスタンスしか作れなくなる
それが設計通りならそれでいいけど

引数必須なインスタンスと引数なしのインスタンスが同一クラスである必要あるのか疑問だ
引数なしのクラスを継承して引数ありのクラス作れば良い気がするぞ
0292デフォルトの名無しさん (アウアウエー Sa7f-3IMT)
垢版 |
2018/06/24(日) 00:10:47.78ID:tHXuj/n7a
ああ、なんか質問を読み違えてたけど、
要は現実の使われ方として、特定のプロパティがまったく必要とされないケースがあるってことね。

単純に考えると>>287がシンプルで分かりやすいように思うけど
ケースバイケースではあるが、一つのプロパティを追加しただけのサブクラスってのも
存在意義がはっきりしないというか、名前付けに困るようなクラスになりがちのようにも思う

コンストラクタで明示的に指定されない場合はプロパティの値が規定値としておくのが
無難なケースの方が多いと思うけどね
0293デフォルトの名無しさん (ワッチョイ 7f9d-fJsd)
垢版 |
2018/06/24(日) 01:25:17.80ID:GW8ybopf0
>>291
設計論だっていってるんだから、設計の美しさだよ
美しさの基準は人によって違うからほとんど宗教論なんだがなw

>>291
>コンストラクタで明示的に指定されない場合はプロパティの値が規定値
コンストラクタで指定するものが、プロパティで指定できるようなものなら確かにそれが一番無難
ただそれなら引数つきコンストラクタの存在意義がなぁ
たんにコードが短くなるぐらいだが、オブジェクト初期化子でプロパティ設定するのと大差ない気がするし
0294デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
垢版 |
2018/06/24(日) 23:01:38.61ID:euoTg7OM0
webBrowser1.documentText=hoge;
で生成したHTML中にページ内リンクがあります。
(<span id="xxx"></span>)
クリック操作をせずにこのアンカーにジャンプすることはできるのでしょうか?
0296デフォルトの名無しさん (ワッチョイ 1f56-DJU/)
垢版 |
2018/06/24(日) 23:43:26.59ID:euoTg7OM0
エラーは出ないのですが、ジャンプはしてくれませんでした。
単なるアンカーなので、直接それをクリックしても意味はなくて、
<a href="#xxx">XXX</a>をクリックするようにしないとジャンプしないのではないでしょうか?
(なお、ページ内に↑を用意していないので、これをクリックすることはできません)
0300260 (バッミングク MM53-+a6w)
垢版 |
2018/06/25(月) 17:57:14.07ID:TcWThoAPM
引数有り無しのコンストラクタで相談した者ですが色々とご意見ありがとうございます
先輩無しの独り開発なので参考になります

何が正しいかはプロジェクトの性質に左右されそうなので突き詰めませんが、驚き最小の法則的に見ると、無意味なメソッドをコール出来るとかどんな気持ちでしょうか?

私は後々混乱しそうなので避けたいのですが、さほど驚かれないならこのまま実装しようかとも
0302デフォルトの名無しさん (ワッチョイ ff7f-E6HK)
垢版 |
2018/06/25(月) 21:56:47.71ID:lw6peYFv0
暇つぶしにunityでプチゲームを作ろうとしているのですが
以下のような処理をしています。
https://dotnetfiddle.net/p6v66Z
スキルが増えるごとにSkillFactoryとTypeToParameterに分岐が増えていってしまって
なんだかなあという感じなのですが、もうちょっとマシな方法はないでしょうか。
SkillParamが諸悪の根源のような気もしていますがほかにうまい方法がおもいつかず。。
0303デフォルトの名無しさん (スプッッ Sd7f-E6HK)
垢版 |
2018/06/25(月) 22:01:12.17ID:XS6tlG59d
githubでC#で書かれたソースコードを見るとVisual Studioで作成したファイルが見当たらないんですが、
Visual Studioを使わないほうがいいんでしょうか?
0306デフォルトの名無しさん (ワッチョイ ffe8-GwbS)
垢版 |
2018/06/25(月) 22:30:53.83ID:QLHuH/320
ListでKey値が一致する要素を探して
内容を更新するにはどうすればいいの
ループで検索するしかない?
0308デフォルトの名無しさん (ワッチョイ ffe8-GwbS)
垢版 |
2018/06/25(月) 22:49:08.14ID:QLHuH/320
>>307
2次元にしてキー項目を自分で作ったのよIndex用に
0312デフォルトの名無しさん (ワッチョイ ff76-XQuB)
垢版 |
2018/06/26(火) 09:58:06.77ID:1CiOys6I0
object型のメンバ?の値を文字列型に代入したいのですが
どのように書けば良いでしょうか?
static void Main(string[] args)
{
var obj = new { a = "a", b = "b" };
Hoge(obj);
}
static void Hoge(object obj)
{
string fuga = obj.b.ToString(); //この書き方で怒られてしまいました
}
object型は基本のようなので、根本的な所を理解していないのかも知れませんが
よろしくお願いします。
0318デフォルトの名無しさん (ワッチョイ 7f61-E6HK)
垢版 |
2018/06/26(火) 14:41:15.83ID:yB7+BiTZ0
インスタンスメソッドとstaticメソッドの使い分けがいまいちわからないので教えてください
public class Hoge {
private string Name { get; } = "piyo";
public Hoge(string name) {
Name = name;
}
}
上記のようなクラスがあり、これをvar hoge = new Hoge("foo"); とインスタンス化したとして、

public bool IsPiyo(){
return Name == "piyo";
}
上記のようなインスタンスメソッドを書いて、hoge.IsPiyo()とするのと、

public static bool IsPiyo(Hoge hoge){
return hoge.Name == "piyo";
}
上記のようなstaticメソッドを書いて、Hoge.IsPiyo(hoge)とするのでは、どう違い、どちらにするべきでしょうか?

なんとなく、staticの方が入力と出力がはっきりしてるのでわかりやすいのかなと思うのですが、オブジェクト指向ではないですよね
0319デフォルトの名無しさん (ワッチョイ 7fc3-KTKp)
垢版 |
2018/06/26(火) 14:59:10.81ID:FPh9h90J0
インスタンスが必要かどうか。
stringクラスのCompareメソッドとCompareToメソッドが良い例。

前者はパラメータがnullでも通るが、後者はインスタンスが無いとダメ。
0320デフォルトの名無しさん (アウアウウー Sae3-GwbS)
垢版 |
2018/06/26(火) 15:53:58.50ID:B40aLJ4va
インスタンスメンバーを参照してないならstaticにしてる
でも必ずすべきとは思わない
仮に日本語にして考えてみる
人間クラスに "はピヨです()"メソッドをそれぞれ実装すると

if(人間.はピヨです(彼)) {〜}

if(彼.はピヨです()) {〜};

これを見るとstatic はおかしいと思うがstaticにすることが多い
0322デフォルトの名無しさん (アウアウカー Sa93-XuiQ)
垢版 |
2018/06/26(火) 19:39:44.60ID:2rJMn7sUa
あー、ちょっとわかってきたかもです
主語というか、意味的に、表現したい意図に近い方を選ぶ感じですかね
とりあえず今回の例で言うと、インスタンスメソッドにすることにします
0323デフォルトの名無しさん (ワッチョイ 7f51-4N5G)
垢版 |
2018/06/26(火) 22:41:11.75ID:oc0D76610
RuntimeHelpers.PrepareMethod(RuntimeMethodHandle)の挙動が理解できない・・・
このコードでm2にPrepareMethodを使うことは不可能ですか?
==
using System.Runtime.CompilerServices;

class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }

class Program
{
  static void Main(string[] args)
  {
    var m1 = typeof(C1).GetMethod("M").MethodHandle;
    var m2 = typeof(C2).GetMethod("M").MethodHandle;

    RuntimeHelpers.PrepareMethod(m1); // 問題なし
    RuntimeHelpers.PrepareMethod(m2); // System.ArgumentException: '指定されたジェネリックのインスタンス化は無効です。'
  }
}
==
0329デフォルトの名無しさん (ワンミングク MMdf-cOHa)
垢版 |
2018/06/27(水) 19:05:45.76ID:Eyd8ciC/M
複数のアプリで1つのserial portを使いたくて、dllで受けて受信データによって別々のイベントを発生させ、複数のアプリに受信させようと考えました。
dll内のSerialPortをstaticで持てば共有できるかと思ったのですが、staticで宣言しても呼び出し元が別プロセスだと共有されないようですね。
何かいい手はないでしょうか。
0330デフォルトの名無しさん (ワッチョイ ff33-mTVk)
垢版 |
2018/06/27(水) 19:33:53.09ID:cLV89PFx0
シリアルポートと通信するサーバを作って
必要な数だけクライアントを待ち受けるのが楽なんじゃないの
プロセス間通信はソケットやパイプとか適当なものを使う
0335デフォルトの名無しさん (アウアウカー Sa93-xWgw)
垢版 |
2018/06/27(水) 23:25:13.59ID:YJH26+lwa
シリアルポートはなんかが掴んでたらだめだよね
0343デフォルトの名無しさん (ワッチョイ 7e33-AF1h)
垢版 |
2018/06/28(木) 01:12:05.63ID:5aYb43f30
dllのstatic云々はおいといてメモリマップトファイルならC#でも使えたかな
C++ならデータセグメントを共有メモリにできる
どちらにしろプロセス間の排他制御が必要
0344デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 01:31:16.24ID:o5j8xzNra
>>342
宛先なんかなく、単に全部のアプリに同じデータがブロドキャストされれば
十分って場合もあるでしょ

例えばシリアル経由で計測器か何かのデータが送られてくるとして、

(1) 画面表示だけするアプリ
(2) エクセルにログを保存するアプリ
(3) 計測データを使って何か他の機器を制御するアプリ

何かの都合でこんな風に複数のアプリに分けて作る必要があるのかもしれない
0345デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
垢版 |
2018/06/28(木) 01:38:37.90ID:KZQYx/g/0
C#でのSelenium操作についても質問していいですか?
0346デフォルトの名無しさん (ワッチョイ 8251-hbKR)
垢版 |
2018/06/28(木) 05:25:02.37ID:mpKH796a0
>>331
レスどうもです!下のようにして上手くいきました
こうなってくるとm1に対する方法はたまたま問題が起きないだけで
m2やm3の方法のほうが望ましいように思えてきましたがそういう認識であってますか?
==
using System.Runtime.CompilerServices;

class B<T> { public void M() { } }
class C1 : B<int> { }
class C2 : B<string> { }
class C3 : B<int> { }

class Program
{
static void Main(string[] args)
{
var m1 = typeof(C1).GetMethod("M").MethodHandle;
var m2 = typeof(C2).GetMethod("M").MethodHandle;
var m3 = typeof(C3).GetMethod("M").MethodHandle;

RuntimeHelpers.PrepareMethod(m1); // 問題なし
RuntimeHelpers.PrepareMethod(m2, new[] { typeof(string).TypeHandle }); // 問題なし
RuntimeHelpers.PrepareMethod(m3, new[] { typeof(int).TypeHandle }); // 問題なし
}
}
==
0347331 (ワッチョイ 79b3-yQv9)
垢版 |
2018/06/28(木) 07:24:39.78ID:TtGcC5rD0
>>346
(確固たるソースに基づく訳じゃないので推測だけど)値型か、参照型かじゃない?
参照型の場合は TypeHandleを指定する必要がある、ってこと。
0348デフォルトの名無しさん (ワッチョイ c175-sWPm)
垢版 |
2018/06/28(木) 07:34:23.33ID:wMDqdzUG0
>>341
よく解らんけどdllってアプリごとにメモリに個別に展開されて初期化されるからソースコード上で同じ変数名にアクセスしても実態は違うので共有できないのは当たり前なきがする
0352デフォルトの名無しさん (ワッチョイ a2c3-5/xb)
垢版 |
2018/06/28(木) 10:06:45.02ID:uTPw2MsS0
何がしたいのか知らんけど、Win2k時代にシリアル通信のロガー作ったことある。あんときは、DLLをフックしてCreateFile,ReadFile,WriteFileのデータをトレースしたが、ハッキリ言ってやめたほうが良い。
0355デフォルトの名無しさん (ドコグロ MM22-9w61)
垢版 |
2018/06/28(木) 12:52:45.79ID:q5PWc0B3M
>>332, >>342, >>353
受信データによって
って書いてるから何らかのプロトコル決めてて、アドレスとかポート番号とかの振分け用の情報あるんだろ
LANケーブルは1本でも複数のプロセスで共有してるのと同じ
ここまで書けばよほど頭の悪い奴でなければわかると思うが>>329が言うようなことは実現可能
http://nobikko-nobinobi.hatenablog.com/entry/2017/09/13/234555
ただC#だけでできるかどうかは知らん
0358デフォルトの名無しさん (アウアウウー Sa85-yQv9)
垢版 |
2018/06/28(木) 13:48:50.61ID:f040o02ua
>>356
残念だけどそれはプロセス間の共有メモリの話であってシリアルポート共有じゃないよ

シリアルポートは排他でしか開けないので他の人が書いてるようにシリアルポートをサービスで開いておくしかない
それがどのような形をとるかはいろいろある
0359デフォルトの名無しさん (オイコラミネオ MM16-Kqr9)
垢版 |
2018/06/28(木) 15:13:33.45ID:5RaMOuHjM
通信量など条件にもよるけど、
シリアル受信プログラムは、データの種類によって接頭語+日時名のファイルを作る。
各アプリはファイル監視して自分用のを実行する。
とかユルイ連携にするのも手かと。同時開発しやすいしテストやトラブル対処も楽。
0360デフォルトの名無しさん (ワッチョイ fe9f-TN0y)
垢版 |
2018/06/28(木) 15:19:28.79ID:poFZ3+du0
ASP.NET CoreにはJavaの@Transactionalのような仕組みはないのですか?
DispatchProxyを使ってトランザクション管理を自前実装してますがより一般的な手段があるなら乗り換えたいです
0361デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 15:21:33.85ID:pHy9VzUja
今時232C使ってるようなデバイスでそんな振り分けが必要なデータなんか送ってくる可能性は低いと思いうけどねw

I2Cとか485をエミューレートしてるとかなら知らんけど
そんなデバイス聞いたことないけどさ

アプリ作るのも、ブロードキャストして要らないデータはアプリ側で捨てる方が簡単で
保守性も高いでしょう
0363デフォルトの名無しさん (ササクッテロ Sp51-r5YT)
垢版 |
2018/06/28(木) 17:08:19.49ID:mI3gmfcxp
普通のシリアル通信にコンフリクト回避のネゴエーショ等の機能は存在しないんだが、どうするつもりなんだろうな。
RS422規格の通信にするにしても、ドライバーが対応してないと難しいよな。ハードフロー制御なドライバーにして後はハードに頑張ってもらうのかな?
0368デフォルトの名無しさん (ワッチョイ 39bb-yLSg)
垢版 |
2018/06/28(木) 18:25:00.98ID:hgy03eod0
また必死なのが沸いてるなァ
0369デフォルトの名無しさん (ワッチョイ 8251-hbKR)
垢版 |
2018/06/28(木) 19:07:13.57ID:mpKH796a0
>>347
ありがとうございます
いろいろ試してみたところ、書いてもらった通りメソッドを宣言したオブジェクトのジェネリック型引数が
全部値型ならPrepareMethodの第2引数は要らないみたいです
でも値型と参照型が混在する場合は参照型のハンドルだけ渡せばいいというわけではなくて
値型のものも含めて渡す必要があるみたいなので、
やっぱり基本的にメソッドを宣言したオブジェクトがジェネリック型引数を持つなら
第2引数は必要と考えたほうが安全な気がします
0373デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 19:29:53.64ID:u+1Q3Zjpa
>>372
これやるのも2chの馬鹿の特徴だよね

これ見るといつも思うが、こういう馬鹿には自分自身を見る自意識がないのかね。
お前自身がやってることは何なんだw

それ以前に必死だったら何なのかね。意味が分からん
まるで「お前ウンコした!!!」って騒いでる中学生だけど、ガチでそのあたりで精神年齢止まってる可哀想なお方なんだろうけどね
0375デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 19:36:30.54ID:u+1Q3Zjpa
232C使うようなデバイスでアドレスだのポート番号だの、振り分けが必要なケースなんかレアだろう、
(質問者もそんなこと言ってない)ってのはごく普通の感想だと思うけど、異論があるならできれば
具体例上げて反論すればいい。

マウントがどうとか中学生じみたことしか言えない馬鹿は黙ってろって
いい歳こいて恥知らずかよ
0381デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 20:25:36.86ID:u+1Q3Zjpa
>>379
それは愚問。
ただ、昨日から言ってるように、現実的に考えれば質問者がやりたいことは
>>344みたいな感じである可能性が一番高いと思う。

もちろん、仮想的な複数の通信チャンネルを実現したい可能性も否定はできない
0385デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 20:47:01.29ID:u+1Q3Zjpa
>>382
こいつもいつも思うけど、これで自分をおかしいと思わないんだから幸せでいいよねw
前から誰のこと言ってるのか知らんけど、この意味不明な粘着質、普通にストーカーと同じメンタルだ
0386デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/06/28(木) 20:53:26.04ID:u+1Q3Zjpa
そもそも匿名掲示板で誰かを「特定」して付きまとってやろう、って動機が理解不能だけど、
普通の人間だったらそんな動機を持つ俺って異常なんじゃないかと悩むと思うんだけど...

いや悩まなくても、多少知恵がある人間なら、それって(2chにはよくいる)負けを認めるだけの
精神的強さを持たない弱者の「精神勝利法」なんじゃないか、とか思うと思うんだけど
0388312 (ワッチョイ 4676-Fd17)
垢版 |
2018/06/28(木) 22:49:06.80ID:RNZwZaAN0
遅レスですがobjectをdynamicに変えて値を取る事が出来ました

こんな便利な型があるんですね
ありがとうございました
0391デフォルトの名無しさん (ワッチョイ 692b-r95U)
垢版 |
2018/06/29(金) 08:53:11.26ID:HPFHtU9c0
>>329
答え出てると思うけど
プロセスは3つにする
1つのプロセスはシリアル通信のサービスを提供
他の2つはクライアントとしてシリアル通信の要求をだす
要求はQueueで排他する等で安全策取る

プロセス間通信は適当に(ipc使えば簡単かな)
0396デフォルトの名無しさん (ワッチョイ 3dc3-i/bw)
垢版 |
2018/06/29(金) 12:38:26.74ID:8d6UIl5Q0
配列内の文字列がtargetStrに含まれてるかどうかを調べるコードなのですが
いまどき風な書き方ってありますか?
var words = new string[] { "ああ", "いい" };
foreach (var word in words)
{
  if (targetStr.IndexOf(word) != -1)
  {
  // hit
  }
}
0403デフォルトの名無しさん (ブーイモ MM4d-/RMY)
垢版 |
2018/06/29(金) 17:56:22.21ID:n04C+v3iM
>>402
お前は何回Where呼ぶつもりやねんと
Whereの引数に渡すデリゲートのnewがネックになるほどタイトなループでWhere呼ぶなら、明らかにその設計自体が問題
どうでもいい机上の空論だから全く気にする必要はない
通常は、そんなことよりもラムダが間に一枚入ることによるメソッド呼び出しのオーバーヘッド増加のほうが問題になる
0404デフォルトの名無しさん (スププ Sd22-5JI3)
垢版 |
2018/06/29(金) 18:01:54.20ID:NMkrO0hpd
仮引数を省略してるというより渡してるものが違うだろ。
たとえフレームワークの関数でも、関数自体は俺も渡したくはないな。
xとか付けるやつは意識してないだろうが、引数名も有意義だし。
そもそもこれぐらいならインライン展開されるだろうし。
0406デフォルトの名無しさん (ワントンキン MM52-6KnM)
垢版 |
2018/06/29(金) 18:31:03.18ID:fLw6tHLKM
最近はクエリスタイルも悪くないかなって思えてきた
単純に記号が減って読みやすいし
ループで書いたらネストするようなクエリを書きやすい
Effective C#でもサンプルコードにクエリ形式を使ってるね
0411396 (ワッチョイ 3dc3-i/bw)
垢版 |
2018/06/29(金) 20:03:36.51ID:8d6UIl5Q0
皆様ありがとうございます!
高度過ぎて理解できてませんがContainsとLINQ any調べてやってみますm(_ _)m
0414デフォルトの名無しさん (ワッチョイ 8671-OWdA)
垢版 |
2018/06/29(金) 20:32:19.73ID:Z9lwbPEL0
>>410
ポイントフリースタイルにこだわりすぎるのはHaskell界隈でも嫌われてるから
あんま変な誤解を植え付けんでくれ

仮引数があった方がわかりやすいならつければいい
ただ今回のContainsに関してはそれでわかりやすくなる要素が見当たらないので何とも
まぁどっちでも普通に読めるから、どっちでもいいよもう
0415デフォルトの名無しさん (アウアウウー Sa85-VCRa)
垢版 |
2018/06/30(土) 13:03:37.19ID:stDx+Xo5a
デリゲートとラムダ式は別物

メソッドにラムダ式を渡してると思って実際は変換されたデリゲートを渡してる場合もある
メソッドのシグネチャーを見てラムダ式をわたしてるのかデリゲートを渡してるのか意識すべき
0416デフォルトの名無しさん (ワッチョイ 8251-hbKR)
垢版 |
2018/06/30(土) 13:20:07.97ID:wYh1ox1V0
やっぱりラムダ式とかデリゲートとか難しい…
>>415
メソッドに渡すのは常にデリゲートだと思ってました
ラムダ式を渡す場合とデリゲートを渡す場合、それぞれの例を教えてもらえませんか?
0420デフォルトの名無しさん (ワッチョイ 8251-hbKR)
垢版 |
2018/06/30(土) 13:52:29.78ID:wYh1ox1V0
>>417
勉強になります
>>415 の真意は↓の中で4行目だけはコンパイルできないから気をつけましょうということですか?
Func<string, bool> a = s => string.IsNullOrEmpty(s);
Func<string, bool> b = string.IsNullOrEmpty;
Expression<Func<string, bool>> c = s => string.IsNullOrEmpty(s);
Expression<Func<string, bool>> d = string.IsNullOrEmpty;

このあたりのことがとてもあやふやなので解釈が間違っていたらぜひ教えてほしいです
0423デフォルトの名無しさん (ブーイモ MMf6-/RMY)
垢版 |
2018/06/30(土) 15:18:18.92ID:+7yWvOiaM
>>422
C#2.0からだからラムダより前
今では誰も使ってない匿名メソッドと一緒に入った
匿名メソッドもラムダもメソッドなので、メソッドからデリゲートへの暗黙変換がないと
匿名メソッドもラムダもデリゲートをいちいち明示的にnewしないといけなくなる
0434デフォルトの名無しさん (ブーイモ MM22-M9kt)
垢版 |
2018/07/03(火) 19:38:57.82ID:uKdaL+TvM
スクレイピングで、xpathや属性から要素を特定取得できると思いますが、逆に属性を取得することって、できるのでしょうか?
@class=取りたい属性←この値です
0437デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
垢版 |
2018/07/03(火) 20:15:00.81ID:3h3fF2lx0
>>435
>>436
その属性を取りたいんですよ。
0442デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
垢版 |
2018/07/04(水) 01:32:51.59ID:QIUWNU3h0
>>440
属性の値がほしいんですね、名前はtagNameでとれるので
0443デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
垢版 |
2018/07/04(水) 01:43:11.66ID:QIUWNU3h0
id="→sample←"
webページ上の値じゃなくて、→←で囲ったsampleという結果がほしいんです。
0445デフォルトの名無しさん (ワッチョイ 6e81-M9kt)
垢版 |
2018/07/04(水) 05:51:54.18ID:QIUWNU3h0
>>444
ありがとうございます。試してみます。
0447デフォルトの名無しさん (ワッチョイ 4581-YyB7)
垢版 |
2018/07/04(水) 07:55:26.39ID:zwHbS25H0
>>446
↓とりあえずはここかな
https://dobon.net/
0449デフォルトの名無しさん (ブーイモ MM22-M9kt)
垢版 |
2018/07/04(水) 09:30:12.33ID:rFQM1K2RM
>>444
無事に目的を果たせました!
感謝です。
0450デフォルトの名無しさん (ワッチョイ 0deb-HrKv)
垢版 |
2018/07/04(水) 15:02:10.32ID:x3V5psFC0
PC上からC#で制御できる汎用IO製品って安いのないんかな?
Raspberry PiについてるGPIOみたいなのが欲しいんだけど
0453デフォルトの名無しさん (ワッチョイ 027f-7be3)
垢版 |
2018/07/04(水) 16:48:56.19ID:n4h9hTEh0
超面白い
https://goo.gl/k4ehdm
0458デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/07/04(水) 20:23:47.96ID:Ub7D34vBa
>>456
だから
>このICの本来の用途はGPIOじゃないが、GPIOとしても使えたはず。

って前置きしてるでしょ。
確認してみたけど、ちょっと変則的だけど一応使えるよやっぱり

パラレルの方(FT245)のICもGPIOとして使えるが(こっちも本来はそういう用途じゃない。ちなみにこっちは使用経験あり)
こっちの方がちょっとだけ高価でGPIOとして使えるピン数も少ない
http://akizukidenshi.com/catalog/g/gK-01799/
0459デフォルトの名無しさん (ワッチョイ 5e7f-YyB7)
垢版 |
2018/07/04(水) 21:43:30.53ID:rQfJfUyF0
>>454
取説見るとデジタルI/Oは5本みたいだが。
0460デフォルトの名無しさん (ワッチョイ 45fa-2e90)
垢版 |
2018/07/04(水) 21:46:57.76ID:gFgZc5FG0
AWK
0461デフォルトの名無しさん (アウアウエー Sa0a-/Gj2)
垢版 |
2018/07/04(水) 22:01:51.27ID:Ub7D34vBa
>>459
スレ違いだけど、このドキュメントのP3に書いてある特殊機能があるんよ
http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf

最低8本は使える
残りのプラスアルファーがどういう風に使えるかは、たぶんドライバーのAPI
アプリケーションノートに書いてあると思うが、さすがに面倒だから読んでない
0466デフォルトの名無しさん (ワッチョイ 87b3-WyNa)
垢版 |
2018/07/05(木) 15:50:31.35ID:P71/Py9I0
C♯でMySQLを操作したいのですが楽に扱えるライブラリはありますか?
EntityFrameworkを使いたいのですがイマイチ接続できないので
一応昔にSQL書いて操作するパターンも作ったことありますが出来ればせっかくなのでやり取り楽な風にできればと思ってます
0469デフォルトの名無しさん (ワッチョイ 87b3-WyNa)
垢版 |
2018/07/05(木) 20:00:51.78ID:P71/Py9I0
ありがとうございます
Dapperの存在忘れてましたこちら使い方少し調べてみます
LinqConnectも調べましたが環境整えるところからなので余裕ができたらこちらも調べてみます
0471デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
垢版 |
2018/07/06(金) 14:19:45.98ID:v98PP3uI0
教えてください
Power1とPower2はxのn乗を求める関数だそうなのですが
なぜPower2がxのn乗になるのかさっぱり分かりません
しかもPower2の方がPower1よりも効率がいいらしいです
よろしくお願いします

double Power1(double x, uint n)
{
  double power = 1;
  while (n > 0)
  {
    power = power * x;
    n = n - 1;
  }
  return power;
}

double Power2(double x, uint n)
{
  double power = 1;
  while (n > 0)
  {
    if (n % 2 == 1) power = power * x;
    x = x * x;
    n = n / 2;
  }
  return power;
}
0477デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
垢版 |
2018/07/06(金) 15:31:31.99ID:v98PP3uI0
>>472
ありがとうございます
定数だけの四則演算やキャストはコンパイルの時点で行われるから
効率に影響は無いと習ったのですがこの場合は違うのですね
キャストがコンパイル時と実行時のどちらで行われるかを判断する
簡単な方法があれば教えてほしいです

>>473 >>476
ありがとうございます
指数法則が関係あるのですね
これをヒントにもう一度考えてみます

>>474-475
ありがとうございます
教えてもらったことをヒントに再帰を使ってxのn乗を作ってみたのですが
この関数はあってますか?
でも、やっぱりなぜPower2がxのn乗になるのかよく分かりませんでした

double Power3(double x, uint n)
{
  if (n == 0) return 1;
  else if (n % 2 == 0) return Power3(x, n / 2) * Power3(x, n / 2);
  else return Power3(x, (n - 1) / 2) * Power3(x, (n - 1) / 2) * x;
}
0478デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
垢版 |
2018/07/06(金) 15:54:12.85ID:W35a98bMa
>>477
こうじゃない?
いい加減に書いたから間違ってたらごめん

double Power(double x, uint n)
{
  if (x == 0) return 0;
  if (n == 0) return 1;
  if (n == 1) return x;

  return n % 2 == 0 ? Power(x * x, n / 2) : Power(x * x, n / 2) * x;
}

要するに、
x^(a + 1) = x^a * x
x^(2 * a) = (x * x)^a
0481デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
垢版 |
2018/07/06(金) 17:25:12.79ID:v98PP3uI0
お陰様で>>471について理解できたと思います
どうもありがとうございました!

>>480
言われてみると、>>471のPower1やPower2では0の0乗が1になりますが
>>478のPowerだと0の0乗が0になりますね
調べてみたらWikipediaに「0の0乗」というページがあって
確かに0の0乗を1と考えることが多いと書いてありましたが
それ以外の考え方もあるみたいです
0484デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/07(土) 00:10:19.78ID:PwTdVeWu0
>>471の件ではどうもありがとうございました
もう一つ質問させてください
以下のPopulation1とPopulation2は同じ結果になるそうです
Population1は>>471のPower2によく似てるので
これは指数計算の変形だと思うのですが、
Population2でも同じ結果になるのが理解できません
何度もすみませんがよろしくお願いします

uint Population1(uint n)
{
  uint population = 0;
  while (n > 0)
  {
    if (n % 2 == 1) population = population + 1;
    n = n / 2;
  }
  return population;
}

uint Population2(uint n)
{
  uint population = 0;
  while (n > 0)
  {
    population = population + 1;
    n = n & n - 1;
  }
  return population;
}
0485デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/07(土) 00:10:35.11ID:PwTdVeWu0
>>482
確かにWikipediaによれば
半群Sが単位元1をもつならSの元aの0乗は1になるので
Sが零元0ももつなら0の0乗は1になるそうです・・・なんのこっちゃw

>>483
ありがとうございます
Power2はちゃんとした名前のついたアルゴリズムだったんですね
この分だとPopulation2にも名前がついてそうですが
それらしい情報を見つけることができなかったので
もしご存知だったら教えてもらえると嬉しいです
0487デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/07(土) 00:57:48.65ID:PwTdVeWu0
>>486
ありがとうございます
ビット演算については分かってるつもりだったのに全然でした・・・
ヒントを貰って下のようなプログラムを試してみたら
確かに最下位ビットが順に消えていって感動です

uint n = 4649;
while (n > 0)
{
  Console.WriteLine(Convert.ToString(n, 2));
  n = n & n - 1;
}

【実行結果】
1001000101001
1001000101000
1001000100000
1001000000000
1000000000000

でも結局n = n & n - 1;で最下位ビットが消える理由が
理解できていないのでもう少し考えてきます
0488デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
垢版 |
2018/07/07(土) 01:08:23.64ID:cboIXbsqa
>>487
デクリメントした時、

(1) ボローが発生しなくなる桁(つまり、最下位の1の桁)はデクリメントの前は1、後は0

(2) その下位の桁はデクリメントの前は0、後は1

(3) 上位の桁の値は変わらない

なんだから、前後の値の論理積は必ず最下位の1まで0になる
0489デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/07(土) 01:35:58.15ID:PwTdVeWu0
>>488
とてもわかり易い説明ありがとうございます!お陰様で理解できました

実はこの説明を読むまでn & n - 1は(n & n) - 1という意味だと思ってて、
それならn - 1と同じじゃないのかと思いながらも
トンチンカンなことを言ってしまうのが怖くて黙ってたのですが、
こんなことなら変なプライドは捨ててさっさと疑問をぶつければよかったです

この問題を考えていて、少しビット演算に慣れてきた気がします
使い道があるかどうかは分かりませんが、
n = n & ~(n - 1);だと逆に最下位ビット以外を消すことができるんですね

とにかく、どうもありがとうございました
0496デフォルトの名無しさん (ワッチョイ 5f60-KMj/)
垢版 |
2018/07/07(土) 21:12:55.79ID:gKVOSzfp0
他人の書いたライブラリとか使おうと思っても仕様書もどう読めばいいかあまりわからなくて
いつも他人様の書いたコード見てやっとなんとなく使い方理解できてるんですが
サラサラかける人はどういう見かたしてるんですか?サンプル見てメソッド見ればもうわかるのですか?
0497デフォルトの名無しさん (ワッチョイ 479a-CtBN)
垢版 |
2018/07/07(土) 21:24:10.82ID:Sa3mysoT0
>>496
ソースのメソッド見て中身理解するのは仕様書読むよりも難しくないか
メジャーなライブラリなら例を書いているサンプルがネット上にいっぱいあるし
そうでなくてもある程度自分で試しながら理解したらいいと思うが
0498デフォルトの名無しさん (ブーイモ MMcf-SJYg)
垢版 |
2018/07/07(土) 21:27:00.32ID:30ihGmDyM
>>496
サンプル見ればだいたい分かるよ
お前も新しいフリーソフトとかWebサービスとか使うときマニュアル見なくてもだいたい分かるだろ?
それでお前の母ちゃんや友人に何で分かるのか聞かれて何て答える?
それと同じことで、経験を積むとパターンやライブラリの作者の考えが読めるようになってくる
0499デフォルトの名無しさん (ワンミングク MM3f-JP/P)
垢版 |
2018/07/07(土) 22:41:26.27ID:E0dVopgVM
簡単だよ

こういう処理がしたいならメソッドにこういう文字列が含まれてるはずだよな
インテリセンスカチャカチャほらみろ有ったぞ
次は引数をドキュメントコメントで調べて入力
コンパイルエラー消えたよしこれでオッケー
ビルドして起動したら…はい動いたおわり

だいたいこんな感じ
今はライブラリも開発環境も優秀すぎて楽だよほんと
0500デフォルトの名無しさん (ワッチョイ e79f-lO5G)
垢版 |
2018/07/07(土) 22:50:08.17ID:paMTBjoR0
右クリックして定義見ればよくね?
0503デフォルトの名無しさん (ワッチョイ 7f81-YWjz)
垢版 |
2018/07/08(日) 00:27:29.44ID:7kODHcAp0
>>501
linqの古いコードって、例えばどんなん?ラムダ使ってない奴のことかな?
0509デフォルトの名無しさん (ワッチョイ 5f8a-a75z)
垢版 |
2018/07/10(火) 03:23:37.00ID:LdlDw2V90
ポータブルなASP.NET実行環境はありますか?
勝手にソフトインストール出来ない環境で使いたい為、Tomcatのように、設定ファイルで設定してexe起動するだけのタイプを探しています。
0511デフォルトの名無しさん (スプッッ Sdff-jgrZ)
垢版 |
2018/07/10(火) 07:07:05.03ID:1Wfv3KWad
formが3つがあってそれぞれ仮にa,b,cとして、a,b,cの中にコンボボックスがいくつかあってaのコンボボックスの一つにエクセルをdbで読み取って?コンボボックスに値を入れました。
以降もコンボボックスに入れてくんですけど、違いがブック名とシート名でコードをまとめたい時はどこにどのように書けばいいですか?
今はform aのloadに一つ書いてます。
0512デフォルトの名無しさん (アウアウウー Sa0b-1qXk)
垢版 |
2018/07/10(火) 08:43:35.96ID:wzF2q8B9a
class Configurations { 各コンボボックスに入れるべき値をそれぞれプロパティとして定義 }
interface IConfigurationsSource { Configurations GetConfigurations(); }
class ExcelConfigurationsSource : IConfigurationsSource {
 private readonly string book;
 private readonly string sheet;
 public ConfigurationsSource(string book, string sheet) { this.book = book; this.sheet = sheet; }
 public Configurations GetConfigurations() { return Excelシートから読み取ってConfigurationsに詰めて返す(book, sheet); }
}
こういうのを作って使い回す
0514デフォルトの名無しさん (オイコラミネオ MM4f-FpIe)
垢版 |
2018/07/10(火) 10:27:34.35ID:u496riIwM
いろいろなレベルでの回答があるが
インターフェースはMIX可能
継承の濫用は保守困難になりがち
インターフェース意識した方が設計的にスマートな事が多い

c#8で事情は大きく変わるが
0515デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/10(火) 13:38:42.06ID:vEF725PNp
クラス継承は切り離せないが、インターフェースなら切り離せる。
0521デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/10(火) 19:04:58.17ID:WX+x+qIF0
>>514
> c#8で事情は大きく変わるが
C#8ではnull非許容が標準になるという噂は聞いたことがあるのですが、
この話は検索してみてもなんのことを仰っているのか分かりませんでした
とても興味があるので、ぜひ詳しく教えていただけないでしょうか
0523デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/10(火) 21:45:00.39ID:WX+x+qIF0
>>522
レスありがとうございます!
ただこれだけを聞くとC#8でインターフェースの価値が更に上がるように思うのですが、
>>514さんはインターフェースの価値を説かれた上で
「c#8で事情は大きく変わる」と仰っていているので、他の機能に拡充が図られるなどで
インターフェースの価値が相対的に下がると仰っしゃりたいように感じました
実際にはそういうわけではないのでしょうか?

いずれにしても、インターフェースのデフォルト実装は便利そうで楽しみです
あと、それほどいろいろと手を入れるなら、
IList<T>が共変なIReadOnlyList<out T>と反変なIWriteOnlyList<in T>を
継承するようにするとか、そういう変更もあると嬉しいな〜と素人ながら思ってみたりw
0525デフォルトの名無しさん (ワッチョイ 5f7f-CJRd)
垢版 |
2018/07/10(火) 23:47:58.27ID:vJrIcc2p0
>>523
IWritableListとIReadableListみたいな名前ならともかく、
それじゃわざわざOnlyって強調した単語使ってる意味がなくなるから悪手だろ
0526デフォルトの名無しさん (アウアウウー Sa0b-SJYg)
垢版 |
2018/07/11(水) 00:12:23.28ID:08+HRZoYa
>>525
既にList<>はIReadOnlyList<>を実装してるんだから今更だろ。
IList<>がIReadOnlyList<>を継承できない理由は、インターフェイスメンバの明示的実装を壊すから
IList<>に宣言されてたメンバのうちIReadOnlyList<>と被るものを全部削除したとしたら、IList<>のメンバを明示的実装している既存のクラスが全滅する
0528デフォルトの名無しさん (ワッチョイ bf93-FpIe)
垢版 |
2018/07/11(水) 00:50:36.62ID:OI/RESej0
null非許容を乱暴に説明すると

参照型の変数にnullが入らないのがデフォになる。よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
変数にnull許可する場合には明示的に宣言が必要になる。

既存のソースに対しては破壊的変更になるからコンパイルオプションとかになるんじゃないかな。
0530デフォルトの名無しさん (アウアウエー Sa1f-z1ya)
垢版 |
2018/07/11(水) 01:04:51.55ID:zbj7oPBja
>よって多くのシナリオでnull落ちになるケースが激減する。基本的にプログラミングが楽になる。
岩永氏の例の記事にもそう書いてあるが、何度考えてもこれは逆だと思うなw
いわゆる「例外を握りつぶす」筋悪コードと同じ弊害をもたらすだけだろう
0531デフォルトの名無しさん (ワントンキン MM3f-JP/P)
垢版 |
2018/07/11(水) 01:08:15.17ID:veaNU89qM
凄まじい列数でほとんどがnullのテーブル
あれをなんとかしないとアプリケーションからnullを排除することは難しい
インフラの問題だからホスト言語のちょっとした改善でどうにかなるものじゃない
0532デフォルトの名無しさん (ワッチョイ bf93-FpIe)
垢版 |
2018/07/11(水) 01:22:37.10ID:OI/RESej0
最近の言語がそういう流れだからだろうね

DB絡みに外部結合やORM、既存ライブラリやサービスがある以上、null考慮は回避できないだろうから使い分けになるだろうね
nullまみれのテーブルも いまだにみかけるし

新規コードでサクサク組んでいくには便利やと思う
0533デフォルトの名無しさん (ワッチョイ 5f5d-bAjg)
垢版 |
2018/07/11(水) 01:24:04.27ID:mrqtDgK70
>>525
レスありがとうございます
確かに、ReadOnlyという言葉がIReadOnlyList<>を継承するものにかかっていると考えると
IList<>がIReadOnlyList<>を継承するのは妙な感じですね
ただ現実として、>>526でも指摘していただいているようにList<>はIReadOnlyList<>を
実装していますので、ReadOnlyという言葉はあくまでIReadOnlyList<>自身にかかっていると
とらえてしまってもいいのかなと考えています
その現状の言葉遣いが間違っているのだから直すべきだというご主張なら、
実現可能性は私には難しくて分かりませんが、とても興味深いご意見だと思います

>>526
レスありがとうございます
書いていただいた文章を読むと、インターフェースは継承元のインターフェースと
同じ名前のメソッドを持てない、もしくはインターフェースの明示的実装に悪影響があると
考えていらっしゃるように見受けられたのですが、この部分がよく理解できなかったので
申し訳ないのですが詳しくご説明していただけるとありがたいです

>>527-528
レスありがとうございます
私の方こそ、変な深読みをしてしまい失礼しました
私は初学者なので機能の増強は単純に楽しみなのですが、
既存のソースを多くお持ちの方にとっては大幅な変更はいいことばかりでもないのですね

>>528-531
興味深いお話をどうもありがとうございます
自分からnull非許容の話を出しておいて恥ずかしいのですが、
実はこれが具体的にどういうものなのかほとんど理解できていないのです

var a = new string[1]; は許されるのか?とか、許されるならそれは
var a = new string[1] { string.Empty }; と同じ意味なのか?とか、
もしそれが正しいなら、クラス毎に Empty 的なものを用意しないといけないのか?とか
疑問は膨らむばかりです
0534デフォルトの名無しさん (ワッチョイ bf93-FpIe)
垢版 |
2018/07/11(水) 01:52:22.43ID:OI/RESej0
シンプルなコードで良い疑問やなあ
実際導入されたら混乱しそう…

右辺のArrayがnullを許さないからコンパイラに怒られそう
初期値入れたらいけそう
もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも

c#7系以前と同じ挙動にするなら
var a = new string[1]?;
という記述になるはず

List系使うから配列を生で使う機会は減ったけどね
0536デフォルトの名無しさん (ワッチョイ 7fe8-UVFs)
垢版 |
2018/07/11(水) 04:05:50.95ID:xb7b/JPY0
C#の話じゃないかもしれませんが、
LAN上の他のPCと通信するにはTCPorUDPしかないですかね?
ポート開けようとすると管理者のパスワード要求されるので
そういうのに影響されない方法があれば教えてください
サーバー上にファイル作って共有しようかとも思ったのですが
ロックとか速度とかちょっと使いにくいので
0539デフォルトの名無しさん (ブーイモ MM7f-Ro9v)
垢版 |
2018/07/11(水) 08:54:54.59ID:NAmdOA29M
ネットワークプログラミングの定石学びたいっす
0541デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 09:42:14.12ID:DD+vdWYvp
>>536
TCPやUDPじゃないと関所を通れないからなぁ
0548デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 16:58:41.62ID:DD+vdWYvp
バイブにたかしとかりょうとか名前付けて愛用してんのかなぁ…
0549デフォルトの名無しさん (ワッチョイ 5f51-bAjg)
垢版 |
2018/07/11(水) 17:39:37.83ID:kzvuO0/N0
>>534
レスありがとうございます

>右辺のArrayがnullを許さないからコンパイラに怒られそう
>初期値入れたらいけそう
確かにそんな気がしますね
でもそうなると大きな配列とは相性が悪そう・・・

>もし仮にstringの規定値がemptyになる仕様になれば初期化無しでもコンパイルとおるかも
それが一番わかりやすそうですね
ただ、stringはともかくStringBuilderの規定値とかどうすればいいのかさっぱり見当がつきません

>c#7系以前と同じ挙動にするなら
>var a = new string[1]?;
>という記述になるはず
?の位置は[1]の前ですか?
まあ書き方はともかく、もしvar a = new StringBuilder[100];とすると
自動的に100個のStringBuilderのインスタンスが作られるなら、
そのような動作を望まなければ配列の要素の型はnull許容にしたほうが良さそうですね

そうすると、例えばジェネリック型を使うときにはstringのような型とStringBuilderのような型の
区別をつけたくなることもありそうですし、ジェネリック型制約に新しく
where T : immutable(intやstringは許すけどStringBuilderは許さない)が
追加されたり・・・とか妄想してみましたw
0550デフォルトの名無しさん (バットンキン MMfb-thxO)
垢版 |
2018/07/11(水) 17:57:29.81ID:g/mYMck9M
プログラム素人で恐縮ですが、for文のスコープの中に変数を宣言するとメモリの無駄使いになるでしょうか?

for(;;) int hoge =1;
のような書き方です

for文に入る前に宣言した方が作法的に良いのであればそうしたいと思い
0551デフォルトの名無しさん (ワッチョイ a79e-l9EE)
垢版 |
2018/07/11(水) 18:16:12.97ID:I//Y0R5O0
コンパイラが最適化するのじゃないか?

初心者は、そんな事を考えずに、なるべく狭いスコープで宣言した方が良い。
処理に、10秒以上掛かるのなら、その時に考えても良いけど

「Effective 何々」などの本を読むと、書いてあるかも知れないけど
0552デフォルトの名無しさん (ブーイモ MMcf-SJYg)
垢版 |
2018/07/11(水) 18:20:39.15ID:L0DC21nsM
>>550
C系の言語では基本的に一箇所で宣言された変数はメソッド全体で一つしか作られない
C#の場合はクロージャが絡んだりすると変わってくるけど、基本的にはそういう思想で設計されてる
気にせず必要最小限のスコープで宣言せよ
0555デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 20:26:56.12ID:DD+vdWYvp
あーでも>>550みたいな書き方すると突っ返されるメーカーあるよな。
無駄な作業させてるって自覚無いんだろうかなぁ
0557デフォルトの名無しさん (ササクッテロル Sp3b-AA7a)
垢版 |
2018/07/11(水) 20:35:01.60ID:DD+vdWYvp
スコープ毎にスタック操作なんかしないし、汚くてもオプティマイズされたら面影も無いし、イジメでしか無い罠
0563デフォルトの名無しさん (ワッチョイ ea8a-Y7YF)
垢版 |
2018/07/12(木) 06:34:40.79ID:0C7UQQhF0
クエリとlinqとlinqToXmlの違いがなにかよくわからないです
これらはなんですか

クエリはfromやselectとか思ってたのですが
"from a 〜 select a"も "XXXXXX.Select(〜)" の両方ともクエリ?

linqの中にクエリがある感じですか?
用語の違いを知りたいです
0567デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
垢版 |
2018/07/12(木) 08:08:47.97ID:CB78gZS5M
>>562
ライブラリ実装者が破壊的変更の影響を最小化
細かいパフォーマンスを最適化
するためのものなので乱用しないで
拡張やダイヤモンド継承による名前の重複など問題はまだ残ってる
0570デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
垢版 |
2018/07/12(木) 15:12:12.67ID:iIGcGb6Z0
久しぶりにまたC#勉強してみようかと思ってるんだけど
最近の動向ってどうなの?雑誌でもあまり見かけなくなったけど
0572デフォルトの名無しさん (ワッチョイ 89d3-Y8gp)
垢版 |
2018/07/12(木) 16:16:23.83ID:S+gZjDN60
>>570
マイクロソフトはAndroidのアプリC#で作る環境起こしたり結構力入れてる
0573デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
垢版 |
2018/07/12(木) 16:37:53.91ID:iIGcGb6Z0
>>572
へえ〜そうなんだ
金のにおいプンプンするね
0574デフォルトの名無しさん (ワッチョイ 11a5-kMcx)
垢版 |
2018/07/12(木) 16:40:31.97ID:iIGcGb6Z0
そういえばWindowsフォンとかいうのもあったね
0577デフォルトの名無しさん (バットンキン MM15-0TUM)
垢版 |
2018/07/12(木) 17:25:15.60ID:PtJZmudoM
MVC使ってるんですが、アルゴリズムをSQLに書くのは邪道でしょうか?

Modelを用意している時点でC♯でアルゴリズムを書くのが正攻法なのかなという気がして

でもクエリにある程度書いた方がパフォーマンスは良さそうで悩んでいます
0578デフォルトの名無しさん (ワッチョイ 669a-iomh)
垢版 |
2018/07/12(木) 19:07:16.04ID:MbhSnhO70
>>566
NumericUpDownの派生コントロールを作ってOnMouseWheelを書き換える
方法 : 既存の Windows フォーム コントロールから継承する
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-inherit-from-existing-windows-forms-controls
コード例
public class NumericUpDownEX : NumericUpDown
{
protected override void OnMouseWheel(MouseEventArgs e)
{
  if (null == e) return;
  decimal m = this.Value;
  int a = e.Delta > 0 ? -1 : 1;
  m += a * this.Increment;
  m = m > this.Maximum ? this.Maximum : m;
  m = m < this.Minimum ? this.Minimum : m;
  this.Value = m;
}
}
0582デフォルトの名無しさん (バットンキン MM69-0TUM)
垢版 |
2018/07/13(金) 06:58:05.36ID:DDbEgWasM
SQLはクエリ管理クラスでC♯で管理してます
ストアドで書かれてたらC♯がどうこういう話では無いですね

つかストアドは世間様の開発では一般的なのでしょうか

改修に弱そうなイメージがありシステム構成の検討任されたら自分なら選択しなさそうですけど
0599デフォルトの名無しさん (アウアウウー Sa21-FUtQ)
垢版 |
2018/07/14(土) 16:57:19.10ID:pGWO+29la
無料ならSQLServerはかなり制限がある
PostgreSQLは完全に無料で、性能・機能とも圧倒的に上
SQL ServerはWin上でGUIでお手軽に運用できるしMS製品で完結するのでドカタには愛されてる
0602デフォルトの名無しさん (ワッチョイ 6681-38gj)
垢版 |
2018/07/14(土) 17:06:52.80ID:bK14KKak0
>>599
かなりって例えば?
ストアドも使えるしDBサイズも10GBまで使えるし基本問題ないっしょ。サイズ超えそうになったらバックアップDBとしてアーカイブすりゃいいしね。C#ならSQLServerがいいよ
0606デフォルトの名無しさん (オッペケ Srbd-mxjo)
垢版 |
2018/07/14(土) 17:25:32.60ID:pS7j55swr
>>599
まじか
postgreに変えようかな

>>602
10GBならかなり余裕あるね
ならSQLServerも良いかなあ

MySQLはWebアプリではよく使ってるけど

そもそもわかってないことがあるんだけど、SQLってSQLサーバーで動いてるわけじゃん?
SQLite以外はWinFormアプリで作ったアプリだけで動かないの?
SQLアプリみたいなのが生成されるの?
0608デフォルトの名無しさん (ワッチョイ b5b3-qWm8)
垢版 |
2018/07/14(土) 17:30:16.00ID:zT+O/n6K0
>>604-605
なるほどありがとう
それならせっかくだしそっちにしてみようかな
SQLServerはEntityFramework簡単に使えたけどもPostgreSQLもライブラリとか使いやすいのかな?
MySQLは接続文字列がおかしいのかテーブル指定がおかしいのかイマイチ上手く動かせなかった
0611デフォルトの名無しさん (ブーイモ MMc9-EWaj)
垢版 |
2018/07/15(日) 10:06:31.58ID:vbOfg8AFM
今は各言語ごとにフルスタックのフレームワークがあるけど無駄に見える
どれか一個がセンターにあって後は各言語対応のAPI提供というパターンにならないのか
0614デフォルトの名無しさん (ブーイモ MMc9-EWaj)
垢版 |
2018/07/15(日) 10:46:24.73ID:CFAGuM1zM
各言語ごとにフルスタックフレームあるけど
シェア3位のdjangoすら5%以下らしい
それ以下のASP.Net coreの存在意義がかなり薄いと思うけどないといけないものなのか
0621デフォルトの名無しさん (ワッチョイ 6681-38gj)
垢版 |
2018/07/15(日) 14:17:55.92ID:LJ5Na9vP0
>>620
速度求めるならメモリ使えば?
DBのinoutは別スレッドでコントロール
0624デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
垢版 |
2018/07/15(日) 20:38:51.55ID:BpM21w6AM
レガシーJavaをすぐさまC#に移植するってのは現実的じゃない
レガシーの面倒を見るためにとりあえず金を払ってライセンスを買うしかない
ライセンス買ったならじゃあいいかとなってJavaを引き続き使っていくことになる
0626デフォルトの名無しさん (ワッチョイ 66e8-LQig)
垢版 |
2018/07/15(日) 20:57:17.95ID:OJzI1T4t0
でもC#は無料なの?
いいえ、有償です
0634デフォルトの名無しさん (ワッチョイ 6a5d-WZyh)
垢版 |
2018/07/16(月) 15:14:56.71ID:Tg2I8Krt0
>>633
「なぜ class Random { ... } とクラスを定義しなくても new Random() と書けるのか?」
という質問なら、「Random クラスは最初から定義されてるから」が答えになると思います

質問の意図が違うなら、「XXXと書くのが正しいと思うが、実際にはYYYと書くのはなぜか?」
というように具体的なコードを交えてもう一度質問してもらえませんか?
0636デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 15:18:23.77ID:MLoWNAtR0
usingで指定されて無いと幾ら最初から有っても使えないけどな。
0637デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 15:19:55.32ID:MLoWNAtR0
そう言う意味では、最初からusingでネームスペースが指定されているって言わないと正しくない。
0643デフォルトの名無しさん (ワッチョイ 2a7f-L1xz)
垢版 |
2018/07/16(月) 16:54:46.97ID:jQHectJ10
自分が作っていないクラスを使用するのに必要なのはアセンブリ/COMの参照設定。
(基本的なアセンブリは最初から設定されてる)

usingするかはどうかは別の話。
参照していないのにusingだけ書いてももちろん使えない。
0644デフォルトの名無しさん (ラクッペ MM6d-/VsX)
垢版 |
2018/07/16(月) 17:47:55.17ID:SOPUXhzxM
>>642
そのスコープのFileクラスの定義が重複している場合
曖昧さを解消するために名前空間を全て書く必要がある

普通は標準ライブラリと名前が衝突する事態の方を避けるだろうけど
0645デフォルトの名無しさん (アウアウエー Sa52-4Kub)
垢版 |
2018/07/16(月) 18:31:19.12ID:zG1+5npqa
>>642
そんな不合理な規約はないと信じたいねw

あえてフルネームで書くことを肯定できる(少なくとも否定的に思わない)ケースは
そのソースファイルでその名前空間の要素そ参照するのが1、2か所しかない場合ぐらいかなあ

意見は分かれるかもしれんが、バッティングを避ける目的ならエイリアスを使うのが普通でしょう
using IO = System.IO;
みたいに
0649デフォルトの名無しさん (ワッチョイ 6a5d-WZyh)
垢版 |
2018/07/16(月) 19:56:41.16ID:Tg2I8Krt0
>>634 に不適切なコードを書いたために混乱を招いてしまいました
また、 >>643 で適切な補足をしていただいていますが、
初めからこのような補足が必要ないようにできているだけでも
混乱は避けられたかもしれません。大変失礼しました
0650デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 21:01:32.11ID:MLoWNAtR0
同じ名前のクラスがあるんだよw
だからフルネームで書かないと怒られるんだw
0651デフォルトの名無しさん (ワッチョイ 59e3-RMv+)
垢版 |
2018/07/16(月) 21:45:18.03ID:PnkuF1BZ0
>>650
あるあるw
バッティングすると悪夢なのなw
曲線をPathって名前にしてファイルパスもPathって名前にして
usingを呼んじゃってからエラーが出たぜハイ直せってやられると最悪
せめて改名してからusing呼べやクソがって思うんだが
馬鹿な奴に限ってバッティングさせるし作業手順も考えない
しかもそれでコミットしてくる
0657デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/16(月) 22:50:59.26ID:MLoWNAtR0
いやいや、それは例えが悪いだけで、マイクロソフト様ですら同じ名前のクラス名付けてて、たまにどっちだボケって聞いて来るからなぁ
0659デフォルトの名無しさん (ワントンキン MM7a-ZTCE)
垢版 |
2018/07/16(月) 23:16:42.09ID:fVJkfJ21M
>>658
足りないってほどじゃないんだけどねー
直感的に挙動を理解しやすいJSFと比べてこっちはちょっと推測しにくい感じ
これを変えたいなら多分こうだろってのが閃きにくい
ドキュメントみれば解決するけど見ないでなんとなくで解決したいんだよね
0662デフォルトの名無しさん (ワッチョイ ea8a-Y7YF)
垢版 |
2018/07/17(火) 04:59:27.29ID:KftlrzGo0
blockingcollectionを使ってキューを作ろうと思ってます
そのキューの中にデータを取り出すのではなく、データがあるかないかを確認したいのだけども
それってどうやって実現できるでしょうか?
0663デフォルトの名無しさん (アウアウウー Sa21-FUtQ)
垢版 |
2018/07/17(火) 07:44:52.51ID:xIcozahsa
>>662
できない
BlockingCollection.GetEnumeratorで取得した列挙子は既にコレクションから削除された要素を返す可能性があるから、要素の存在確認には使用できない
それが必要なら普通のQueueをロックして使おう
BlockingCollectionはProducer-Consumerパターンを実装するための特殊なコレクションで、取得と消費は基本的に分離不可能な操作として扱う
0664デフォルトの名無しさん (ワッチョイ 6db5-p+0f)
垢版 |
2018/07/17(火) 08:21:55.96ID:9WzYNMpJ0
なぜキューを使わず違うものでキューみたいなものを作るのか?
0665デフォルトの名無しさん (ワッチョイ 25d2-qJjT)
垢版 |
2018/07/17(火) 09:13:46.43ID:JRPSvXt/0
【毒素ためる、制汗″】 Ban、Ag、 8×4が <乳癌> <鼻炎> <ワキガ> の原因になっている!?
http://rosie.5ch.net/test/read.cgi/liveplus/1531621398/l50



くさいくさい
0670デフォルトの名無しさん (アウアウエー Sa52-4Kub)
垢版 |
2018/07/17(火) 12:10:59.29ID:G5IVIkIla
>>667
食べるが側が自分だけじゃないなら>>663の言うととおりだめなんでしょう

その場合もコレクションに出し入れがあったことを検出する簡単な方法があれば
スキャンしている間に出し入れが行われなくなるまでリトライすることで実現できそうだけど、
そういう簡単な方法はないっぽい。

もっとも、仮に実現できたところで排他制御できないなら検査の後の状態は保証できないわけで、
どんだけ意味があるのか疑問ではある
0671デフォルトの名無しさん (スップ Sd0a-Y7YF)
垢版 |
2018/07/17(火) 17:47:09.52ID:bja0VNMZd
>>663
>>666
>>667
レスくれた方ありがとう
やりたいこととしてはcountとpeekを駆使することでなんとか実現できそうだという結論になりました
キューに対してpeekすると、じゃあ今度はいつ削除するの?とかなりそうだけどもpeekでなんとかします
0673デフォルトの名無しさん (ワッチョイ 66c9-LQig)
垢版 |
2018/07/17(火) 19:14:26.70ID:LTVxWI1Y0
BlockingCollectionはコレクションの要素が取れるまでブロックし続けるから、peekとか削除とか考えずに済むから楽なのにな
まあ>>670の通り他と連動してコレクションにとどめておく必要があるんだろうけどさ
0679デフォルトの名無しさん (ブーイモ MMc9-FUtQ)
垢版 |
2018/07/17(火) 22:19:09.18ID:8FZ8qVPxM
〜の作り方的な本は、言語が分かってない段階だと本当に手順を追うだけになってしまって何一つ頭に残らないからお勧めできない
まあ頭使わずに何かやってる気にはなれるから勉強が苦手でどうしてもモチベーションが続かない人にはいいのかもね
0680デフォルトの名無しさん (ワッチョイ 66e8-LQig)
垢版 |
2018/07/17(火) 22:28:45.89ID:A75xOI8y0
おらにも良書おしえい
0682デフォルトの名無しさん (ワッチョイ 5d1e-EBXJ)
垢版 |
2018/07/17(火) 22:58:06.26ID:s7VdXjPi0
一番いいのは作りたいアプリがあってそれを作る。アプリ作りを通して色々考えることがでてきだろう。最初は一人よがりなプログラムになるかもしれんがそれが第一歩だな。
0684デフォルトの名無しさん (ワッチョイ 66e8-LQig)
垢版 |
2018/07/17(火) 23:27:52.79ID:A75xOI8y0
ここまで0冊
0685デフォルトの名無しさん (ワッチョイ 66e8-LQig)
垢版 |
2018/07/17(火) 23:32:23.19ID:A75xOI8y0
>>672
まずは独習でいいと思う
これで基本機能が理解できたら
Linqや非同期、マルチコア専門の教本もあるから気になったら読めばいい
これらは重要だし独習が終わればよく理解できると思う

実践で役立つ〜はちょっとわからない
0688デフォルトの名無しさん (ワッチョイ 2a7f-L1xz)
垢版 |
2018/07/17(火) 23:47:31.06ID:WCI1fetR0
>>686
昔からあるぞ。
最近のだと、More Effective C# 6.0/7.0が既に出てて、Effective C# 6.0/7.0ももうすぐ出る予定。
0691デフォルトの名無しさん (ワッチョイ 6681-+P7Y)
垢版 |
2018/07/18(水) 02:04:04.67ID:ohWLsVDp0
>>688
やっぱあるよね
感覚的にはeffectiveに書いてある内容がとりあえず理解できて実践しだしたら中級者なイメージ
上級者っていうとmvpクラスと同等の知識レベルとかになるのかなぁ
mvpもいろいろあって基準としては曖昧かもしれんが
0692デフォルトの名無しさん (ワッチョイ 6681-+P7Y)
垢版 |
2018/07/18(水) 02:09:13.63ID:ohWLsVDp0
1000行なんて時には1日で書く程度のアプリ10本作ったところで…
だからって10万行のアプリなんて、それほんとに10万行必要だったの?プラグイン1個居れたら数万行不要になるんじゃない?って気もする
そもそも行数で語る時点でおかしい訳だけど
プログラム未経験は別として経験者なら一言語の中級者になるのに3年もかけてたら上級者になる頃にはその言語消えてんじゃね?って思う
0693デフォルトの名無しさん (スップ Sdea-Y7YF)
垢版 |
2018/07/18(水) 07:35:29.71ID:604NWUGLd
一時的にスリープのように任意のスレッドの処理を停止させて
別スレッドがある処理をしたら停止スレッドが動き始めるような形を作りたいです
waitforsingleobject以外に実現方法ありますか
0695デフォルトの名無しさん (スップ Sdea-Y7YF)
垢版 |
2018/07/18(水) 07:40:12.26ID:604NWUGLd
>>694
Aスレッド、Bスレッドがあって
Aスレッドはたまっているリクエストを非同期で投げ続けています
リクエストは一つずつ送らないといけない制約があるため
その応答が来るまでAスレッドを停止させたいです
応答というのがBスレッドの処理です
0698デフォルトの名無しさん (ササクッテロル Spbd-p+0f)
垢版 |
2018/07/18(水) 10:14:35.95ID:IWAo5nUlp
じゃあセマホ使えよ。
0700デフォルトの名無しさん (ワッチョイ 8954-nsuX)
垢版 |
2018/07/18(水) 13:53:18.95ID:imuZ+lX20
会社クラスを作りインナークラスで部署クラスを作ったのですが、インナークラスの使い方として間違っていないでしょうか

なんかMS意図と違う使い方をしてる気がしておりまして
0703デフォルトの名無しさん (ワッチョイ 6dbb-Qvid)
垢版 |
2018/07/18(水) 19:00:56.71ID:9N0yBnKk0
listviewを使って画像をドラッグした位置に挿入できるようなものを作りましたが、サムネイル表示(ViewプロパティをView.LargeIconに設定)だと移動後に一番後ろに来てしまいます
、どうすれば自由に画像を入れ替えれるのでしょうか?
0704デフォルトの名無しさん (ワッチョイ 1181-L1xz)
垢版 |
2018/07/18(水) 19:50:12.60ID:yFSY1wbO0
>>692
>1000行なんて時には1日で書く程度のアプリ10本作ったところで…

これも内容によるけどな
10本作る間に誰に見られても恥ずかしくないコードが書けるようになれば…
0711デフォルトの名無しさん (アウアウカー Sa55-eTBu)
垢版 |
2018/07/18(水) 23:09:23.95ID:/cNHsX3ta
コントロールそこそこおいたまともなアプリなら1000行じゃおさまらんやろ
0716デフォルトの名無しさん (ワッチョイ ffe8-H0hI)
垢版 |
2018/07/19(木) 00:18:15.44ID:mgU85F4C0
varってスコープが決まってたりよく使うもんだと思ってるんだけど
違うん?

あとコンパイル時に推論されるから実行速度には影響ないって考えていいの?
0718デフォルトの名無しさん (ワッチョイ ffe8-H0hI)
垢版 |
2018/07/19(木) 00:29:37.74ID:mgU85F4C0
>>717
ありがとうございます
0719デフォルトの名無しさん (ワッチョイ ff8a-H0hI)
垢版 |
2018/07/19(木) 00:34:23.22ID:4jMcHp760
var myTable = new Dictionary<string, string>();
myTable.Add("Hokkaido", "Sapporo");
myTable.Add("Iwate", "Morioka");
myTable.Add("Miyagi", "Sendai");

//*1
var b = myTable.ContainsKey("Iwate");

if (b == true)
{
      //*2
var s = myTable["Iwate"];
MessageBox.Show(s);
}

Dictionaryから特定の要素を探して、あれば表示するんですが
この*1 *2 をLINQを使って1行にしたいんですが、どうすればいいですか?
0720デフォルトの名無しさん (ワッチョイ f7d2-zNEp)
垢版 |
2018/07/19(木) 00:38:57.36ID:5TJBBc7u0
継承について
スーパークラスAに始まり
class B : A
class C : B
class D : C
となった場合、
Dクラス内でAやBのクラスのフィールドやメソッドをを使いたくなった場合には
それぞれをインスタンス化をすれば使えると思いますが、
継承されていない場合はどうすれば良いのですか?
例えば、
スーパークラスX
class Y : X
class Z : Y
とい場合、class Aのメソッドやフィールドを使いたくなったときは、
どうやってクラスAを持ってくるのでしょうか?
継承をしなくても、そのクラスのメソッドやフィールドを持ってくる方法はありますか?
0722デフォルトの名無しさん (ワッチョイ ffd3-H0hI)
垢版 |
2018/07/19(木) 00:56:15.63ID:OslD0F820
>>719
LINQ は集合に対して使うものなので、その例だと必要ない

if (myTable.TryGetValue("Iwate", out var s))
{
 MessageBox.Show(s);
}

対象が複数あるならこう

var list = new[] { "Hokkaido", "Iwate", "Tokyo" };
var q = list
 .Where(x=> myTable.ContainsKey(x))
 .Select(x=> myTable[x]);
foreach (var s2 in q)
{
 MessageBox.Show(s2);
}
0723デフォルトの名無しさん (アウアウウー Sadb-glQ9)
垢版 |
2018/07/19(木) 01:05:12.94ID:EPnya5cJa
>>719
LINQ全く関係ないけど比較的新しいC#ならこう書ける
if (myTable.TryGetValue("Iwate", out var s)) MessageBox.Show(s);
どうしても単一ステートメントにしたいなら
myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
(myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す
0724デフォルトの名無しさん (スプッッ Sd3f-/JJK)
垢版 |
2018/07/19(木) 07:22:53.40ID:Y653MTcJd
>>696
awaitでは上手く実現できなさそうな構造でした

https://msdn.microsoft.com/ja-jp/library/system.threading.monitor(v=vs.110).aspx
monitorクラスを使って実現できそうだなとなりました
ただこれのシグナルを投げるpulseとpulseallの違いがよくわかりません
pulseは変数で渡したオブジェクトのスレッドを、pulseallは渡すオブジェクトとか関係なくwaitで止まってるすべてのスレッドを動かす?
0728デフォルトの名無しさん (アウアウエー Sadf-0r7x)
垢版 |
2018/07/19(木) 11:39:51.48ID:wWZN809Va
むしろ一番の疑問は、
>リクエストは一つずつ送らないといけない制約がある

のであれば、キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
なぜリクエストを送る側に受ける側の都合に合わせる負担をさせるのか、
ってことだと思うけど、まあ話が曖昧過ぎてよくわからんね。
0729719 (ワッチョイ ff8a-H0hI)
垢版 |
2018/07/19(木) 12:02:04.85ID:4jMcHp760
>>722
自分のコードだと野暮ったくて古い感じがしたんですが
out var なるものを使ってすっきりさせるんですね

>>723
最近、ラムダ式やLINQを始めたんで↓みたいにメソッドチェーンで繋げたかったんですが
これだとやりすぎなんですねw

>> myTable.TryGetValue("Iwate", out var s) ? MessageBox.Show(s) : DialogResult.None; とか
>> (myTable.TryGetValue("Iwate", out var s) ? (Action<string>)(x => MessageBox.Show(x)) : (Action<string>)(_ => {}))();
>> とか書けなくはないけど俺ならこんなの書いてきやがったらコードレビューで突き返す


ありがとうございました
0730デフォルトの名無しさん (スプッッ Sd3f-FUqr)
垢版 |
2018/07/19(木) 12:23:58.43ID:apArmWopd
見やすくしたり行数減らす為の機能なのに一文に無理やり詰めたら見づらいだろうしな
LINQ使わなくても
;で終わらせた文を一列にずっと書き続けてたらなんだこいつってなるだろうし
0734デフォルトの名無しさん (ワッチョイ 7783-4GkJ)
垢版 |
2018/07/19(木) 14:35:28.55ID:3tSlXwR10
10年で1スレも消費できないムラダ厨がまた初心者スレで暴れてるのか。
0735デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
垢版 |
2018/07/19(木) 15:40:49.42ID:afTcWGfVp
>>728
送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
0736デフォルトの名無しさん (アウアウエー Sadf-0r7x)
垢版 |
2018/07/19(木) 16:09:05.04ID:wWZN809Va
>>735
意味わかんないよ

キューが満杯ならエンキューできないだけ。
そして、キューが満杯になるような事態が起こるかどうかは、キューを送る側受ける側
どちらが持つかという設計の問題とは何も関係がない。

送り側が持てばそんな事態は起こらない、などとはまったく言えない
0741デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
垢版 |
2018/07/19(木) 23:06:52.57ID:afTcWGfVp
>>736
少なくとも送る側が待てばたまらないし、待たすからには大元まで遡って待たせることが出来る。
受け側で貯めちゃうと、そんなコントロールすらできない。
0744デフォルトの名無しさん (アウアウエー Sadf-0r7x)
垢版 |
2018/07/19(木) 23:24:45.38ID:OO5CyzUia
>>741
何を言ってんの。
ちゃんと自分の頭で考えて言ってる?

キューの容量が100だとする。
リクエストが100まで溜まってしまうかどうかは、キューをどちらが持つかと関係ないでしょ。

スループットはリクエストの処理能力で決まるんであって、キューをどっちが持つかで決まるんじゃない。
当たり前でしょ。

送る側が待てばたまらない?
それは受ける側がリクエスト拒否したらたまらないと言ってるのと同じ

君の世界じゃ、バケツリレーの余分なバケツの置き場所を送り元におくか送り先に置くかで
バケツの輸送能力(単位時間あたりの送れる水の量)が変わるの?

変わるわけがないでしょ
頼むよマジで
0751デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
垢版 |
2018/07/20(金) 10:43:27.30ID:aSukBuZjp
>>744
だから、貯め無い様にするには、送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話。
わかる?

通信のフローコントロールの話と同じなんだよ?
0752デフォルトの名無しさん (アウアウエー Sadf-0r7x)
垢版 |
2018/07/20(金) 10:47:52.01ID:j2kgPlBya
>>751
まだ言ってるのか。

君の世界では
>送る側、更にそこに送る側、更に大元の送る行為を辞めされはいいって話

これが可能かどうかはリクエストのキューをどちらが持つかに依存するのか。
キューをリクエストの受け側が持ったらそれは出来ないのか。
意味が分からないよ

何が
>通信のフローコントロールの話と同じなんだよ?
だw
馬鹿過ぎて笑える
0754デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
垢版 |
2018/07/20(金) 10:50:53.38ID:aSukBuZjp
おまえ、目悪過ぎて呆れるわ。

持つなんて一言も言って無いだろw
待つだw マツ。

キューをどっちが持ってるかなんて話はしてない。
0756デフォルトの名無しさん (ササクッテロル Sp4b-zvcE)
垢版 |
2018/07/20(金) 11:16:02.27ID:aSukBuZjp
>>755
まあ普通は受け取る側に郵便受けが無いと受け取る人はいちいち局留めの郵便を受け取りに行かなきゃならないんだけど、まあ、それはどちらでも機能するからあんまり争点にはならないけどね。
0757デフォルトの名無しさん (スププ Sdbf-DFDX)
垢版 |
2018/07/20(金) 13:07:56.71ID:aSN8UD58d
バケツリレーの喩えでもスループットは変わっちゃうんだよな。
受け側に送信側が送信する総量より大きいバッファを持てば、スループットは水の入ったバケツを運ぶ時間に依存するだけで済む。
キューがそれより遅ければバケツを引き渡すために時間が余計にかかるわけだから、スループットは落ちる。
送信側にキューを持ったところで、送信側は送信処理に対して同期的に処理しないだけで済むだけで、そのキューからの送出がどんどん遅れるだろう。受け取ってくれないなら。
0766デフォルトの名無しさん (ワッチョイ 9f9d-gdxi)
垢版 |
2018/07/21(土) 13:53:42.54ID:aw31/LTY0
>>754
もともと
>キューを持つべきなのはリクエストを送る側ではなく受ける側なんじゃないか、
にたいして
>送る側で待たないと仕事を溜め込んだ受け側が最悪死ぬか無視する様になるぞ。
ってレスしてるのが発端なんだが

どうでもいい良いしよそでやって欲しいけど
0767デフォルトの名無しさん (ワッチョイ 97b5-zvcE)
垢版 |
2018/07/21(土) 14:14:10.21ID:IqGIA9LU0
話題が一変してんのにわざわざ掘り返すなよw
言ってる事とやってる事が矛盾してんぞw
0769デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/21(土) 20:00:10.16ID:rsQP0F780
たすけて!
Parallel.ForEachの中でデータグリッドの内容を更新してるんだけど
途中で爆発します
データグリッド全体に✕って出て非表示になる
データグリッドの更新処理はlockで囲ってても競合は起きちゃうものですか?
0771デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/21(土) 20:07:27.16ID:rsQP0F780
>>770
パラレルの外出すと機能するけど
そうすると全処理終わってから一回しか更新されない…😌
0778デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/21(土) 20:24:00.77ID:rsQP0F780
>>772
>>773
>>775
Invokeでググりました
まさにこの疑問を解決するための機能でした
有難う御座います
0779デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 20:35:04.73ID:BEEMYUE30
私は >>773 ですが Invoke について自分があまり良く分かってない気がしてきたので
詳しい方がいらっしゃったら教えてください

UIスレッドで Parallel.ForEach を呼ぶとUIスレッドをつかんだまま並列処理が実行されて、
その並列処理のスレッドで Invoke を使うとデッドロックしてしまう気がするのですが
実際はそういうことはないのでしょうか?
0781デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 21:15:58.91ID:BEEMYUE30
>>779 です
WPF で下のようなコードを実行してみたらやっぱりデッドロックしてしまいました
Invoke はそれなりに慎重に使わないといけないみたいです

void Button_Click(object sender, RoutedEventArgs e)
{
  MessageBox.Show("このメッセージは必ず表示される");
  Parallel.ForEach(Enumerable.Repeat(0, 2), i => Dispatcher.Invoke(() => { }));
  MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}

ちなみに Enumerable.Repeat(0, 2) の部分を変えると以下のような挙動でした

Enumerable.Repeat(0, 0) に変える → デッドロックしない
Enumerable.Repeat(0, 1) に変える → デッドロックする
new int[] { } に変える → デッドロックしない
new int[] { 0 } に変える → デッドロックしない
new int[] { 0, 0 } に変える → デッドロックする
0783デフォルトの名無しさん (ワッチョイ bf99-DFDX)
垢版 |
2018/07/21(土) 21:18:17.40ID:nH897ECr0
>>779
並列処理はUIスレッドではないスレッドで行われるよ。
いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
UIスレッドを掴んだままの意味がわからんが、挙動が謎なら、ブレークポイントつけて実行して、どのスレッドが何をしてるかを把握してはいかがだろうか。
今どのスレッドを使ってるかは表示されてるから。
0785デフォルトの名無しさん (ワッチョイ 7feb-yhN8)
垢版 |
2018/07/21(土) 21:25:21.58ID:VW1YO4fA0
Windows版VSCodeで、monoを構文解析用のコンパイラとして指定することってできないのかな?

Unityの.Net4.0用プロジェクトで、数ヶ月前までは、.Net3.5用のSystem.Data.DLLを読み込んでくれたのにさあ
VisualStudioを更新したら構文解析用のコンパイラが変わったのか、古い.net3.5用のDLLを読み込んでくれなくて赤波線だらけになっちゃったぜ
4.0用のDLLもあるわけだけど、それを入れるとUnityのmonoの方でなぜかエラーを起こすし・・・どうしたら良いものか・・・・
0786デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 21:33:11.65ID:BEEMYUE30
>>783-784
レスありがとうございます

> いや、UIスレッドで行われるとは限らない、と言う言い方の方が正しいかな。
>>781 で new int[] { 0 } だとデッドロックしないあたり、まさにそんな感じですね

> WPFかあ
>>769 でデータグリッドと書かれていたので、
今の Windows フォームなら DataGrid ではなく DataGridView かなと思って
WPF の方で試してしまいました(汗
Windows フォームだと挙動が変わるならそれも知っておきたいので
今からそっちでも試してみます
0787デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 21:36:50.95ID:BEEMYUE30
Windows フォームで試してみたのでご報告を。
以下のコードを実行してみた結果、やっぱりデッドロックしてしまいました
Enumerable.Repeat(0, 2) を変えたときの挙動も >>781 と同じでした

void button1_Click(object sender, EventArgs e)
{
  MessageBox.Show("このメッセージは必ず表示される");
  Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
  MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
0788デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/21(土) 22:26:34.46ID:rsQP0F780
えーわからん…
ちなみにフォームですビューです
つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが

uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
0789デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 22:44:23.68ID:BEEMYUE30
>>788
あくまで私一人の考えですが・・・

[1] Invoke を使うと >>779 に書いたような理由でデッドロックするので
 Parallel.ForEach でUIスレッドを使いたいなら >>773 のようにすべき
[2] しかし、同じく >>779 に書いたように Parallel.ForEach はUIスレッドを
 つかんだまま並列処理を行うのでデータグリッドの更新処理だけ
 Parallel.ForEach から切り出してもほとんど同じなのでは?
 (一応 localFinally 中も他のスレッドは動けるので
   そこで更新処理を行う方がいい場合もあるかもしれない)
[3] 並列処理が必要なほど大きな処理を行うなら、
 一度UIスレッドを手放す選択肢も考えてみては?

ただ、Invoke がダメだと考えている人間自体が私だけのような気もするので
他の方の意見も聞いてみたほうがいいと思います
あと、[3] に関しては場合によりけりだと思うので、
具体的な処理内容を教えていただければ私の考えをお伝えしたいと思います
0792デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 23:10:20.56ID:BEEMYUE30
>>790-791
レスありがとうございます
>>779 の考えで正しいのか不安だったのですがお陰様で自身が持てました
他に何かおかしなことを言ってしまっていたら教えていただけると嬉しいです

>>788
>>789 はレスとしてとっ散らかっている気がしてきたので一問一答で答えてみます

> つまりフォームアプリでParallel処理内でinvokeってそもそも悪手なんでしょうか
Parallel を UI スレッドで実行する場合は悪手というか、致命的だと思います

> それともThread生成してその中でParallelすれば良かったり…?これはすごい破綻してる気がしますが
それなら期待通りの動作にはなると思います。ただ、確かにあまりいい方法ではないと思います

> uiスレッドから切り離した他スレッドから安全にuiを制御するなんて考えが可笑しいんでしょうか
正しく Invoke を使えば問題ないと思います
しかし今回の件からもわかるように、Invoke を正しく使うのはなかなか難しいようです
0794デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 23:30:54.97ID:BEEMYUE30
>>793
それって
> それともThread生成してその中でParallelすれば良かったり…?
よりも更にワチャワチャする気がするのですがどうなんでしょう?

ワチャワチャって具体的にどういうことなのか
説明を求められれば頑張ってみようと思いますが、
自分の考えがあっているかも、それをうまく説明できるかどうかも
自信がないので、詳しい方の意見を聞けると嬉しいです
0795デフォルトの名無しさん (アウアウエー Sadf-0r7x)
垢版 |
2018/07/21(土) 23:41:01.32ID://qCwfF7a
>>794
そんな難しい話じゃないっすよw

BeginInvokeは非同期に実行される、つまりキューにデリゲートを入れたらすぐに処理を返すので
Invokeのように自分で自分の終了を待機する状態に陥らない
0796デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/21(土) 23:43:41.94ID:rsQP0F780
>>792
有難う御座います
これで行けたので実装試してみます

void button1_Click(object sender, EventArgs e)
{
  MessageBox.Show("このメッセージは必ず表示される");
  Task.Factory.StartNew(() =>
  {
  Parallel.ForEach(Enumerable.Repeat(0, 2), i => Invoke(new Action(() => { })));
  }
  MessageBox.Show("デッドロックするとこのメッセージは表示されない");
}
0797デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/21(土) 23:55:52.12ID:BEEMYUE30
>>795
レスありがとうございます
おっしゃる通りBeginInvokeはキューにデリゲートを入れたらすぐに処理を返すので
次から次へとキューが入って大変なことになりそう・・・と思ったのですが、
そんなに心配することではないのでしょうか

>>796
それで一応動くと思いますが、Parallel.ForEach が終わる前に
二つ目の MessageBox.Show の行に移るので注意してください
・・・というか、localFinally を使ったり更新処理だけを切り出したりはダメっぽいですか?
ダメだと考えられた理由を教えていただければ何かアイディアを提供できるかもしれません
0798デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 00:03:07.23ID:qjdpSLXF0
>>797
データグリッドビューは進捗状況を見るために更新していて
1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます

ダメではなく単純に自分が分かってないだけです
この処理ならlocalFinallyが最適かもです
深く調べてみます
0799デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 00:13:38.17ID:IU6x2eOV0
>>798
> データグリッドビューは進捗状況を見るために更新していて
> 1行1スレッドで処理されて処理後にどう処理されたかをリアルタイム表示してます
進捗状況の確認が必要なほど1行あたりの処理に時間がかかる理由は何でしょうか?
もしその理由が IO など、CPU 以外のところにあるのだとすれば、
Parallel.ForEach を使うこと自体を見直したほうがいいかもしれません

> この処理ならlocalFinallyが最適かもです
正直なところ、更新処理だけ切り出す方法よりも localFinally の方が
適切なケースはまれだと思います
ただ、localFinally の使い方がわかれば更新処理を Parallel.ForEach の外に
切り出す方法もわかると思うので、とりあえず調べてみて損はないと思います
0800デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 00:23:24.78ID:qjdpSLXF0
>>799
圧縮ファイルを解凍して中のファイルを加工して再び圧縮し直す
これで1タスクです
1ファイル200MBほどで100ファイル以上処理することが多いです
圧縮解凍、加工は外部ツールを使用しててProcessStartInfoで処理されます
0801デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 00:35:58.51ID:IU6x2eOV0
>>800
なるほど〜
CPU 処理も IO もあって微妙なところですね

ちなみにその外部ツールはマルチスレッドを使うオプションはないでしょうか?
(例えば 7-zip.exe だと -mmt がそれにあたります)
もし外部ツールがマルチスレッドに対応してるなら、
並列処理はそっちに任せてしまうというのはどうでしょう?

または、外部ツールではなく SharpCompress のようなライブラリを使うことができれば、
C# によるより細かい制御も可能になると思います
0803デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 00:45:55.06ID:IU6x2eOV0
>>800
それともう一つ、外部ツールを呼び出すのにデフォルトの ParallelOptions で
Parallel.ForEach を呼び出すのはさすがにまずいと思います
ParallelOptions 自体に MaxDegreeOfParallelism というプロパティがありますし、
ParallelOptions の TaskScheduler プロパティに以下のような自前のスケジューラーを
設定すればより柔軟な並列処理を実現できると思います

同時実行の程度を制限するタスク スケジューラを作成する
https://msdn.microsoft.com/ja-jp/library/ee789351(v=vs.100).aspx

>>802
それは確かにw
完成したソフトによって得られる利益よりソフトを作るコストのほうが大きくなってしまったら
意味がないですからね
(ただしソフトによって得られる利益には開発者のスキルアップも含まれる・・・と言ってみたりw)
0804デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 00:48:52.21ID:qjdpSLXF0
>>801
7zip使ってます
スレチになるけど
mmtは一つの処理をマルチに実行するものではないでしょうか

圧縮形式は決まってなく複数あるので7zipを使用してます
zip rar lzh以外にも色々
0805デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 00:51:33.52ID:qjdpSLXF0
>>803
タスクスケジューラー調べてみます良さそうですね

i7使用しててMaxDegreeOfParallelismは常に8で実行してます
8スレッドで画面カッチカチで処理してます
暴力です
0806デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 00:54:31.49ID:IU6x2eOV0
>>804
> mmtは一つの処理をマルチに実行するものではないでしょうか
その通りです
したいことが「進捗状況を表示できるようにすること」と「並列化により処理時間を短縮すること」
だとすれば、それで問題ない(というかむしろその方が望ましい)の思うのですがいかがでしょうか?
0807デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 00:59:41.83ID:IU6x2eOV0
>>805
MaxDegreeOfParallelism を使ってらっしゃるなら
とりあえず致命的にまずいことはないと思います
ただ、CPU だけじゃなく、同時に8つのファイルの読み書きを
求められる HDD さんの気持ちも考えてあげて・・・w
0808デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 01:01:31.55ID:qjdpSLXF0
>>806
後続の加工処理もありエラー監視も含むので進捗知りたいです
0809デフォルトの名無しさん (ワッチョイ 9f7f-0FgR)
垢版 |
2018/07/22(日) 01:03:03.89ID:SZ8yn9810
>>798
localFinallyよりasync/awaitの方が分かりやすいと思う。

private async void button1_Click( object sender, EventArgs e )
{
MessageBox.Show( "このメッセージは必ず表示される" );
await Task.Run( () =>
{
Parallel.ForEach( Enumerable.Repeat( 0, 2 ), i => Invoke( new Action( () => { } ) ) );
} );
MessageBox.Show( "デッドロックするとこのメッセージは表示されない" );
}
0811デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 01:04:22.38ID:qjdpSLXF0
>>807
解答先は8GBのRamディスクです
メモリに物理ファイルおいてでここで加工して再圧縮してその後HDDに移動させてます
0812デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 01:18:41.37ID:IU6x2eOV0
>>808
Parallel.ForEach を使わなくてもそれはできると思うのですがいかがでしょうか?

>>809
確かにおっしゃる通りですね
後は好みの問題ですが、やはり私は1行ごとに Invoke するよりも
パフォーマンス的に有利な localFinally や更新処理の切り出しを推したいですw

>>811
なるほど!そうすれば外部ツールを使っても HDD へのアクセスだけ別に処理できますね
ただ、HDD へのアクセスを別にしようという意識をお持ちで、それだけのスキルもあるのなら、
外部ツールにこだわる必要はないのでは・・・という気もします
あと、メモリは HDD よりはずっと速いですが、CPU キャッシュとかの関係でやっぱり
8 個のファイルを同時に読み出すよりは1つずつの方が良いような気がします
0813デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 01:27:28.49ID:IU6x2eOV0
>>809 >>812
いや、でも進捗状況を表示するとなると結局どこかで await は使うことになりそうですね
ただ私としては >>800 のような処理なら Parallel.ForEach は必要ないと考えていて、

foreach (ファイルのループ)
{
  foreach (進捗状況のループ)
  {
    await (進捗状況の更新待ち);
    (進捗状況を画面に反映);
  }
  (1ファイルの完了を画面に反映);
}

のような感じで十分だと思うのですが、どんなもんでしょうか?
0814デフォルトの名無しさん (ワッチョイ ff81-MwhK)
垢版 |
2018/07/22(日) 01:35:51.92ID:eU7Qw5rc0
そんな処理速度気にするなら複数PC用意できたりしないのかな?
たぶん内製ツールだと思うけど、そういうのって長期保守とかしないならシンプルでさくっとやれる方向を模索したほうがいい気が…
研究開発兼ねてとかだったらいいんだけど
0815デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 01:43:37.75ID:qjdpSLXF0
>>812
そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
別の手段があればコレに拘ることはないと思ってます

>>813
cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
その中で最適化してきたので
localfinally使用したときと
1ファイルの処理の差も検証してみたいと思います

>>814
ただの趣味なんですPC一台で
複雑でも効果があれば試したいと考えています
0816デフォルトの名無しさん (ワッチョイ ffe8-U/lW)
垢版 |
2018/07/22(日) 01:44:34.84ID:qjdpSLXF0
ほな寝ます。詳しくありがとうございました!
もしかしたら明日もっとやべーかもです
0817デフォルトの名無しさん (ワンミングク MM7f-ArLl)
垢版 |
2018/07/22(日) 01:59:21.48ID:J1Nh86LOM
var block = new ActionBlock<ZipOpParam>(
async (param) => {
await ExecuteZipOpAsync(param);
InvokeUpdateUi(param);
},
new ExecutionDataflowBlockOptions {
MaxDegreeOfParallelism = 8
});

foreach(var p in zipOpParams)
block.Post(p);

block.Complete();
await block.Completion;
0818デフォルトの名無しさん (ワッチョイ 9f5d-haGl)
垢版 |
2018/07/22(日) 03:07:13.11ID:IU6x2eOV0
>>815
> そうです、最も投げやすく勝手にマルチしてくれる便利なParallelさんって聞いて使ってるます
これは私も同じように認識しています

> cpuキャッシュとか考慮せずマルチ=高速って誤認識で走ってきて
これは場合によりけりだと思います
特に今回のように外部ツール側でマルチスレッドにできる場合はツールの呼び出し側では
余計なことをせず外部ツールに任せたほうが高速になる場合が多いと思います


>>817
C# で並列処理を行うならこれは一つの解決策になりそうですね
別の解決策として、新たに参照を追加する必要のない↓の方法とかどうでしょう?

var tasks = new List<Task>();
foreach (var param in zipOpParams)
{
  if (tasks.Count == 8) tasks.Remove(await Task.WhenAny(tasks));
  tasks.Add(ExecuteZipOpAsync(param).ContinueWith(
    _ => InvokeUpdateUi(param),
    TaskScheduler.FromCurrentSynchronizationContext()));
}
await Task.WhenAll(tasks);
0820デフォルトの名無しさん (ワッチョイ d763-ylAy)
垢版 |
2018/07/22(日) 13:48:56.26ID:dLVAOvzX0
オブジェクト指向について勉強しようと思い、クラスを複数作って実行しようとしたら実行ボタンがプロセスにアタッチというよく分からない物に代わりビルドなども出来なくなってしまいました
どうしたら元に戻せるでしょうか
0821デフォルトの名無しさん (ラクッペ MM0b-3H7b)
垢版 |
2018/07/22(日) 15:37:48.37ID:X/YKRg9/M
参考にした資料がそう(実行ボタンをプロセスにアタッチ)しろと書いているなら
その手法でトラブった時の解決法も資料に書いてあるのでは

提示されたくらいの情報でここで帰ってくる答えは
「ゴミは捨てて作り直せ」
「一旦オブジェクト指向についての記憶を消せ」
だと思う
0822デフォルトの名無しさん (ワッチョイ d763-ylAy)
垢版 |
2018/07/22(日) 19:34:11.94ID:dLVAOvzX0
このように実行ボタンがアタッチ…となりビルドも行えなくなってしまっています…
プログラムは「確かな力が身に付くc#超入門」から取っていて特にプロセスにアタッチに関する記述も無いので恐らく設定どこか変に弄ってしまったのかと思うのですが…
https://i.imgur.com/QK8r2yI.jpg
0827デフォルトの名無しさん (ワッチョイ ff81-5o+W)
垢版 |
2018/07/23(月) 00:19:07.43ID:glq8mOZ10
revertしろや。意味もわからんだろうがな。
0830デフォルトの名無しさん (ブーイモ MM7b-5o+W)
垢版 |
2018/07/23(月) 09:39:14.18ID:GAsLkYgIM
>>828
ググって勉強しろということだ
0834デフォルトの名無しさん (ブーイモ MMbf-rtlg)
垢版 |
2018/07/25(水) 14:20:20.79ID:HwnrNSAwM
Classic ASP.NETは拡張性とかガン無視でMSがデフォルトで提供するお仕着せのものだけ覚りゃ一通りできるっていうドカタ向けフレームワークだぞ
Springみたいなのがお好みならASP.NET Core使え
0839デフォルトの名無しさん (ワッチョイ 7f9f-L2yr)
垢版 |
2018/07/25(水) 23:40:00.99ID:sTP5vmoc0
>>834
ASP.NET CoreってPrimeFacesのような無料で便利なライブラリあるの?
商用ならWijmoやTelerik色など々あるようだけど有料はちょっとね
拡張すりゃ出来るとかハンドラ書けばできるとかそんなのは当たり前の事だけど
そんな車輪の再発明に工数が出るわけがないし
0847デフォルトの名無しさん (ワントンキン MM42-ylDe)
垢版 |
2018/07/26(木) 19:08:23.29ID:BBodZQOSM
>>842
そういう使い方はNGですね
サーバーサイドレンダリングが基本のフレームワークとクライアントサイドのフレームワークは常識的に考えてインピーダンスミスマッチでしょう
(primefacesのように最初からセットで設計されてるならともかく)
それならまだaspnet coreはapiに徹してangularやreact使ったほうがマシです
0849デフォルトの名無しさん (ワッチョイ 5e8a-3ouB)
垢版 |
2018/07/26(木) 19:30:12.58ID:36qwSZL10
C#で、VPN経由でCiscoのL2スイッチにログインしてフォワーディングデータベースと各ポートのステータスを取得したいんですが、
簡単に解説しているサイトはないでしょうか?

クライアントを動かすPC - HUB - NATルーター - VPNルーター - ネット - VPNルーター - HUB - Ciscoルーター - 目当てのCisco L2スイッチ
ていう状態です。
0850デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
垢版 |
2018/07/26(木) 19:41:22.79ID:jgVPt9Lg0
LinQの中身ってfor文ってホント?
0852デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
垢版 |
2018/07/26(木) 19:49:11.86ID:jgVPt9Lg0
LinQクラスの各メソッドの中身の味方教えてください
0855デフォルトの名無しさん (ワッチョイ 929d-cPc7)
垢版 |
2018/07/26(木) 20:49:53.68ID:X2GH2dHI0
>>847
NGかどうかはお前の都合だがな
ASP.NETでもWebFormあたりは、サーバ側とクライアント側の統合を目指してたんだよ
クライアントスクリプト一切書かなくてもAJAXできるコントロールとかまであった

だが今の流れはサーバサイドはサーバサイド、クライアントはクライアントな流れ
クライアントはすきなライブラリ使え
>それならまだaspnet coreはapiに徹して
apiに徹するのと、html出力に徹するのとどれほどの違いがあると?
0858デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
垢版 |
2018/07/26(木) 21:10:20.45ID:aLLF0qhM0
>>855
WebFormsの時からずっとだけど鯖で出力したhtmlやバックエンドの挙動を把握してJS書かないといけないからめんどくせえじゃん
なんのためにナマのhtmlを隠蔽したのかって話になる
htmlを隠蔽すると決めたなら徹底しなきゃならん
apiに徹すればクライアントはクライアントで綺麗に切れるからそんな煩わしさから開放される
0862デフォルトの名無しさん (ワッチョイ 16e8-53i4)
垢版 |
2018/07/26(木) 21:45:25.99ID:F57VHmfS0
ソリューションエクスプローラーで.csファイルのなめえ変えてもデバッグできる?データ壊れない?
0864デフォルトの名無しさん (ワッチョイ 16e8-53i4)
垢版 |
2018/07/26(木) 21:50:46.39ID:F57VHmfS0
いやあああああああ
これ理解してないと動かなくなるやつうううう
https://i.imgur.com/3Mz1OsU.png
0868デフォルトの名無しさん (ワッチョイ 16e8-53i4)
垢版 |
2018/07/26(木) 21:55:22.46ID:F57VHmfS0
>>866
>>867
ごめん無事でした
なんかVSがクラス名と一致させようとするからダメかと思いました
ありがとうございます
0869デフォルトの名無しさん (ワッチョイ 16e8-53i4)
垢版 |
2018/07/26(木) 21:59:28.86ID:F57VHmfS0
>>854
これ見てみます
ありがとうございます
0871デフォルトの名無しさん (ワッチョイ b7d2-dWiX)
垢版 |
2018/07/26(木) 22:27:27.51ID:ySl3KkZ10
>>867
gitでもフォルダコピーでも、自由に試し放題なのは同じだが
gitだとフォルダコピーに該当する操作が一瞬なんだよね
フォルダコピーだとある程度大きいプロジェクトになるとプログレスバーを待たなきゃならん
0872デフォルトの名無しさん (ワッチョイ c69f-5Vmn)
垢版 |
2018/07/28(土) 08:21:01.22ID:IX5bbTr/0
DataAnnotationsの属性の組み合わせを新しい属性として定義することはできますか?

例えばFooIdは20文字以下で"^[A-Z]{5}-\d+$"にマッチしなければなりません
StringLengthAttributeとRegularExpressionAttributeを組み合わせて
FooIdAttribute := StringLengthAttribute(20) and RegularExpressionAttribute(@"^[A-Z]{5}-\d+$")
といったニュアンスでFooIdAttributeを定義したいのですが方法を探してもまったく見つかりません

もちろんValidationAttributeを継承してFooIdAttributeを作るだけなら出来ました
しかしこの方法ではASP.NETのクライアント検証やEFのコードファーストがStringLengthAttributeとRegularExpressionAttributeを認識してくれません

すべてを諦めて
「モデルプロパティとしてFooIdを使う時はstring型でプロパティを定義してStringLength(20)とRegularExpressionAttribute(@"^[A-Z]{5}-\d+$")をコピペすること」
といった実装ルールを定めてDRY違反には目をつぶるしかないのでしょうか
0873デフォルトの名無しさん (ワンミングク MM42-ylDe)
垢版 |
2018/07/28(土) 09:32:16.19ID:rUA3L/4NM
バリデーションに限った話ではなく属性のMixinができないのは言語仕様の欠陥
多重継承が可能なら悩むことなかったんだけど...
まあC# 9ではMixinがサポートされるらしいのでそれ以後は簡単になるだろう
それまでは諦めてコピペする以外ない
0876デフォルトの名無しさん (ワンミングク MM42-ylDe)
垢版 |
2018/07/28(土) 16:54:36.21ID:Ls9tzaL9M
>>875
ValidationAttributeはサーバーサイド検証はできるけどクライアントサイド検証やEFには効果がない(追加コードを書かなければ)
属性Mixin的なことができれば追加コードを何も書かずにそれらの収穫を得ることができたはずなんだ
0882デフォルトの名無しさん (ワッチョイ 02eb-x//5)
垢版 |
2018/07/29(日) 17:39:04.96ID:jELBj7vj0
それらを管理する構造体かクラスを作るのが良いでしょう
ただ、作り始める前に現代風のプログラミングの仕組みを勉強したほうが良いんじゃないかな
変数のスコープの問題として解決しようとする時点で基礎が出来ていない気がしてしまう
0887デフォルトの名無しさん (ワッチョイ 6fb5-WEB5)
垢版 |
2018/07/29(日) 19:32:07.48ID:0glkw7L10
普通は目的や用途に分けてベースクラスと機能クラスに分けて配置するだろ。
0889デフォルトの名無しさん (ワッチョイ b39f-Fk8t)
垢版 |
2018/07/29(日) 19:36:39.97ID:LP0lwlvd0
public static read onlyをまとめたクラス1個作ればよくね?
0892デフォルトの名無しさん (ワッチョイ 12d2-gjV1)
垢版 |
2018/07/29(日) 22:38:15.47ID:F0wMdqEY0
標準モジュール→Public Shared Class
0898デフォルトの名無しさん (ドコグロ MM32-WSYg)
垢版 |
2018/07/30(月) 07:19:52.76ID:+iDwScmiM
>>897
俺は何度も登場させた方がいい派
登場させないってことは定数であるにも関わらず変数に突っ込んで色んなとこ回して最後にそこに行き着く的なソースになんだろ?
定数なら検索したときに使用箇所がひと目でわかったほうがいいよ
0900デフォルトの名無しさん (ワッチョイ 6fb5-WEB5)
垢版 |
2018/07/30(月) 09:05:26.71ID:Jg26N5KJ0
クラス内で何度も参照する事はあるだろうが、複数のクラスに跨って同じ定数を参照するってのは、
それ、たまたま同じなだけだから、まとめるのは誤りだろ?
0901デフォルトの名無しさん (ブーイモ MM0e-cnlH)
垢版 |
2018/07/30(月) 09:07:31.01ID:MG3uyJqBM
899に同意だな。おれがレビューしたら書き直させるわ。
0908デフォルトの名無しさん (ワッチョイ 16e8-4UL4)
垢版 |
2018/07/30(月) 15:35:38.43ID:5x/p7Cmg0
コンボボックスのitem追加してるだけやん
0909デフォルトの名無しさん (ワッチョイ 02eb-2QVD)
垢版 |
2018/07/30(月) 17:13:19.68ID:fEGsPpBX0
これ、出来上がるまでずっと聞きまくるわけかい?
0913デフォルトの名無しさん (ワッチョイ d27f-J6FL)
垢版 |
2018/07/30(月) 21:47:46.48ID:wGxxsVxc0
>>908
コメントにも書いてあるなw
0925デフォルトの名無しさん (ワンミングク MM42-BbI7)
垢版 |
2018/08/01(水) 10:13:49.72ID:xEVWsek0M
VS2013 で Process で別コンソールアプリを実行するプログラムを作っています。
OutputDataReceivedイベントで随時標準出力を取得したいのですがうまくいきません。
同じくVS2013C#で作ったコンソールアプリでのConsole.WriteLineならうまくいくのですが
VC++6.0 で printf 出力だと、ある程度溜まったタイミングでそれまでの出力が一気に来ます。

printfでもリアルタイムで取得できるようにできないでしょうか。
0926デフォルトの名無しさん (ササクッテロ Sp47-WEB5)
垢版 |
2018/08/01(水) 10:16:00.84ID:bFUL3z7Ep
そりゃあ、ある程度溜まってから表示されるからじゃね?
0932デフォルトの名無しさん (アウアウウー Sa43-Hl5m)
垢版 |
2018/08/01(水) 22:14:32.39ID:+VbRL20ga
resharper重いから嫌い
よく他の拡張と干渉して不具合起こすし、機能の頭数だけ多くて結局vsにデフォルトで搭載されてる機能と似たようなもの以外は滅多に使わなかった
vscodeが快適すぎて最近はC#もほとんどvscodeで書いてるわ
0937デフォルトの名無しさん (ブーイモ MM67-Eno9)
垢版 |
2018/08/02(木) 14:19:27.48ID:5ti5JZJPM
>>935
フォントのレンダリングが美しくて見やすい
プラグインが豊富
一緒に他の言語のソースを編集する必要がある場合に完全にシームレスに行き来できる
プロジェクトファイルを直接テキストとして開ける(.NET Coreなら必須)
0938デフォルトの名無しさん (ワッチョイ 33d3-Xflc)
垢版 |
2018/08/02(木) 18:24:36.08ID:IKbU8cfg0
細かい話だけど.csprojのテキスト編集は.NET Coreプロジェクトだと
VSでもコンテキストメニューにあるのよね
まあIDEの立場としてはGUIが未実装故の手抜きと見做すべきだろうけどw
0940デフォルトの名無しさん (ブーイモ MM67-Eno9)
垢版 |
2018/08/02(木) 19:09:52.83ID:5ti5JZJPM
>>939
設定を必要最小限にして極力テキストベースで完結させるのが今時の流行り
新形式のプロジェクトファイルは直接手で編集しやすいように構造が全面的に見直されてるんだよ
gitにコミットするときとかgithub上でレビューしたりするときにどうせ中身を一行一行意識しなきゃいけないんだから、
GUIの設定画面なんかはっきり言って邪魔なだけ
0944デフォルトの名無しさん (ブーイモ MM67-Eno9)
垢版 |
2018/08/02(木) 19:33:26.86ID:5ti5JZJPM
まあ騙されたと思って新しい形式のプロジェクトファイル使ってみたら?
Coreじゃなくても使えるよ
GUIによる設定は今まで通りにできるし、バージョン管理が楽になって普通に便利
0946デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
垢版 |
2018/08/02(木) 19:47:31.22ID:R3xyuwRy0
>>944
結局ゲイツとカトラーがこんなもの使いものになるかとブチ切れしたのが最後、MSの凋落が止まりませんな。
マイナー街道まっしぐらだったヘジをスカウトしたのが失敗の始まりだったな。
0948デフォルトの名無しさん (アウアウカー Sa07-kkiZ)
垢版 |
2018/08/02(木) 19:50:50.20ID:3eKb6bola
>>947
いいから早く就職しろ
0950デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
垢版 |
2018/08/02(木) 19:56:33.48ID:R3xyuwRy0
ID:vZ9OA8Bgd ←こいつC#しかできないみたいw

何を勘違いしてC#を勉強した知らんが10年前から既にC#はオワコンだから諦めろ。今は採用案件は皆無。

馬鹿なおまえになぜか教えてやろう。C#は糞だから。これが世界中のIT業界の総意。ゲイツやカトラーも含めてな。
0952デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
垢版 |
2018/08/02(木) 19:59:47.82ID:R3xyuwRy0
しかし、今時、30年前の手法でやりましょうって笑えるよな。開発の歴史を全く知らないのだろうか。
それが今の流行ならWindows10やC#も流行ってるはず。だが見向きもされない。むしろ敬遠されてる。
0954デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
垢版 |
2018/08/02(木) 20:03:34.69ID:R3xyuwRy0
>>951
はぁ? むしろボーランドこそ革新的なIDEを普及させたんじゃねーか。そんなことも知らないとか無知すぎる。
それがなんでまたGUIは邪魔なんでテキストでやりましょうってw アホですか。どうせエディタもvim設定なんだろ。

時代遅れの骨董品どもが。
0955デフォルトの名無しさん (ワッチョイ cfe8-Xflc)
垢版 |
2018/08/02(木) 20:03:36.14ID:L2LG0yaW0
え、わからない
VBとC#どっちがいいの?
0960デフォルトの名無しさん (ワッチョイ 3383-0Uuo)
垢版 |
2018/08/02(木) 20:11:37.17ID:R3xyuwRy0
煽りしかしない奴ってなんで内容ないレスばかりするんだろうと思ったんだけど、
キーボードアレルギーか何かで入力がめっちゃ遅いんだと思うわ。
おれが5レスする間に一行しか打てないトロ臭さ。

リアル低スキルじゃん。今まで碌にコード書いてないのがバレバレだな。
0963デフォルトの名無しさん (ワッチョイ cf80-F72M)
垢版 |
2018/08/02(木) 21:55:18.44ID:6w1GWseD0
>>934
OleDbじゃシート順は無視されるから他の手立てを考える必要がある
https://stackoverflow.com/questions/1164698/using-excel-oledb-to-get-sheet-names-in-sheet-order
xlsxならここのZipArchive使うのとか(他に色々書かれてるコードは意味ないから無視して良い)
System.IO.Compress.PackagingとかOpen Xml SDKとかClosedXMLとか
xlsならNPOIぐらいなんかね あ、上のページにNPOIのサンプルもある
0964デフォルトの名無しさん (スププ Sd1f-ON65)
垢版 |
2018/08/03(金) 08:51:02.00ID:tLm3HHgqd
まあVSつかいたい奴は明らかにVSが向いてないシーンでも使いたがるからな。
俺も使い分けてるが、netcoreでも案外VS起動する事の方が多い。nuget探しやすいとかそんなレベルだけど。
どっちでも良いものは割とVS Codeで開くな。
とはいえ、mdのライブプレビューとかVSで出来んのかな?
0965デフォルトの名無しさん (ササクッテロ Spc7-pHBK)
垢版 |
2018/08/03(金) 11:29:34.10ID:am/wpoGlp
VSはIDEの機能を利用したいが為だけに使うことがある。
0968デフォルトの名無しさん (ワッチョイ cfe8-Xflc)
垢版 |
2018/08/03(金) 19:55:03.42ID:nRWExeYy0
C#よりVBのが人気って本当ですか?
0970デフォルトの名無しさん (ワッチョイ 6f9e-QB3m)
垢版 |
2018/08/03(金) 22:34:44.79ID:pBzQtwq10
if(aaa.bbb.ccc ==null){
 ・・・
}
だと、aaaかaaa.bbbがnullの時にNUll参照エラー出ますよね。
じゃあ、
if(aaa!=null && aaa.bbb!=null && aaa.bbb.ccc ==null){
こう書くしかないですか?
もっとスッキリ書けませんか?
0972デフォルトの名無しさん (ワッチョイ b3e3-HuCS)
垢版 |
2018/08/03(金) 22:43:12.49ID:ls6gmcCr0
>>970
なんか下のコードって
動いたら不具合臭くない?

if(コードA && コードB && コードC)

ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
コードABCがそれぞれ結果を保持するような動作をするときもにょる

言語仕様がどうなってようと書いたやつは死刑
0973デフォルトの名無しさん (ワッチョイ ffa6-F9eT)
垢版 |
2018/08/03(金) 22:57:30.21ID:5FtEqA870
>>972
横からですが
> ってあったときにコードAがfalseだからってコードCが実行されないとおかしくなる処理もあるんじゃね?
そういう場合は && ではなく & を使うと良いようです。
よかったら「短絡評価」で検索してみてください。
0976デフォルトの名無しさん (ワッチョイ ffa6-F9eT)
垢版 |
2018/08/03(金) 23:59:44.06ID:5FtEqA870
>>975
>>973
確かにその場合は短絡評価は余計なお世話と言うか、短絡評価を使うことは間違ってますね。
ただ、>>970 の例では副作用がないのは明らかですし、
C# で短絡評価が用意されている以上、それを使うなというのは酷な話のようにも思います。

今回の問題に関しては >>974 のような & も && も使わない解決策もありますが、
Microsoft の Reference Source でも obj != null && ((int)obj) != 0 のように
短絡評価が積極的に使われてますので、そのようなコードは認められるべきではないでしょうか。
0978デフォルトの名無しさん (ワッチョイ cf81-TkmH)
垢版 |
2018/08/04(土) 00:53:29.00ID:b3FMlOEa0
なんかnull条件演算子が短絡じゃないような言い方をしている人がいますが
null条件演算子は短絡評価なので念のため

仕様の是非については関知しません
勝手にすればよろしい
0979デフォルトの名無しさん (ワッチョイ 6f9e-QB3m)
垢版 |
2018/08/04(土) 09:01:55.83ID:n5GHf3Ra0
>>974
もし
aaa.bbb= null
だった場合に、
if(aaa?.bbb?. ccc == null)
がtrueになることは無いですか?
0986デフォルトの名無しさん (ブーイモ MM67-Eno9)
垢版 |
2018/08/04(土) 10:46:26.16ID:Q3NLupVYM
?.は使える場面が限られすぎてるんだよな
主語が違っても使えるようにしてほしい
employee ?& company.Fire(employee)
// employee != null ? company.Fire(employee) : null と等価
みたいな
0987デフォルトの名無しさん (ワッチョイ ffb3-6jVY)
垢版 |
2018/08/04(土) 12:29:39.69ID:AH7fLvgn0
>>984
> Null 条件演算子の結果でnull判定ってなんか使い方おかしくね?
そんなもん何をやりたいかによるだろ

> null判定の記述省略が目的だと思ってたわ
Null条件演算子自体の目的はそれでいいと思うが
0988デフォルトの名無しさん (ワッチョイ 6f9e-QB3m)
垢版 |
2018/08/04(土) 12:36:27.73ID:n5GHf3Ra0
>>986
>employee ?& company.Fire(employee)

?& とは何ですか?
ググルキーワード教えて下さい。
0992デフォルトの名無しさん (ワッチョイ 639a-7JJt)
垢版 |
2018/08/05(日) 17:47:48.87ID:76QdhMr90
どうでもいいことになるとレスが増えるな
>>980
テンプレ読んでいるだろ。スレたて
0996デフォルトの名無しさん (ワッチョイ b38d-0Uuo)
垢版 |
2018/08/05(日) 19:30:23.50ID:yb/HDiEo0
コンソールプログラミングでは
Application.DoEventsが使えませんが
代わりに処理中の入力を受け付けるようなメソッドはないでしょうか?

時間がかかる処理をESCキーでキャンセルするような処理を
コンソールプログラムで書きたいと思っています
0997デフォルトの名無しさん (ブーイモ MM67-Eno9)
垢版 |
2018/08/05(日) 19:30:55.99ID:uVIrroLRM
こうかな
// nullが見つかった深さを返す
static int? AmazingNullCheck(int level, dynamic obj, params Func<dynamic, dynamic>[] next) =>
 obj == null ? level : next.FirstOrDefault()?.Invoke(level + 1, obj, next.Skip(1).ToArray());

if (AmazingNullCheck(0, a, a=>a.b, b=>b.c) == 2)
 // a.b.c == null
0998997 (ブーイモ MM67-Eno9)
垢版 |
2018/08/05(日) 19:37:00.55ID:uVIrroLRM
訂正
obj == null ? level : !next.Any() ? null : AmazingNullCheck(level + 1, next.First().Invoke(obj), next.Skip(1).ToArray());
かな
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 61日 0時間 13分 9秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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