トップページ⇒tech
1002コメント395KB

ふらっと C#,C♯,C#(初心者用) Part125 [無断転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ f97b-lsIp)2016/10/08(土) 21:33:26.22ID:KfBpvv2w0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part124
http://echo.2ch.net/test/read.cgi/tech/1471004887/

■関連スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/

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

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0002デフォルトの名無しさん (ワッチョイ fc5e-lsIp)2016/10/09(日) 09:01:10.77ID:G17UML8q0
>>1
スレたて乙
5レスくらい埋めないと落ちるかも
0003デフォルトの名無しさん (アウアウ Sac5-Nuoi)2016/10/09(日) 09:28:56.72ID:tkPBsJC6a
>>1乙
いつもROM専ですが
0004デフォルトの名無しさん (ワッチョイ c3c0-lsIp)2016/10/09(日) 09:30:27.17ID:2uWzXVZF0
>>1乙

.NET2.0のフォームアプリをメンテナンスすることになったんだが、最近のOSだと.NET3.5入れないと動かないんだな
.NET3.5と4.5.2の並行路線は何時まで続くんだろ・・・
0005デフォルトの名無しさん (アウアウ Sac5-pu+C)2016/10/09(日) 09:39:03.76ID:rlAqgPo1a
ほす
0006デフォルトの名無しさん (ワッチョイ 21dc-6leU)2016/10/09(日) 09:41:15.48ID:r1p0JkFt0
マニフェスト弄れば動くよ
基本的に100%の互換性があることになってるけど、デフォルトで動かないのは
ユーザーが勝手に4系で動かして万一重大障害発生でお前らがDOGEZAする羽目にならないように
ちゃんとテストしろよというMSの良心
0007デフォルトの名無しさん (ワッチョイ fc5e-lsIp)2016/10/09(日) 10:06:32.54ID:G17UML8q0
>>4>>6
これかな
https://msdn.microsoft.com/ja-jp/library/w4atty68%28v=VS.100%29.aspx
メモの
>useLegacyV2RuntimeActivationPolicy 属性を true に設定する必要があります
の部分がよくわからんけど
>>4
Windows8以降は4.0以降のランタイムしか入ってないからな
0008デフォルトの名無しさん (ワッチョイ 98d4-lsIp)2016/10/09(日) 16:48:44.58ID:XK4sDCWo0
前スレで、StringにAppendLineという拡張目そっと゛を追加したい云々の質問した者です
C#だと代替できるものないということで。

んで次なんですが、関数の中で Static してる変数があるんですけど、これはC#だとどうしますか。

Public Sub Hoge()
 Static First As Boolean = True

 If First Then
  First = False
  初期化っぽい処理
 End If
End Sub

関数の外に出すと他の関数から見えてしまうので
0009デフォルトの名無しさん (ワッチョイ ab49-LThL)2016/10/09(日) 17:03:09.61ID:rPrC2GUx0
>>8
同じクラスのprivateな変数にする。
外から見えるとかは関数単位ではなくクラス単位で考える。
同じクラス内の他の関数から見えるのは気にしない。
0010デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/09(日) 18:36:02.08ID:ciDgbIwP0
この★印の機能は何ですか?これもラムダ式?

class Program
{
static int i = 123;
static int j => i; // ★
static void Main(string[] args)
{
Console.WriteLine(j); // 123
i = 456;
Console.WriteLine(j); // 456

Console.ReadKey();
}
}
0011デフォルトの名無しさん (ワッチョイ 21dc-xaNP)2016/10/09(日) 18:43:54.99ID:r1p0JkFt0
>>10
expression bodied properties
C#6の新機能
0012デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/09(日) 19:55:16.81ID:ciDgbIwP0
なるほど
0013デフォルトの名無しさん (ワッチョイ 34c9-VEeh)2016/10/09(日) 20:12:19.64ID:SNsM+1tN0
getterだけなら使えるみたいな機能は入れなくていいよ
混じってるとみっともない
0014デフォルトの名無しさん (ワッチョイ 34c9-VEeh)2016/10/09(日) 20:17:23.67ID:SNsM+1tN0
みっともないって言葉は曖昧なので止める
getterだけのプロパティをexpression-bodiedで書いて
getterとsetterのプロパティを通常の記法で書いてると統一性に欠ける
0015デフォルトの名無しさん (ワッチョイ c3c0-lsIp)2016/10/09(日) 20:24:50.85ID:2uWzXVZF0
これはGetterだけでいいような
0016デフォルトの名無しさん (ワッチョイ 21dc-xaNP)2016/10/09(日) 20:26:06.97ID:r1p0JkFt0
イミュータブルなクラスを書きやすいようにするための機能だからそもそもsetなんか要らないんだよ
メソッドも式で書けるようになったからその意味では一貫性がある
正しいかどうかはともかく、C#は関数型へ進み続けている
それを受け入れられないならC#から脱落するしかない
0017デフォルトの名無しさん (ワッチョイ 353c-xaNP)2016/10/09(日) 20:34:20.60ID:ufk0aci50
>>16
いや、マルチパラダイムだろ
0018デフォルトの名無しさん (オッペケ Sr4d-/Z78)2016/10/09(日) 21:10:17.77ID:sqq+yTnGr
C#7.0では、setterでも書けるようになったりする。
0019デフォルトの名無しさん (ワッチョイ 353c-lsIp)2016/10/10(月) 00:16:17.24ID:LNPO30qQ0
while (true){
string text = Console.ReadLine();
//受け取った文字で処理
}

すごい久しぶりにC#やるのですが、
上記を呼び出したプログラムがいつの間にか不慮の事故で死んでいた場合、
自殺する方法があったような気がしたのですが、分からなくなりました。

これは他のexeファイルから呼び出されて標準入出力でやり取りします。
0020デフォルトの名無しさん (ワッチョイ 97dd-xaNP)2016/10/10(月) 05:15:45.69ID:ht+Pv9Q40
ハートビート飛ばして返事無ければブレイク
0021デフォルトの名無しさん (ワッチョイ 5b00-BQsb)2016/10/10(月) 07:04:48.42ID:ScYkQPFE0
>>19
https://msdn.microsoft.com/en-us/library/ms682409(VS.85).aspx

親プロセスに子プロセスをjob objectと登録しておくと、親が死んだ時に
子供をOSが自動的に殺してくれるそうです。
0022デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/10(月) 07:44:38.15ID:UXASE0xK0
親が殺し屋に自分が死んだら子を殺せと依頼するようなもの?
0023デフォルトの名無しさん (ワッチョイ c63c-xaNP)2016/10/10(月) 11:34:40.27ID:Rkc5P+nq0
>>19
> これは他のexeファイルから呼び出されて標準入出力でやり取りします。

パイプ使ってるってこと?
なら親が死んだら eof で ReadLine が null を返すんじゃね?
0024デフォルトの名無しさん (アウアウ Sa43-TInN)2016/10/10(月) 12:54:12.01ID:V7Z0NZf3a
UWPアプリでTextBlockにハイパーリンクを追加し、ClickイベントでそのURLを取得して色々処理したいのですが、
↓のxamlだとClick時にHyperlink_Clickは呼ばれるのですが、その後標準のブラウザで強制的に開かれてしまいます。
NavigateUriを消せば標準のブラウザで開かれることはないですが、URLを埋め込めません。
何かいい方法はないでしょうか。

<TextBlock>
<Hyperlink Click="Hyperlink_Click" NavigateUri="http://yahoo.co.jp";>ヤフー</Hyperlink>
</TextBlock>
0025デフォルトの名無しさん (ワッチョイ 353c-lsIp)2016/10/10(月) 18:45:27.25ID:LNPO30qQ0
>>23
そうなの?
今試せないんだけど、改行が来なくても大丈夫系?
0026デフォルトの名無しさん (ワッチョイ 353c-lsIp)2016/10/10(月) 20:37:17.51ID:LNPO30qQ0
>>23今仕事に区切りがついたんで試したけど駄目でした
0027デフォルトの名無しさん (ワッチョイ 7666-MJqz)2016/10/10(月) 21:40:27.98ID:/jPfSdO10
>>24
これでどや!

<Button Click="Button_Click">
  <TextBlock Foreground="Blue">
    <Underline>http://www.msn.com/ja-JP/<;/Underline>
  </TextBlock>
</Button>
0028デフォルトの名無しさん (ワッチョイ 7666-MJqz)2016/10/10(月) 21:41:18.62ID:/jPfSdO10
ちょっと違うか
0029デフォルトの名無しさん (ワッチョイ 21dc-+EyG)2016/10/10(月) 22:04:07.58ID:ly4XaJJN0
どうでもいいけどXAMLでUnderlineやらBorderやらタグで書くのってイケてないよなあ
やっぱりCSS的なレイヤは必要だった
0030デフォルトの名無しさん (ワッチョイ 353c-yd9a)2016/10/10(月) 22:15:45.81ID:uc840M750
えー

CSSが生まれたのって、
「HTMLは文書の意味や構造を定義付ける為の物であって、見た目を定義付ける為の物ではない」
的な思想があっての事でしょ

HTMLとXAMLとでは存在目的が違うんだから、いらねーっすよ
0031デフォルトの名無しさん (ワッチョイ 1030-VEeh)2016/10/10(月) 22:17:45.98ID:NThcQOle0
前景色はStyleで指定できるがUnderlineは駄目って言われるとハンパな感はある
0032デフォルトの名無しさん (ワッチョイ 1030-VEeh)2016/10/10(月) 22:20:54.95ID:NThcQOle0
いや嘘だ
Control.TextDecorationsがある
0033デフォルトの名無しさん (ワッチョイ c37b-jLml)2016/10/10(月) 23:34:54.76ID:MUAfL18F0
UWPだとe.Handledは使えないんだったっけ?
値を埋め込みたいだけならNavigateUriの代わりに添付プロパティ使うとか
0034デフォルトの名無しさん (アウアウ Sa43-TInN)2016/10/11(火) 11:19:41.87ID:n7KkGtdUa
>>33
添付プロパティでいけました、ありがとうございます
0035デフォルトの名無しさん (ワッチョイ 707b-lsIp)2016/10/11(火) 14:48:44.44ID:mnCEYNvQ0
本に付属してるサンプルでの質問で申し訳ないのですが、
Analyze()関数にあるwhile(sf[ppos] != 13)とif(sf[ppos] >= 32)の部分なんですが、
なぜ13と32で判断させてるのかわかりません。
本書のサンプルをうpしましたので、わかる方いましたら、教えていただけないでしょうか?。

http://www.dotup.org/uploda/www.dotup.org1031032.7z.html
0036デフォルトの名無しさん (ワッチョイ c3e2-IG4E)2016/10/11(火) 15:18:08.90ID:NhNhMU+W0
WIN32APIでキャッシュ取得してクッキーやらのファイル名を一覧にしたいのですが
1度目のFindFirstUrlCacheEntryでのメソッドではうまく取得できますが
FindNextUrlCacheEntryでのメソッドでは「C」としかでてきませんでした
どうすればnextで正常に取得できますか?

int firstCacheEntryInfoBufferSize = 0;
FindFirstUrlCacheEntry(null, IntPtr.Zero, ref firstCacheEntryInfoBufferSize);
IntPtr entryPtr = Marshal.AllocHGlobal(firstCacheEntryInfoBufferSize);
var handle = FindFirstUrlCacheEntry(null, entryPtr, ref firstCacheEntryInfoBufferSize);
INTERNET_CACHE_ENTRY_INFO result = (INTERNET_CACHE_ENTRY_INFO)Marshal.PtrToStructure(entryPtr, typeof(INTERNET_CACHE_ENTRY_INFO));
//正常にフルパスが表示
richTextBox1.Text = Marshal.PtrToStringAnsi(result.lpszLocalFileName);

FindNextUrlCacheEntry(handle, IntPtr.Zero, ref firstCacheEntryInfoBufferSize);
entryPtr = Marshal.AllocHGlobal(firstCacheEntryInfoBufferSize);
FindNextUrlCacheEntry(handle, entryPtr, ref firstCacheEntryInfoBufferSize);
result = (INTERNET_CACHE_ENTRY_INFO)Marshal.PtrToStructure(entryPtr, typeof(INTERNET_CACHE_ENTRY_INFO));
//Cとだけ表示される 
richTextBox1.Text += Marshal.PtrToStringAnsi(result.lpszLocalFileName);
0037デフォルトの名無しさん (ワッチョイ 9e4c-xaNP)2016/10/11(火) 16:25:38.21ID:lBkVHEla0
>>30
ちょっとちゃうな。
マークアップを管理する為、別層があった方がええよってだけなんじゃね
0038デフォルトの名無しさん (ワッチョイ d919-hgF0)2016/10/11(火) 17:06:07.06ID:yDjM8vhd0
>>35
sfがstringであることぐらいは質問文の中に欲しいなー
stringに対して [index] でアクセスするとchar型、つまりUTF-16の文字コードが取得できる
それぞれの文字コードが指す文字は
13: CR(=\r)つまり改行文字
32: (いわゆる半角の)空白文字
CRが見つかるまでループしてるのはコメント通り1行分を読み込んでるから
空白文字の方はちょっと特殊だけど、文字コード0〜31は制御コードって言う
「文字ならざるもの」を入れておく領域になっているんで、
つまり文字として有効かどうかをチェックしてる
0039デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/11(火) 17:36:19.27ID:5nhn+XnWa
マジックナンバー使うような人の書いた本って読む価値あるかねw
0040デフォルトの名無しさん (ワッチョイ d919-hgF0)2016/10/11(火) 17:47:59.14ID:yDjM8vhd0
>>36
pinvoke.netのDllImport定義使ってる?
なんでかFindFirstUrlCacheEntryだけEntryPoint書いてるけどなぜかそれが
FindFirstUrlCacheEntryAを明示してるからそっちはANSIでNextのほうはUnicode呼び出しになる
EntryPoint消して、stringへの変換はMarshal.PtrToStringAuto使うようにする

あとFindNextUrlCacheEntryは返値見て失敗したらMarshal.GetLastError呼び出し
バッファ不足か列挙終了か確認する必要がある

そもそも最初に呼び出したFindFirstUrlCacheEntryで得られたバッファサイズはFindNextUrlCacheEntryでさらに拡張される可能性があるし
もし拡張されたらまたFindFirstUrlCacheEntryから呼び出し直しだから
はじめっから65536とか適当に大きいバッファ確保しておいて
FindNextUrlCacheEntryに渡すbufferSizeは毎回入れ直しておいた方がいい
0041デフォルトの名無しさん (ブーイモ MMa8-pu+C)2016/10/11(火) 20:46:16.35ID:nLx97S41M
マジックナンバーやめろ定数にしろっていうけどオブジェクト指向でシンボリック定数使うのも大概だよな
0042デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/11(火) 21:06:54.61ID:k359FhBZa
>>41
オブジェクト指向関係あるの?w
0043デフォルトの名無しさん (ワッチョイ 353c-yd9a)2016/10/11(火) 21:27:18.88ID:oZVsanbB0
シンボリック定数使えなんて誰も言ってなくね?
(まあC#はマルチパラダイム言語だが)

改行文字を判別するならエスケープシーケンス使えよと思うし
制御文字を判別するならIsControl使えよと思う場面だな、>>35は
0044デフォルトの名無しさん (ワッチョイ c37b-jLml)2016/10/11(火) 22:06:20.93ID:iuxGk4et0
まあそもそも1行ずつ読むならTextReader使えという場面だな
0045デフォルトの名無しさん (ワッチョイ d273-lsIp)2016/10/11(火) 22:56:13.62ID:z6hY1vfh0
XMLの読み込み書き込みで質問なのですが

<?xml version="1.0" encoding="UTF-8"?>
-<Class1>
<id>100</id>
<name>List100</name>
-<Class1>

↑のようなXMLの場合は

public class SetTest
{
private string _id;
private string _List;

public string id
{
get { return _id; }
set { _id = value; }
}

public string List
{
get { return _List; }
set { _List = value; }
}
}
0046デフォルトの名無しさん (ワッチョイ d273-lsIp)2016/10/11(火) 22:59:05.10ID:z6hY1vfh0
>>45
// データ
SetTest settings = new SetTest();
settings.id = "idテスト";
settings.List = "Listテスト";

// ファイルに保存
XmlSerializer serializer = new XmlSerializer(typeof(SetTest));
// ファイルで書き出す
FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + "テスト.xml", FileMode.Create);
// XMLファイルに書き込む
serializer.Serialize(fs, settings);
fs.Close();

でいけると思うのですが
0047デフォルトの名無しさん (ワッチョイ d273-lsIp)2016/10/11(火) 22:59:36.45ID:z6hY1vfh0
>>46

↓のようなXMLの読み込み、書き込みはどうしたらやれますか?
-<Class1>
<title>ti</title>

-<items>
-<item>
<id>100</id>
<name>List100</name>
</item>
</items>

-<items>
-<item>
<id>101</id>
<name>List101</name>
</item>
</items>
</Class1>>>46
0048デフォルトの名無しさん (ワッチョイ 21dc-+EyG)2016/10/11(火) 23:43:53.68ID:aUckxkie0
手軽に読み書きしたいならSystem.Xml.Linq
0049デフォルトの名無しさん (ワッチョイ d273-lsIp)2016/10/12(水) 00:02:48.25ID:vhGHJWtL0
調べてみます。ありがとうございます。
0050デフォルトの名無しさん (ワッチョイ 707b-lsIp)2016/10/12(水) 12:22:41.59ID:rlMzapAH0
>>38
説明不足ですみませんでした。
やはり、13は改行コードなんですね。下のコメントに10と13は改行コードと書いてたので、これじゃないかと思ってたのですが・・。
でも、32は書いてなかったので、質問しないとわかりませんでしたが。
丁寧な解説で、馬鹿な自分でもよくわかりました。
レス&解説ありがとうございました。

>>39
.NETでゲームを作る本は3冊(どれも古い)しかなくて、自分的には貴重だと思うんですよね。
0051デフォルトの名無しさん (ワッチョイ 9ee1-xaNP)2016/10/12(水) 12:27:22.50ID:hi5pDFH90
>>50
Unity使えよ・・・
WinFormsとかWPFはものにもよるけどゲームには向いてないぞ
0052デフォルトの名無しさん (ワッチョイ ab0d-yd9a)2016/10/12(水) 15:37:01.20ID:dzycFkoT0
質問です。
入力されたパスワードをファイルに暗号化して保存するのですが、
暗号化に用いた鍵はどのように保存すればいいでしょうか?

C#は逆コンパイルが簡単なので、単にプログラムの中に埋め込むだけでは危険だと想います。
インターネットに繋がっていなくても実行可能なよい方法を教えてください。
0053デフォルトの名無しさん (ワッチョイ d919-hgF0)2016/10/12(水) 15:55:30.36ID:ZPnQqXwN0
ローカルに置く限りはどうとでもなる
安全な置き場所なんて無いからプログラム埋め込みでも別にいいよ
0054デフォルトの名無しさん (スフッ Sda8-xaNP)2016/10/12(水) 16:41:55.83ID:DOlHpAMed
>>52
プログラム埋め込みしたうえでアセンブリ難読化でいいんじゃないですか
0055デフォルトの名無しさん (ワッチョイ 21dc-xaNP)2016/10/12(水) 16:57:13.83ID:9oDwxE2X0
アプリ自体にパスワード認証を入れるってこと?
それならパスワードは例え暗号化された形であっても一切保管しないのがセオリー
疑似コードで説明するとこんな感じ
void パスワード設定(パスワード) {
ファイルに保存("認証情報.txt", ハッシュ関数(パスワード))
}
bool パスワード認証(パスワード) {
return ハッシュ関数(パスワード) == ファイル読込("認証情報.txt"))
}
ハッシュ関数はSHA256あたり使えばいい
こうするとHDDの内容が流出しようがパスワードが漏れることはない
さらに辞書攻撃対策として、パスワードに適当に決まった文字列(ソルト)を付加してやるとより強固になる
0056デフォルトの名無しさん (ワッチョイ 0dd9-VEeh)2016/10/12(水) 16:59:10.98ID:McueY18J0
chromeは、今もそうかは知らないが
パスワードを平文で保存してたよ

曰わく、わざわざ暗号化して保存することで無知なユーザーに偽りの安心感を与えるのは却って害だ
とのこと
0057デフォルトの名無しさん (ワッチョイ 353c-yd9a)2016/10/12(水) 17:08:00.81ID:ENho6ZSf0
>ローカルに置く限りはどうとでもなる
まーこれだね

スタンドアロンで動作させるのが要件なら
鍵を複数に分割してバラバラの場所に埋め込むとかで、復号を面倒にするくらいが関の山じゃないか
0058デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/12(水) 17:13:10.57ID:istexQmRa
パスワード保存するってことは結局第三者であってもそのプログラムを経由したら
パスワードを知ってるのと同じことになるってことだから、よく考えればそれならそもそも別に
平文で保存したって大差ないような気もする。

まあそうは言っても体面もあるから、言い訳程度に暗号化しとけば十分なのでは
0059デフォルトの名無しさん (ワッチョイ ab0d-yd9a)2016/10/12(水) 17:47:32.16ID:dzycFkoT0
みなさんありがとうございます
すべて参考にさせて頂き熟考します
0060デフォルトの名無しさん (ワッチョイ ab49-LThL)2016/10/12(水) 18:49:52.25ID:BdIUeyBr0
っキーコンテナ
0061デフォルトの名無しさん (ワッチョイ fc42-lsIp)2016/10/12(水) 18:51:17.74ID:S29qi1Dw0
Win10 のエクスプローラでひとつの jpg ファイルを選択して開きたいのですが
初めて開くフォルダでは選択されません (png なんかもなるようです)
こちらと同じ
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&;namber=33133&no=0

上のリンクでは SHOpenFolderAndSelectItems で解決とあるものの
jpg が 1 万枚とか大量にあるとやはり初回は選択されません
初回のもたつきが選択の処理を阻害している感じです

二度実行すれば大丈夫なようですがもっとスマートな策はないものでしょうか
良い方法を教えてください
0062デフォルトの名無しさん (ワッチョイ c37b-jLml)2016/10/12(水) 19:12:24.70ID:XzbrdxqH0
Process.Startで関連づけで開いたら駄目?
006361 (ワッチョイ fc42-lsIp)2016/10/12(水) 20:24:14.25ID:S29qi1Dw0
>>62
ありがとうございます
関連づけ、というのがよくわかりませんが当方の環境でそのまま指定すると
jpg のビューアとクイックアクセスでエクスプローラが起動します
もし可能であっても関連付けなど環境を変えることはできないですねスミマセン
何か勘違いしていましたらご指摘ください

ちなみに Process.Start("explorer.exe", "/select,***") だとまったくダメで
(C# からでなく直接コマンド打っても同じです)
SHOpenFolderAndSelectItems だとマシになるといった感じです
0064デフォルトの名無しさん (ワッチョイ c37b-jLml)2016/10/12(水) 20:28:54.30ID:XzbrdxqH0
Process.Start("hoge.jpg");
ってやることなんだけど
0065デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/12(水) 21:01:48.75ID:istexQmRa
VBScriptだと、既に開いてるExploreのウィンドウを捕まえて
操作できるみたいだから、同じことがC#でも出来れば必要なら何度か
リトライできそうだけど、どうやるんだろうねえ。
http://www.tek-tips.com/viewthread.cfm?qid=1759903
0066デフォルトの名無しさん (ワッチョイ 5c7b-pu+C)2016/10/12(水) 21:18:27.66ID:8upkYudZ0
>上のリンクでは SHOpenFolderAndSelectItems で解決とあるものの
よくある「ファイルの場所をエクスプローラで開く」ってこと?

そのdobonの記事内にある
http://stackoverflow.com/questions/3018002/c-how-to-use-shopenfolderandselectitems
のコード使ってファイル6000個程度で試したけど手元の環境ではもたついても最終的には正確に選択されたが
フォルダまたいでも選択されることに驚いた
0067デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/12(水) 21:41:21.77ID:y0Sdxi7M0
Func<int> func = () => 3;
var i = func.Invoke();

このInvokeとは何ぞや?
動き的にはfuncを実行してるんだなってわかるけど。
Invokeを右クリックして定義に移動しても出てこないし。
0068デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/12(水) 21:52:34.16ID:istexQmRa
>>67
https://msdn.microsoft.com/ja-jp/library/system.delegate.aspx
0069デフォルトの名無しさん (アウアウ Sac5-xaNP)2016/10/12(水) 21:58:33.95ID:5VjkdN+Ga
書いてる通りSystem.Delegateのメンバで、ただ実行するだけのメソッド
0070デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/12(水) 22:18:37.21ID:y0Sdxi7M0
DynamicInvokeメソッドはあるけどInvokeメソッドがないよ?
0071デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/12(水) 22:20:42.72ID:istexQmRa
>>70
だから>>68にちゃんと説明があるよ
0072デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/12(水) 22:23:02.23ID:y0Sdxi7M0
これ?意味不明。
>共通言語ランタイムが提供する Invoke デリゲートと同じシグネチャを持つ各デリゲート型の方法です。
>コンパイラは、それを自動的に呼び出すために、このメソッドは、c#、Visual Basic または Visual C から明示的に呼び出す必要はありません。
>Invoke メソッドは リフレクション 、デリゲートのシグネチャを検索する場合。
0073デフォルトの名無しさん (ワッチョイ 21dc-+EyG)2016/10/12(水) 22:23:25.00ID:9oDwxE2X0
InvokeはSystem.Delegateクラスではなく「デリゲート型」に定義されている
デリゲート型っていうのは delegate T Func<T>(); のようにdelegateキーワードで定義される型のことね
で、通常のデリゲート呼び出しの構文 func() は func.Invoke() のシンタックスシュガー
0074デフォルトの名無しさん (ワッチョイ 7694-MJqz)2016/10/12(水) 22:27:44.44ID:y0Sdxi7M0
なるほど
0075デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/12(水) 22:31:04.83ID:istexQmRa
>>72
機械翻訳が意味不明だから、古いバージョンのドキュメントを読んだ方がいいかもね
0076デフォルトの名無しさん (アウアウ Sa76-juU9)2016/10/12(水) 22:32:26.53ID:istexQmRa
>>73
おいおい本当かよそれw
0077デフォルトの名無しさん (ワッチョイ d91e-xaNP)2016/10/12(水) 22:52:16.65ID:x6Yo9Mwa0
一応張っておくぜ
http://stackoverflow.com/questions/16309286/funct-vs-funct-invoke
0078デフォルトの名無しさん (ワッチョイ f93a-xaNP)2016/10/12(水) 23:07:59.70ID:GJ+oagFT0
null条件演算子が出来てから、Invoke()の出番が増えたなぁ
0079デフォルトの名無しさん (アウアウ Sac5-xaNP)2016/10/12(水) 23:44:05.17ID:44xB4wBga
ほんとに最近C#の勉強始めた者です。
Visual Studioの使い方がよくわからなくて……「新しいプロジェクト」から「空のプロジェクト」で、プログラムを書くのが良かったのですが、いつの間にかこの項目が消えて選べなくなりました。他はアプリを作るようなモードなので使いづらいです。。どうしてですか?
0080デフォルトの名無しさん (ワッチョイ 877b-nzJn)2016/10/13(木) 00:52:36.58ID:aniHJH6t0
そもそも、空のプロジェクトの意味がわからない

画面を持つなら、Form だし、ライブラリを作るなら、DLL だろ。
それ以外にあるのか?
0081デフォルトの名無しさん (スフッ Sd4f-Oa01)2016/10/13(木) 01:42:20.09ID:HIdK+zqJd
>>80
Visual C++のところに空のプロジェクトがあるだろ
0082デフォルトの名無しさん (ワッチョイ 1b9f-c7dp)2016/10/13(木) 03:33:19.33ID:eeNekR2j0
左のインストール済み→テンプレート→Visual C#→Windowsデスクトップの中
0083デフォルトの名無しさん (ワッチョイ 8331-8qPS)2016/10/13(木) 05:13:31.24ID:XSmxsz+k0
デスクトップアプリなんですが、
プログラム起動時にユーザーログインとテキストファイルの読み込みを行っています
で、それらの情報をいつでもアクセス出来るようStaticクラスに持たせているのですが
このような方法は特に問題ないでしょうか?
もっといい方法や推奨される方法があれば教えてください
0084デフォルトの名無しさん (ブーイモ MM4f-DI90)2016/10/13(木) 07:46:56.79ID:d/dyHEl/M
そういう作りは依存関係が暗黙化されてわかりにくくなるよ
そのクラスをインスタンスにして必要なクラスのコンストラクタで渡せばいい
0085デフォルトの名無しさん (ワッチョイ bbdc-Oa01)2016/10/13(木) 08:06:32.92ID:U+TNkLbY0
別のクラスの処理がテキストファイル内のパラメータに依存してたりすると、
単体テストのときテストケースの数だけいちいちファイル用意しないといけなくて面倒
>>84のように外から渡した上でインターフェイス経由でアクセスするのが理想
インスタンスをシングルトンで保持しておくのは構わないけど、それに直接アクセスしていいのは呼び出し階層の一番上だけ
他は常にコンストラクタかプロパティで渡す
面倒ならDIコンテナを使ってシングルインスタンスを注入する手もある
0086デフォルトの名無しさん (ドコグロ MM97-Oa01)2016/10/13(木) 08:43:31.40ID:CLiojDhVM
>>83
ごく少数
かつ
それが色々な場所で使われる
なら
ありだと思う

>>84-85 みたいな頭でっかちの一見正論は常に役に立つ訳じゃないから無視していい
008761 (ワッチョイ 8742-8qPS)2016/10/13(木) 10:18:41.87ID:T2aLctg20
皆様ありがとうございます


>>64
jpg に対するビューアで表示されますので難しいのかなと
>>62 で「ビューアとクイックアクセスでエクスプローラが」と言いましたがビューアだけでした


>>65
リンク先のスクリプト当方ではなぜかうまく動きませんね
今のところこれを C# で実現する技量も持ってないです
表示させたエクスプローラを操作してというアプローチも検討していましたが
素人にはキツそうで他の安易な手法を模索中です


>>66
確かに 6,000 であれば選択しますね!これは知りませんでした
しかし 10,000 になると当方の環境ではほぼ選択されません

これまで single item のコードを元に実行していましたが
複数可のほうのコードで同じファイル名を重複して指定すると
10,000 であれば選択されることが分かりました
ただ 20,000 などもっと増えるとダメなようです

二重実行だと 20,000 でも選択されるのでやはりこれで手を打つべき?
0088デフォルトの名無しさん (アウアウ Saff-+9sP)2016/10/13(木) 11:10:13.49ID:D/S7S9qga
>>83
本当に共通の情報を複数から参照する必要があるのであればそれを一つのクラスにまとめてもいいけど、
単に永続化が必要な情報であるという理由だけで一つにまとめている(各々そのクラスにアクセスするのは
共通の情報ではなくそれぞれ別の情報)のであれば明らかに間違ってるな。

明確に理由は説明できないけど、staticなインスタンスではなくstaticクラスを使うのも
個人的にはちょっと違う気がする。
0089デフォルトの名無しさん (ワッチョイ d77b-8qPS)2016/10/13(木) 12:55:57.73ID:QpGu+ou60
>>51
.NETで基礎を磨きたくて、ゲーム作りならモチベも下がらずにやれるかなと思ってこの本にしたんです。
参考書も購入済みなので、本格的なゲームを作る時はUnityを使いますよ。
0090デフォルトの名無しさん (ワッチョイ d77b-8qPS)2016/10/13(木) 13:09:35.62ID:QpGu+ou60
>>79
Blend for visualstudioを選んでませんか?
これだと空のプロジェクトの項目はないので、visualstudio20xx(xxは自分がDLしたバージョン)を起動してください。
visualstudio20xxを起動させているなら、新規作成 > プロジェクト > visualC# > Windows > クラシックデスクトップにすれば出てきますよ。
0091デフォルトの名無しさん (アウアウ Sa97-Oa01)2016/10/13(木) 13:44:34.25ID:OsInCkTea
>>90
いろいろ調べて、Express for Desktopというのをインストールしたところうまくいきました。ありがとうございます。
0092デフォルトの名無しさん (ワッチョイ 877b-8qPS)2016/10/13(木) 16:59:59.60ID:Yv6P+Iys0
正規表現使ってファイルパスの一部を置き換え(消去)したいんですが、
パターンを書いてみたのですが、うまくいきませんでした

"C:\Users\PCname\test\file.xlsx"

このファイルパスを表す文字列のfile.xlsx部分だけを消去したいです
0093デフォルトの名無しさん (スプッッ Sdcf-Oa01)2016/10/13(木) 17:10:05.54ID:mZgNLhHCd
>>92
正規表現にこだわらないなら、Pathクラス使った方が簡単じゃないか?

Path.GetDirectoryName メソッド
https://msdn.microsoft.com/ja-jp/library/system.io.path.getdirectoryname.aspx
0094デフォルトの名無しさん (ワッチョイ 877b-8qPS)2016/10/13(木) 17:17:53.92ID:Yv6P+Iys0
>>93
こんな便利なメソッドがあったんですね
回答ありがとうございました、無事にできました。
0095デフォルトの名無しさん (ブーイモ MM4f-DI90)2016/10/13(木) 20:02:29.09ID:HwCkNWajM
>>86
またまたご冗談を
いろいろな場所で使われる静的なインフラクラスとかただの悪夢じゃないですか
0096デフォルトの名無しさん (スフッ Sd4f-Oa01)2016/10/13(木) 23:29:34.82ID:tcMW2ABkd
>>86
賛成です
0097デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/14(金) 11:32:00.91ID:5Y7KbdSJr
wpf使わなくてもVisualStudioやPhotoshopみたいなブラック基調のFormデザインって作れる?
0098デフォルトの名無しさん (ワッチョイ bbdc-Oa01)2016/10/14(金) 11:46:46.23ID:xv7XrH2t0
簡単にというなら不可能
そもそもWPFやWebブラウザは何もないところにGUI部品っぽいものを独自に描画してるわけで、
WPFやElectronで作る場合の100倍の工数かけてそれと同じようにスクラッチすれば可能
0099デフォルトの名無しさん (ワッチョイ 4f4c-Oa01)2016/10/14(金) 12:10:54.76ID:SyTitZMd0
Designing XAML in Visual Studioからみてけば
0100デフォルトの名無しさん (ワッチョイ 9f23-8qPS)2016/10/14(金) 13:39:00.09ID:D2RLd37K0
>>98
たしかに面倒だが、100倍も掛かるわけでもないよ
部品をフラットにして、スライダーみたいな複雑なのを諦めるとか
工夫次第でなんとかなる
0101デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/14(金) 14:05:32.92ID:5Y7KbdSJr
ありがと!
面倒だからやめた
0102デフォルトの名無しさん (ラクラッペ MMf7-8qPS)2016/10/14(金) 16:58:20.50ID:WrhxhBRqM
dataSetの最大行数や最大列数なら取得できるのですが、指定した行の列数を取得する方法がわかりません。
どう書けば指定した行の列数を取得できるようになるでしょうか?。

最大行数の取得
dataSet.Tables["DataTable"].Rows.Count;

最大列数の取得
dataSet.Tables["DataTable"].Columns.Count;
0103デフォルトの名無しさん (ワッチョイ bb94-NvRm)2016/10/14(金) 18:29:38.87ID:xiSagSQl0
列数って行ごとに違ったりする?
0104デフォルトの名無しさん (ラクラッペ MMf7-XnCm)2016/10/14(金) 20:28:29.33ID:O8TwfpESM
はい。行ごとに列数は変わります。
例えば、0行目は1列しかなくて、1行目は5列あり、2行目は3列しかなかったりします。
ちなみに、列の最大数より少ない行の列(使われてない列)には、空欄になってます。(dataGridViewやxmlファイルで見ると)
0105デフォルトの名無しさん (ワッチョイ 83c0-8qPS)2016/10/14(金) 20:35:37.38ID:XcyjZEXI0
>>104
それ値にnullが入っているだけで列そのものは存在しているよ
0106デフォルトの名無しさん (ラクラッペ MMf7-XnCm)2016/10/14(金) 20:55:06.25ID:O8TwfpESM
ということは、最大数と同じですか・・・。
行の列数ごとに処理をしたかったのですが、別の方法を考えたほうがよさそうですね。
レスありがとうございました。
0107デフォルトの名無しさん (ワッチョイ 83c0-8qPS)2016/10/14(金) 22:05:45.82ID:XcyjZEXI0
>>106
i行目のnull以外が入っている列の数が欲しいってのなら
dataSet.Tables["DataTable"].Rows[i].ItemArrayで行の値取得してから、ループ回してnull以外の数を数える方法もあるけど
行の列数毎に処理をするという時点で何か違う気もするけど
0108デフォルトの名無しさん (ワッチョイ 2349-ciRE)2016/10/14(金) 22:15:24.28ID:naHK2HuB0
>>107
やってることは変わらないけど、LINQですっきり。
dataSet.Tables["DataTable"].Rows[i].ItemArray.Count( x => x != null );
0109デフォルトの名無しさん (ラクラッペ MMf7-XnCm)2016/10/14(金) 22:16:02.67ID:O8TwfpESM
>>107
なるほど、そんな手もあるんですか。
処理といっても難しいものではなく、○行目の○列目が空なら次の行へいくというような処理です。
それを最後の行までやる単純な処理です。
0110デフォルトの名無しさん (ワッチョイ 877b-8qPS)2016/10/15(土) 03:32:09.91ID:zqId9pk40
c#を勉強中なのですが、WEBサイトにログインし、そのクッキーを取得する部分で躓いてしまいました。
語学も勉強中ですので、ja.forvo.comにアクセスするツールを勉強がてらに作ってみようと思ったのですが、
アクセスパラメタはlogin passeordの2種類しかないように見えるのですが、どこが間違っているかわかりません。

ContentLength>0 または SendChunked==true を設定する場合には要求本体を指定する必要があります。
と出てくるので、パラメタ関連だと思うのですが、どこか見落としているんでしょうか?

https://dotnetfiddle.net/s5RJok
0111デフォルトの名無しさん (ワッチョイ 1b9f-c7dp)2016/10/15(土) 04:14:59.65ID:Rly0bTEF0
>>110
GetResponseする前ににパラメータを送信してない
using (Stream requestStream = Request.GetRequestStream()) {
requestStream.Write(data, 0, data.Length);
}
0112デフォルトの名無しさん (ワッチョイ 877b-8qPS)2016/10/15(土) 04:24:50.76ID:zqId9pk40
>>111
本当ですね、なんという凡ミス・・・
POSTを実行し忘れていました
回答ありがとうございました、無事にできました。
0113デフォルトの名無しさん (ワッチョイ 8b3c-8qPS)2016/10/15(土) 07:58:43.10ID:aLbial8Z0
言語面は大変でも構わないがGUIが楽に出来る事、
windowsでさえ動けばそれで良い、
コンパイラは無料であること、
言語の情報収集が書籍に頼らずとも、検索したら日本語でいっぱい出てくること。

って条件を提示したらC#って言われたんだよね。
ここまで合ってる?


で、ちょっとやってみたんだけど、CUIはすぐに満足行く程度に出来ました。(ハノイの塔や乱数生成など)。
でもウィンドウの表示とか描画はかなり意味が良く分かりませんでした。
GUIは楽ではないのでしょうか?
あと、検索方法やサイトがよく分かりませんでしたので、GUIを学ぶのに良さそうなサイト教えてください。
ちなみにCやC++やRubyはできますが、GUIは一度もやったことありません。
0114デフォルトの名無しさん (ワッチョイ bbdc-Oa01)2016/10/15(土) 09:25:22.99ID:k370RUkX0
そりゃお前がGUIに慣れてないだけだろ
C#のGUIフレームワークはVB.NETと共通
頭の弱いVBer連中にできてお前にできないなんてありえないから安心しろ
0115デフォルトの名無しさん (ブーイモ MMf7-DI90)2016/10/15(土) 10:07:17.04ID:4a8N/lhaM
>>113
デザイナ開いてコントロール並べてイベントハンドラにやりたい処理を書くだけ
0116デフォルトの名無しさん (ワッチョイ 8742-b88/)2016/10/15(土) 10:56:08.68ID:Ep2P5HuE0
>>113
>って条件を提示したらC#って言われたんだよね。
>ここまで合ってる?

合ってる

CUIよりGUIのほうが複雑だからGUI初心者にとって難しく楽ではないのは仕方ない
それでもC#はGUIの作業がかなり簡単になってる
頑張って覚えるしかない。”C# GUI”でググれば色々出てくるからそこから選べばいいんじゃないかな
0117デフォルトの名無しさん (アウアウ Saff-+9sP)2016/10/15(土) 13:07:47.01ID:VsUz8hA6a
考えてみたら、WPFはともかくWindows Formも意外と
web上にはまとまったチュートリアルなかった気がするね。
どうやって覚えたんだったかな。

まあWindows Formなら触ってるうちにだんだん分かるとは思う。
GDI+は本格的にやるなら古いペゾルドの本でも買った方がいいかもしれない
0118デフォルトの名無しさん (ワッチョイ 4b79-8qPS)2016/10/15(土) 15:39:03.38ID:keBjPhCw0
HTMLが分かるならWPFの方が良い
FormはGUIで組み立てていけるから楽だけど
0119デフォルトの名無しさん (ワッチョイ 877b-nzJn)2016/10/15(土) 15:41:04.11ID:CMu4YX8d0
ボタンなどのコントロールを並べるだけなら、HTMLのformと同じだろ

線・円・四角形などを描画するなら、HTML5のCanvas 相当の知識がいる
0120デフォルトの名無しさん (ワッチョイ 875e-8qPS)2016/10/15(土) 15:55:54.34ID:Y5UYqbC90
>>113
http://dobon.net/vb/dotnet/index.html
http://www.atmarkit.co.jp/ait/subtop/dotnet/
WinFormsならデザイナに適当に並べてイベントをクリックしたらイベントハンドラ自動で配置されるんだからチュートリアルとかいらない気もする
0121113 (ワッチョイ 233c-8qPS)2016/10/15(土) 17:38:54.02ID:gUMRUJva0
みなさんありがとう。
GUIの実現方法にもいろいろあるようで。(?)

まぁよく分かってないのですが、しばらく頑張ってみます。
0122デフォルトの名無しさん (ブーイモ MMf7-DI90)2016/10/15(土) 17:43:06.42ID:pMgLYSqAM
>>120
悩むところなんてないのにね
素人の新人でも1日あればBMI計算画面程度のものは作れるようになる
0123113 (ワッチョイ 233c-8qPS)2016/10/15(土) 17:45:41.99ID:gUMRUJva0
悩んでると言うよりGUIの仕組み自体が良く分からないって感じ
ようするに全部分からん。
0124デフォルトの名無しさん (ワッチョイ ff02-GF32)2016/10/15(土) 18:36:15.94ID:i1h9IwSg0
とりあえず、WindowsFormsとWPFとの大きな二つのやり方がある事を理解する必要がある
0125デフォルトの名無しさん (ワッチョイ 67ce-dAUv)2016/10/15(土) 18:44:07.15ID:6v+uOgk10
WindowsのGUIはWebや質問で集めた断片的な情報だけじゃVB使いにも劣る半端な物しか作れない
C#や.NETについてはペゾルド本とか定番の書籍とか沢山あるから通読を薦める
0126デフォルトの名無しさん (オッペケ Srd7-310H)2016/10/15(土) 19:34:08.33ID:UDl7k1b2r
>>120
WPFでも、それと同じ作り方出来るよん。
メリットがあまり無いから、その方法でやる人がいないだけで。
0127デフォルトの名無しさん (ワッチョイ 83c0-Lzu8)2016/10/15(土) 19:48:29.68ID:0Lh6WVUg0
>>126
バインディング考えるとWPFの方が楽でいいけど、ListViewの罫線引くのにも一苦労なのがな
0128デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/15(土) 21:45:59.61ID:auQgHyKEr
今のwinformってdpi変えてもレイアウト崩れないの?
0129デフォルトの名無しさん (ワッチョイ bbdc-x3Zw)2016/10/15(土) 23:01:02.76ID:k370RUkX0
今のも糞もWinFormsは2.0を最後に一切更新されてないよ
0130デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/15(土) 23:13:33.54ID:auQgHyKEr
そーなんだ
てことはコントロール並べただけだとdpi変えたら崩れるのか
みんなどう対処してるの?
0131デフォルトの名無しさん (ワッチョイ 837b-n555)2016/10/15(土) 23:14:29.34ID:Q3fCLt+y0
一応4でChartが導入されたよ(小声
外部ライブラリ取り込んだだけだけど
0132デフォルトの名無しさん (ワッチョイ 2349-ciRE)2016/10/15(土) 23:25:23.56ID:vyO0bokn0
>>129-130
コントロール毎だけど、高DPI対応されてるぞ。(要app.config編集)
EnableWindowsFormsHighDpiAutoResizingとかで調べると出てくる。
0133デフォルトの名無しさん (ワッチョイ 6f66-8qPS)2016/10/16(日) 17:31:11.11ID:SS2oz+Dc0
DataGridにバインドした場合通常
[日付][出荷][入荷][在庫]
[10/1][1000][ 0][ 0]

とバインドされますが、これをそのまま
日付 10/1|10/2|10/3|…
出荷 1000| 0| 1000|…
入荷  0|1000| 0|…
在庫  0|1000| 0|…
と横向きに表示したいのですが方法がわかりりません。

何か良い方法があれば教えてください。
0134デフォルトの名無しさん (ワッチョイ 3bcb-Oa01)2016/10/16(日) 19:05:12.86ID:+xc9QiVj0
Datagrid 行と列 入れ替え
ってググって出なかったら俺ならあきらめる
0135デフォルトの名無しさん (ワッチョイ 877b-8qPS)2016/10/17(月) 11:43:58.15ID:t0+3o69f0
Aというクラスの変数をBというクラスで変更したいのですが、
グローバル変数って極力使わないほうがいいんですよね?
その場合、どうやって変更すればいいんでしょうか?
0136デフォルトの名無しさん (アウアウ Sa97-DI90)2016/10/17(月) 12:30:24.66ID:0QqIT/eXa
アクセサで変更する
0137デフォルトの名無しさん (ワッチョイ 834f-dAUv)2016/10/17(月) 16:57:58.75ID:ka6apGFK0
>>133
「C# list 行 列 入れ替え」でググると、いくつか出て来るな
DataGridViewだと出来ないっぽいので、文字列配列でやるしか無さそう
0138デフォルトの名無しさん (ドコグロ MM37-Oa01)2016/10/17(月) 19:17:50.46ID:XnOIml5dM
ちゅーかrowヘッダーでええんでは?
0139デフォルトの名無しさん (ワッチョイ bbdc-x3Zw)2016/10/17(月) 21:43:52.24ID:8eStTtOD0
>>135
そもそも本当に外から変更する必要があるのかよく考えた方がいい
安易にプロパティ(アクセサ)を使うのはお勧めしない
Aの内部に深く依存した処理ならそれはA自身のインスタンスメソッドにするのが自然
0140デフォルトの名無しさん (オッペケ Srd7-310H)2016/10/17(月) 22:08:48.29ID:J1512ejnr
>>135
普通はBにdelegateを持たせてAがRegister
0141デフォルトの名無しさん (ワッチョイ 9f23-8qPS)2016/10/18(火) 00:15:54.00ID:5HYuZfg90
BがAを生成するなら特別問題となることはないが、それ以外の場合だと一筋縄ではいかんよね
static classよりprism.unityのようなDIコンテナを検討すると良いかもしれん
0142デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/18(火) 01:07:54.24ID:z7NEdDzIr
作ったアプリのインストーラーって自分で作るの?
0143デフォルトの名無しさん (ワッチョイ 877b-8qPS)2016/10/18(火) 01:27:03.65ID:GSTk/GYq0
>>136
こういう方法があったんですね、無事にできました。
ありがとうございました。

>>139
なぜプロパティを使わないほうがいいのでしょうか?

>>140
delegateを使う方法も調べて勉強してみます、ありがとうございました。
0144デフォルトの名無しさん (アウアウ Saff-+9sP)2016/10/18(火) 01:50:59.73ID:ZWaQacsZa
>>143
>>139は別にプロパティを使うなとは言ってないと思うよ

>>135みたいな質問をするレベルの初心者は、本来そのクラスの外部からアクセスさせる必要がない
値まで外部に対して公開してしまいがち。

だからBからAの値を変更したいがどうしたら...以前に、そもそも本当にBからAの値を
変更する必要があるのか、まずそれを再考した方がいいと言ってるだけ恐らく。
0145デフォルトの名無しさん (スププ Sd4f-Oa01)2016/10/18(火) 02:23:54.86ID:yFGfvYQ8d
>>142
外注に出してもいいよ
0146デフォルトの名無しさん (フォォーッ MM47-8qPS)2016/10/18(火) 17:04:32.16ID:FLRDVYGCM
DataTable.Select メソッドですが、条件に変数やtextBox.Textを入れて判定させることはできないのでしょうか?
もし、できるのであれば、やり方を教えていただけないでしょうか。
0147デフォルトの名無しさん (ワッチョイ 7bd6-8qPS)2016/10/18(火) 19:22:23.19ID:t0O03s4a0
var hoge = dt.Select("id = " + textBox.Text);
じゃあかんの?
0148デフォルトの名無しさん (オイコラミネオ MM2f-tncL)2016/10/18(火) 19:42:09.04ID:kZJdOEPWM
式を文字列で作ったらいいんじゃないかな
0149デフォルトの名無しさん (ワッチョイ 9f23-8qPS)2016/10/18(火) 21:32:22.49ID:5HYuZfg90
幾らなんでもSQLインジェクション対策ぐらい考えて作るものでしょ
0150デフォルトの名無しさん (ワッチョイ 2349-ciRE)2016/10/19(水) 00:35:49.06ID:D3jR0Y/10
使えるなら、LINQ to DataSet使った方が楽
0151デフォルトの名無しさん (アウアウ Sa3f-Oa01)2016/10/19(水) 12:21:20.79ID:uDAkjBGca
アプリの組み込みDBでsqliteを使っているが、別のアプリからそのDBに接続するのは可能?
0152デフォルトの名無しさん (ワッチョイ 9b19-K4Kb)2016/10/19(水) 13:14:54.61ID:az2iZHKt0
DBファイルにアクセスさえできるならもちろん
個人的にFirefoxの履歴とか他の自作ツールで見てる
0153デフォルトの名無しさん (ワッチョイ fbeb-pg89)2016/10/19(水) 16:14:49.10ID:lVxjSt550
DataGridViewを使ってアプリケーションを作成していますが、
行を追加していくと当然メモリを消費しますが、
行を削除してもメモリが解放されません。
(RemoveAt、Clearなどで削除)

頻繁に行を追加したり削除するプログラムを作成していまして、
そのうちメモリが上限になってしまうのですが、
行を削除したときにメモリを解放するには
どのようにすればよいのでしょうか。
(VS2012です)
0154デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/19(水) 16:23:08.57ID:sakBD/O3r
c#は勝手にメモリ解放するから気にしなくていいんじゃない?
0155デフォルトの名無しさん (ワッチョイ fbeb-pg89)2016/10/19(水) 16:33:39.48ID:lVxjSt550
>>154
レスありがとうございます。
私もその認識でいたのですが、
使用メモリが搭載上限(4G)まで行っても解放されないので、
(ガベージコレクタメソッドを使っても)
困っています。
0156デフォルトの名無しさん (ブーイモ MM4f-DI90)2016/10/19(水) 17:24:56.64ID:arYWyhLnM
メモリダンプして解析ツールに投げてインスタンス掴んでる犯人を特定して適当に対処すればいいよ
0157デフォルトの名無しさん (ワッチョイ 834f-dAUv)2016/10/19(水) 17:34:39.90ID:4Wr5Akus0
どれだけデカいデータを入れてるんだろ?
全然違うとこでメモリを溜め込んでいるのかもしれんし
0158デフォルトの名無しさん (ワッチョイ 1b9f-c7dp)2016/10/19(水) 19:10:01.37ID:JZ054bhP0
めんどくさいけどVirtualMode使った方がいいかもね
0159デフォルトの名無しさん (ワッチョイ 875e-8qPS)2016/10/19(水) 19:51:08.60ID:8L2TKUho0
DataGridViewに大きなデータを読み込む
→Rows.Clear()とColumns.Clear()とGC.Collect()する
→メモリの消費量変化せず
次に別の小さいデータを読み込む
→Rows.Clear()とColumns.Clear()とGC.Collect()する
→メモリの消費量が減る

どういう仕組みになっているんだろうなw
BitmapとかだとDispose()してnull入れてGC.Collect()するとすぐに反映されるんだが
DatagridViewにnull入れれないしな
見かけ上変わってないだけで実際には他に影響しない可能性もあるし
0160デフォルトの名無しさん (オッペケ Srd7-Oa01)2016/10/19(水) 21:18:49.28ID:sakBD/O3r
>>159
大きなデータってなに?
0161133 (ワッチョイ 3e66-9S67)2016/10/20(木) 06:52:10.99ID:kVktOnSP0
>>134
>>137
諦めてTextBoxを並べてそれっぽく見えるようにしました。

返信ありがとうございました。
0162デフォルトの名無しさん (フォォーッ MM5f-DrBp)2016/10/20(木) 14:42:52.91ID:j15LCTLjM
>>147
その方法でできました。
ありがとうございました。
>>148
そのまま記述すると、列で判定されたりしてわからなかったんですよー。

>>150
そのやり方のほうが、処理が早いみたいですね!。
ちょっと勉強したいと思います。



回答してくださった方、ありがとうございました。
0163デフォルトの名無しさん (ワッチョイ 8e94-aczQ)2016/10/21(金) 06:03:28.62ID:UXfZS+K/0
モジモジ君大作戦って事か
0164デフォルトの名無しさん (ワッチョイ e03c-AIfR)2016/10/22(土) 22:16:30.80ID:v7gcb7o50
プログラムに関しては初心者です。

最近仕事でC#プログラムを作りました。
ある測定装置を制御するプログラムです。

質問です。

データ収集の時、多少時間がかかるので、
「今処理しているんだぞ」という表示をしたく考えています。

今現在はフォーム上に置いたラベルに「データ収集中です」とだけ
表示しています。

何かこれに動き(テキストのバックの色が変わるとか)が付ければ
いいぁと思っているんですが、「処理中に表記する」事に関して
参考になるようなサイト等あれば紹介していただきたいのですが・・・

宜しくお願いします。
0165デフォルトの名無しさん (ワッチョイ 1c5e-AIfR)2016/10/22(土) 22:21:59.07ID:kIxm0CI90
>>164
ほかにもあるだろうけどBackgroundWorkerを使う例なら↓
http://dobon.net/vb/dotnet/programing/progressdialogbw.html
このページではProgressBarを使っているけどReportProgressメソッドに数値を渡せるから後は工夫次第
0166デフォルトの名無しさん (ワッチョイ df49-PUkO)2016/10/22(土) 23:08:53.61ID:+hICpl7f0
BackgroundWorkerとか過去の遺物。今から覚えるならIProgress<T>。
http://www.atmarkit.co.jp/ait/articles/1512/02/news019.html
0167デフォルトの名無しさん (ワッチョイ 213c-YT5Q)2016/10/22(土) 23:23:07.21ID:NG/YSHI20
>>165
おじいちゃんかな?
0168デフォルトの名無しさん (アウアウ Sa76-48Mz)2016/10/22(土) 23:36:06.64ID:hnOr+aGfa
>>166
BackgroundWorkerって一度も使ったことないけど、
正直、それってEAPより分かりづらくなってないか?
0169デフォルトの名無しさん (ワッチョイ 177b-+OdZ)2016/10/22(土) 23:36:58.50ID:Hz0V4lr80
単に実行中ですよハングアップしてるわけじゃないですよって示すだけなら
Style=MarqueeなProgressBarを使う
0170デフォルトの名無しさん (ワッチョイ df49-PUkO)2016/10/23(日) 00:06:56.07ID:rBqtbPOF0
>>164
ラベルの背景色を変更するのは簡単だよ。
label.BackColor = Color.Red;
とかで良い。

進捗報告が要らないなら、IProgressとかも使わずにこんな感じ。
(ラベルとプログレスバー)

http://ideone.com/ilYwnF
0171デフォルトの名無しさん (ワッチョイ 5bdd-YT5Q)2016/10/23(日) 02:45:59.94ID:h7gARNSs0
>>164
プログレスバーの出番や
0172デフォルトの名無しさん (ワッチョイ e03c-9S67)2016/10/23(日) 07:23:09.66ID:0dR84IuA0
164です。

皆さんいろいろありがとうございます。

>>170

プログラム見て、動きがすぐ読み取れればいいのですが、
いかんせん、初心者でして・・・すみません。
試してみますが、これは表記中になにか動きがあるのですか?

現在はフォーム上のラベルの背景色は変えていて
「データ受信中」
とだけ大きめに表示しています。

いかんせん、データ受信に時間がかかるので、
「データ受信中」のラベル表記に加えて、何か動きをつけて
「動いてまっせ」感を出したいと思っています。

一番いいのは「データ受信中」にラベルが一定間隔で点滅しているようにみえる
ようになればいいと思っていますね。
0173デフォルトの名無しさん (ワッチョイ 8e94-aczQ)2016/10/23(日) 22:02:41.53ID:8jE4iVd50
label.Text = "動いてまっせ";
0174デフォルトの名無しさん (ワッチョイ df49-PUkO)2016/10/23(日) 23:06:14.69ID:rBqtbPOF0
>>172
>>170はプログレスバーがアニメーションしてる。
ラベルを点滅させたりする機能はないので、やるならタイマー使って自分で実装。

ラベルの背景を点滅させるだけにした例
http://ideone.com/RvXnz5
上のコードにはタイマーの設定が無いけど、タイマーのプロパティーのIntervalを点滅間隔(msec)に設定して、
Tickイベントをダブルクリックすれば、timer1_Tick()の雛型が出来るよ。

いずれにしろ、時間のかかる処理を実行する場合は、タスク等で非同期処理にする必要がある。
そうしないとGUIが固まるので、動きのある効果を出せない。
0175デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)2016/10/24(月) 23:19:31.36ID:zmhV7cki0
配列Aに1,4,6,2,3,5に
配列Bに6,5,3,1,2,4とあるとして、配列Aと同じ順番に配列Bをソートしたいと思っているんですが、
forの2重にしてひとつひとつ比較して並べ替えるしか方法って無いんでしょうか?
0176デフォルトの名無しさん (ワッチョイ 9ddc-A7+C)2016/10/24(月) 23:32:54.72ID:b4iOClrl0
var bdict = 配列B.ToDictionary(b => b);
var sorted = from a in 配列A where bdict.ContainsKey(a) select bdict[a];
0177デフォルトの名無しさん (ワッチョイ dfc0-9S67)2016/10/24(月) 23:34:24.42ID:+Pg3OEGx0
クエリ式がどうも好きになれないのはなんでなんだろうな
0178デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)2016/10/25(火) 00:03:13.22ID:guF/luut0
>>176
ありがとうございました。

>>177
自分もクエリ式勉強中なのですが、どうも慣れていないせいか
しっくりこないです・・・
0179デフォルトの名無しさん (ワッチョイ 9ddc-A7+C)2016/10/25(火) 00:16:44.02ID:ZSR0a5K90
宣言的すぎるからじゃね
メソッド形式は高度に抽象化されてるとはいえ内部の手続きはまだなんとか透けて見える
ML系の本格的な関数型言語を学ぶとクエリ式の方が自然に感じられるようになる
0180デフォルトの名無しさん (アウアウ Sa76-48Mz)2016/10/25(火) 00:22:06.79ID:vHFAVaN6a
同じ順番にソートってそれコピーと同じじゃないのかって気がするんだけど...
0181デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)2016/10/25(火) 00:41:40.24ID:guF/luut0
>>180
あ・・・・・
そりゃそうですよねw
0182デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)2016/10/25(火) 01:28:34.91ID:guF/luut0
連投失礼します。

>>180
コピーのような気がしたんですが、自分がやりたかったことでいうと、
xlsxの中に画像ファイル名、画像説明を順不同で入っている
画像名と説明をジャグ配列に格納(配列A)
画像ファイルのパスを配列Bに格納
配列Bを配列Aのファイル名順にソート

ということがしたかったので、やはり上で教えていただいたとおりにしたほうがコードがすっきりしました。
0183デフォルトの名無しさん (アウアウ Sa27-YT5Q)2016/10/25(火) 02:09:08.09ID:RwrgdaWZa
>>182
画像名と説明とパスを持つオブジェクト作って、その配列を持っとけばいいんでないの?
比較のインターフェイスの実装でファイル名を比較するようにすれば、なんとでもなるような。

別の配列に従ってソートとか、関係無いものでソートしているようで気持ち悪いし、おいおい困りそう。
0184デフォルトの名無しさん (ワッチョイ 9ddc-YT5Q)2016/10/25(火) 06:43:34.05ID:ZSR0a5K90
俺も好きではないが、ソートキーと値が別の配列ってのはそんなに珍しい状況ではないだろ
実際、そのものズバリなメソッドがある
https://msdn.microsoft.com/ja-jp/library/85y6y2d3(v=vs.110).aspx
0185デフォルトの名無しさん (ブーイモ MM6d-vevC)2016/10/25(火) 06:59:06.17ID:NvEtdSjAM
データ配列とその各要素へのアドレスを格納した配列を用意してアドレスだけ並べ換えるとか昔はよくやったものだ
0186デフォルトの名無しさん (スププ Sdb8-YT5Q)2016/10/25(火) 12:26:17.11ID:74VODe2Id
>>184
おー、これは勉強になる。ありがとう。
>>185
ポインタの配列と聞かれると確かに納得感あるな。
0187デフォルトの名無しさん (ワッチョイ ed87-l6JH)2016/10/25(火) 13:05:36.36ID:uBRc/ViR0
>>156-159
先日はレスありがとうございました。
アプリケーションの使われ方で根本的な問題があって、一旦棚上げしております。

次にお聞きしたいことがありまして、
DataGridViewの通常モード(not仮想モード)で、
画面に表示されているときだけ、決まったセルに画像を表示し、
スクロールされて画面外に出たときはその画像を削除する方法はありますでしょうか。

仮想モードを使えない理由は、DataGridViewのテーブルを動的に作成しており、
インプットデータとDataGridViewのあるセルの数値を見て、
新規行を追加するかしないかを判定してるため、予め最終的な行数がわからないためです。
0188デフォルトの名無しさん (ワッチョイ ed87-l6JH)2016/10/25(火) 15:51:31.59ID:uBRc/ViR0
>>187ですがとりあえず自己解決しました。

ですが、フォームのサイズを変更されると、
現在見えてる行数が変わるのですが、
それが取得出来なくて、表示処理に苦心しております。

最終手段はDataGridViewのサイズから行の高さで割り返して
求めるしかないとかと思っていますが、
他にスマートな方法などありますでしょうか。
0189デフォルトの名無しさん (ワッチョイ 5d94-iDGi)2016/10/25(火) 16:25:22.37ID:7TH0YyHm0
Rows.GetRowCount(DataGridViewElementStates.Displayed)
ではうまくいかない?
0190デフォルトの名無しさん (ワッチョイ ed87-l6JH)2016/10/25(火) 16:31:54.92ID:uBRc/ViR0
>>189
ありがとうございます!
見事取得することが出来ました!
感謝です!
0191デフォルトの名無しさん (ワッチョイ e03c-9S67)2016/10/25(火) 20:52:27.11ID:c343kGsU0
>>174
ありがとうございます。
参考にします。
0192デフォルトの名無しさん (ワッチョイ fb0d-JJ20)2016/10/27(木) 09:31:19.17ID:z/oC4hLu0
サードパーティのHogeという名前空間のDLLがあり、
それを自身のMy.Hogeという名前空間上で利用するにはどうしたらいいでしょうか?

using Hoge;
namespace My.Hoge {
 ...
 //Hogeは自身(My.Hoge)の方が参照されてしまいエラーになる
 var fuga = new Hoge.Fuga();
0193デフォルトの名無しさん (ワッチョイ 0319-xC4o)2016/10/27(木) 09:47:56.97ID:6XhIQECk0
global::Hoge
0194デフォルトの名無しさん (ワッチョイ fb0d-JJ20)2016/10/27(木) 09:58:13.92ID:z/oC4hLu0
>>193
できました!ありがとうございます!!
0195デフォルトの名無しさん (ワッチョイ a387-corf)2016/10/27(木) 14:25:21.93ID:wen2xrAS0
度々の質問で申し訳ありませんが、
DataGridViewで、特定の列のセルが選択されているかどうかを簡単に判定する方法はありますでしょうか。

具体的な例ですと、1列目のセル(どこの行でも良い)が選択されていればtrue、
どこのセルも選択されていないか、他の列のセルが選択されている場合はfalseを得たいと思っています。
なお、選択されているセルが複数列に及んでいる場合、1列目が含まれていればtrueで良いです。
0196デフォルトの名無しさん (JP 0H7f-WjTj)2016/10/27(木) 14:42:40.44ID:0JCOu095H
自分なりに調べとるか?
0197デフォルトの名無しさん (ワッチョイ a387-corf)2016/10/27(木) 14:53:51.07ID:wen2xrAS0
>>196
レスありがとうございます。
今朝からずっと調べているのですが、
行全体が選択されているときなどは取得する方法はわかったのですが、
セルだけ選択されているときの判定がわからないでいます。

選択されているセルの位置を個別に判定すればもちろんわかるのですが、
すっきりした方法がないかと思い質問させていただきました。
0198デフォルトの名無しさん (ワッチョイ a387-corf)2016/10/27(木) 17:51:25.17ID:wen2xrAS0
>>197ですが、
結局個別のセルの列番号を判定して処理することにしました。
ありがとうございました。
0199デフォルトの名無しさん (ワッチョイ 875b-ftE3)2016/10/30(日) 07:47:13.97ID:x2/G0x4G0
.NET Native

https://msdn.microsoft.com/ja-jp/library/dn584397(v=vs.110).aspx
0200デフォルトの名無しさん (ワッチョイ e7ed-lCKD)2016/10/30(日) 10:33:24.81ID:FLgXsJlx0
EdgeってまだWebBrowserコンポーネントとして
使えないのでしょうか?
0201デフォルトの名無しさん (ワッチョイ e3dc-ijxz)2016/10/30(日) 20:15:29.09ID:payAbzEM0
永久に使えないと思うよ
.NETの一番の用途は業務アプリなんだから、
Edgeが更新されて動かへんようになったやないかどないしてくれんねん客の業務止まってんねんぞボケェ!
となるのはMSも嫌だろう
0202デフォルトの名無しさん (ワッチョイ d3a1-O9pn)2016/10/30(日) 20:52:10.17ID:MO+ginbx0
UWP(WinRT)以外にedgeが出張って来ることはまず無いと思う
0203デフォルトの名無しさん (ワッチョイ 3f13-Jz20)2016/10/30(日) 21:22:13.26ID:qBBSmv5i0
WebブラウザーのコンポーネントがないとWindows10 mobileでハイブリッドアプリ作れないんじゃないの?
0204デフォルトの名無しさん (ワッチョイ 0323-0DI1)2016/10/30(日) 22:04:35.41ID:jy83/5Dm0
edge以前に、何もしないとIE7 互換ってのはちょっとな
0205デフォルトの名無しさん (ワッチョイ 9b7b-nx48)2016/10/31(月) 01:27:08.66ID:y972gnmv0
>>203
WebViewはStoreAppでもUWPでも用意されてるぞ
なんのエンジン使ってるのかは知らんけど
0206デフォルトの名無しさん (オッペケ Sr7f-Jz20)2016/11/02(水) 13:52:56.07ID:QQnK2Nx3r
winformアプリ作くるんだけど、データベースって何使うのがいいの?
別サーバー用意するんじゃなくアプリ単体で解決したいんだ
前にsqLite使ったことあるんだけど
頻繁にロックかかるしファイル丸見えだからあまり現実的じゃないと思った
ちなみにデータベースエンジンとデータベースそのものの区別はわかっとるつもり
0207デフォルトの名無しさん (ワッチョイ 8f4c-Jz20)2016/11/02(水) 14:07:13.78ID:g1lvpi1B0
それでもやっぱSQLiteかなー
ファイルベースで解決できるし
0208デフォルトの名無しさん (オッペケ Sr7f-Jz20)2016/11/02(水) 14:11:59.91ID:QQnK2Nx3r
>>207
使いやすさでいえばSQLiteなんだけどね
何かの拍子にロックかかったらデータベースファイルをコピーしたファイルを使うしかロック回避できないんだよなあ
まあアクセスできなくなったらコピってそっちにアクセス、でいいんだけど…
あと機密情報とか簡単に見れてしまうのはどうしようもないよね
0209デフォルトの名無しさん (JP 0H7f-WjTj)2016/11/02(水) 14:16:26.97ID:008SucRsH
暗号化しとけばいいんでないの
0210デフォルトの名無しさん (オッペケ Sr7f-Jz20)2016/11/02(水) 14:32:24.63ID:QQnK2Nx3r
暗号化できるのか…知らんかった
0211デフォルトの名無しさん (ワッチョイ 8723-0DI1)2016/11/02(水) 16:28:36.49ID:Rf/eTlDT0
ローカルならmdbと、未だに生き残っているSqlServerCompact4.0てのもあるな
ef6でもサポートしているし、何故かMSが捨てきれていない
0212デフォルトの名無しさん (ワッチョイ 8390-lCKD)2016/11/02(水) 22:52:02.30ID:WjbdorWW0
HttpWebRequestとHttpWebResponseを内包したラッパークラス的なものを使っているんですがどうもしっくりきません
呼び出ししてhttpレスポンスコードをによって処理を変えたいときなどかなり不便です
http://ideone.com/WJJD1C
どんなふうに実装すればいいかアドバイスがほしいです
0213デフォルトの名無しさん (ワッチョイ e3dc-ijxz)2016/11/02(水) 23:55:15.23ID:pD2pdTer0
バカなことしてないでSystem.Net.HttpClientを使いなさい
0214デフォルトの名無しさん (ワッチョイ e990-7tG6)2016/11/03(木) 13:15:37.09ID:UTe4MGM80
HttpClientでCookieやUserAgent弄れないと思うんですが・・・
どうにかして自分で自作ラッパー的なものを作りたいです
0215デフォルトの名無しさん (アウアウカー Sab5-DGmA)2016/11/03(木) 13:17:40.60ID:ISr+08kWa
十分ラップされてるものをさらにラップしなくてもよくね?
0216デフォルトの名無しさん (ワッチョイ 7b49-XA/h)2016/11/03(木) 13:23:23.18ID:5mG4/m370
>>214
どこのガセネタだ。
0217デフォルトの名無しさん (ワッチョイ e990-7tG6)2016/11/03(木) 14:04:43.28ID:UTe4MGM80
後学のためにラッパークラスを作りたいというのはダメなのでしょうか?
0218デフォルトの名無しさん (アウアウカー Sab5-DGmA)2016/11/03(木) 14:08:58.34ID:ISr+08kWa
それならソケットをラップしたほうが楽しい
0219デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 15:05:14.53ID:qQ11y2tH0
string型を返す関数を使う時って、nullを返す場合を考慮すべきですか?
なんで空文字列""を返してくれないんですか
0220デフォルトの名無しさん (ワッチョイ 7bc0-Xqtn)2016/11/03(木) 15:29:38.41ID:k4niuvLf0
string期待するときはIsNullOrEmptyやsNullOrWhiteSpace使うからその辺はあまりこだわってないわ
0221デフォルトの名無しさん (ワッチョイ e93a-DGmA)2016/11/03(木) 16:26:25.12ID:ojzMDh+/0
?? ""
0222デフォルトの名無しさん (ワッチョイ 137b-A9qr)2016/11/03(木) 17:52:26.46ID:ZHf7iZNF0
XMLのとある要素のテキストを持ってくるメソッドを書くとして、
要素がないのと空要素があるのは区別したいじゃん?
要素がないのは異常、なら例外でも良いけど要素がないのを認めるケースもあるじゃん?
0223デフォルトの名無しさん (ワッチョイ 9694-F00D)2016/11/03(木) 19:07:59.15ID:9RMeDev80
パラッパラッパー
0224デフォルトの名無しさん (ワッチョイ bd91-DGmA)2016/11/03(木) 21:26:17.75ID:pfzagnMt0
ちなみにnull許容型でシリアライズしたらXMLどうなるん
0225デフォルトの名無しさん (ワッチョイ 01d6-8n5s)2016/11/03(木) 21:58:25.17ID:n66bP8+L0
数分で試せるだろ
0226デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:24:56.14ID:qQ11y2tH0
沢山ある文字列処理の中に異物のnullが混ざる可能性があるなんて困るよ
作った人頭悪いの?
0227デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:30:21.05ID:qQ11y2tH0
属性かなんか1行でstring型にnullが入る可能性を除去したいんだけどできないかなー
0228デフォルトの名無しさん (ワッチョイ 5194-rqdB)2016/11/03(木) 22:33:10.42ID:Z2ns8N+e0
>>221 じゃ駄目なの
0229デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:39:48.45ID:qQ11y2tH0
>>228
一見して何してるか判らんのはダメなんですよ
>IsNullOrEmpty
こんなの後付けするぐらい無計画に作ったん?
0230デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/03(木) 22:42:14.95ID:Zn5aPZIfa
>>226-227
たぶん頭が悪くて勘違いしてるのは君の方だと思うよw

もちろんメソッドの仕様が不適切な可能性も否定できないが、
空文字とnullを区別するのはむしろ当たり前だし、空文字とは別にnullを
返すことでしか満たせない要件があるのは一般的なことで、
それだけで直ちに間違ってるとは言えない。
0231デフォルトの名無しさん (ブーイモ MM31-m5qj)2016/11/03(木) 22:43:40.66ID:sUyi6SurM
??はよく使う演算子だから一見してわからないなら勉強不足だろう
0232デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:44:00.61ID:qQ11y2tH0
DBだと定義の段階でNULL含めるかどうかって決められるじゃん
ああいう風にできないの?
string型扱う度にいちいちnull判定なんてしてられないよ
0233デフォルトの名無しさん (ワッチョイ 9030-Tcji)2016/11/03(木) 22:44:10.88ID:tnVEjylW0
このやりとり前に見たよ
0234デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:49:08.44ID:qQ11y2tH0
>>230
お前が話の論点理解できないほど相当頭悪いのは判った
0235デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/03(木) 22:50:02.92ID:Zn5aPZIfa
絵に描いたようなダメグラマだなこりゃ。
チ〜ン。終わってる
0236デフォルトの名無しさん (ブーイモ MM31-m5qj)2016/11/03(木) 22:50:47.42ID:sUyi6SurM
荒らしか
0237デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:50:51.90ID:qQ11y2tH0
>>231
そもそも??なんていう意味不明な記号を演算子にする理由がわからない
これならIsNullOrEmptyでも使った方がマシってもんだよ
0238デフォルトの名無しさん (ワッチョイ 9030-Tcji)2016/11/03(木) 22:51:34.18ID:tnVEjylW0
>>232
現状はできないので↓にFeature requestを書いてくればいい
https://github.com/dotnet/roslyn/issues
素晴らしいアイデアならC#9あたりで導入されるだろう
ここで愚痴ったところで100年経っても導入されないから行動したまえ
単に愚痴が言いたいだけなら、ここでなく観葉植物にでも聞いて貰いたまえ
0239デフォルトの名無しさん (ワッチョイ 137b-A9qr)2016/11/03(木) 22:53:06.27ID:ZHf7iZNF0
>>232
できないよ
nullがいやならC#は無理だね
他の言語に行こう
0240デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:56:10.34ID:qQ11y2tH0
いやリフレや属性とかややこしい仕組み用意してる割にそういう事って本当にできないの?って確かめたかったんだけど
やっぱC#ってダメなの?
0241デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/03(木) 22:56:39.43ID:Zn5aPZIfa
っていうか、ID:qQ11y2tH0みたいな発想のプログラマってVBerに多いね。
俗にいう「例外を握りつぶす」ようなことをする困ったちゃんね。

nullを返さない仕様のはずのメソッドがnullを返すことがあればそれはバグだってことがわからないのな。
0242デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 22:59:22.69ID:qQ11y2tH0
>>241
そりゃVB使いに失礼だろ
>>233によると俺以外にも疑問に思ってる奴はいたらしいし
0243デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/03(木) 23:00:46.73ID:Zn5aPZIfa
他にもいることは馬鹿でダメで困ったちゃんでない理由にはならないけどね
0244デフォルトの名無しさん (ワッチョイ 9030-Tcji)2016/11/03(木) 23:00:48.11ID:tnVEjylW0
またお前かって暗に言ったつもりだったよ
0245デフォルトの名無しさん (ワッチョイ 9030-Tcji)2016/11/03(木) 23:01:59.57ID:tnVEjylW0
まあ、別人なのは本当らしい
向こうは物わかり良かったし
0246デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 23:06:23.47ID:qQ11y2tH0
颯爽とこうすりゃいいだよ!って素晴らしい解決法は出てこないんですか?
ここは無能ばかりですかー
0247デフォルトの名無しさん (ワッチョイ 01d6-8n5s)2016/11/03(木) 23:06:45.61ID:n66bP8+L0
nullを完全に排除できるDBって存在するの?
0248デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/03(木) 23:06:55.78ID:K939jIpn0
んー?でもnullが来るときって定義できるよな?
そのケースはどういう対応をする予定なんだ?
仕様にヌケがある問題をコーディングの問題にすり替わってね?
0249デフォルトの名無しさん (ワッチョイ 9030-Tcji)2016/11/03(木) 23:07:58.07ID:tnVEjylW0
>>246
いいだよ!ってどこぞの田舎貴族か?
現状はできないので↓にFeature requestを書いてくればいい
https://github.com/dotnet/roslyn/issues
素晴らしいアイデアならC#9あたりで導入されるだろう
ここで愚痴ったところで100年経っても導入されないから行動したまえ
単に愚痴が言いたいだけなら、ここでなく観葉植物にでも聞いて貰いたまえ
0250デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/03(木) 23:10:56.52ID:Zn5aPZIfa
>>249
彼の言ってることは全然素晴らしくない
何か盛大に勘違いしてるだけ
勘違いしてる奴を増長させて他人に迷惑掛けるようなこと言わないのw
0251デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 23:11:43.68ID:qQ11y2tH0
たぶん胡坐をかいてる君らも将来この変な仕様に苦しめられる日が必ず来る
そのときは俺の書き込みを思い出して欲しい
0252デフォルトの名無しさん (ワッチョイ 5194-rqdB)2016/11/03(木) 23:14:09.69ID:Z2ns8N+e0
null合体演算子を使ってnull値をあっさりと処理するたびに「一見して判らない」とゴネてた子がいたなーとは思い出すかも
0253デフォルトの名無しさん (ワッチョイ e63c-DGmA)2016/11/03(木) 23:14:28.83ID:NjbREez30
>>232
そういうクラスを作ればいいだけ
誰が作るかって?
当然必要としてる人だよね?
0254デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 23:15:20.85ID:qQ11y2tH0
そしてここに書き込むんだよお
またお前かって煽られながらな!
>>249
今のC#の仕様でできないかって主旨だからねえ
将来のC#がどうなろうが興味ないんで
0255デフォルトの名無しさん (ワッチョイ e63c-DGmA)2016/11/03(木) 23:16:58.79ID:NjbREez30
>>247
フィールドの not null 属性の話でしょ
0256デフォルトの名無しさん (ワッチョイ 91b6-m5qj)2016/11/03(木) 23:22:32.46ID:kHdtgxJa0
プロパティ使ってSet時にnullだったら空文字に変換するとか?
0257デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/03(木) 23:25:14.82ID:K939jIpn0
つーかxmlて最近使う機会が多くなったけど
何がいいのかぶっちゃけわからない
プログラムで扱うならCSVのが遙かに楽だし
客に編集させるならiniファイルのが絶対にいい
100行以上あってネストもそれなりなxmlなんて編集できないだろパンピーじゃ
0258デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/03(木) 23:31:06.42ID:qQ11y2tH0
>そういうクラス
>null合体演算子
仮にそういうクラスや演算子使うとしてもさー
文字列処理する度にあちこちに埋め込むつもりなの君たち?
どうせ書き忘れてぬるぽするだけだろ
0259デフォルトの名無しさん (ワッチョイ e63c-DGmA)2016/11/03(木) 23:37:31.91ID:NjbREez30
>>258
> 文字列処理する度にあちこちに埋め込むつもりなの君たち?
意味わからん
0260デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/03(木) 23:50:23.32ID:HfUe3JFnd
nullと空文字列を区別できるのは便利だよな
0261デフォルトの名無しさん (ワッチョイ bd76-8Y51)2016/11/03(木) 23:53:37.53ID:q/VeKpe70
>>257
もともとパンピーの利用を想定してないと思う。
DTDとか定義して厳密データ交換とかXPath/XSLTでの二次利用想定してたけど
あまりにも面倒なのでJSONとかYAMLに取って代わられてしまったな
HTML4の次を策定したときにXHTMLが主流になれなかった時に終わったと思う


>>258
nullが来ない前提で書いてぬるぽはテストで潰し切るけどなあ。
nullで問題あるなら突っ込んだ時点でNGなんだから
DB絡みならDBの型を全部NOT NULLにしておけばそう発生しないし
全部NOT NULLで定義できないなら結局nullable型(または判定処理)は必要ってことだし
0262デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 00:12:02.56ID:j7dIV/6vd
>>257
CSVは階層構造に出来ないから扱いにくい
0263デフォルトの名無しさん (ワッチョイ 34ce-uTye)2016/11/04(金) 00:16:43.73ID:0ODaAY820
階層構造は必要ない
0264デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 00:22:15.02ID:j7dIV/6vd
必要ある
0265デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/04(金) 00:25:49.04ID:S7YCyC790
>>262
階層にする意味ねーし
0266デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 00:30:11.38ID:j7dIV/6vd
意味あるよ
0267デフォルトの名無しさん (ワッチョイ fd4a-DGmA)2016/11/04(金) 00:31:18.26ID:t9kfIjwC0
struct のフィールドにする。
0268デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/04(金) 00:33:20.91ID:S7YCyC790
最終的にはどうしたってDBに突っ込む将来が予想できるなら
階層構造なんて取っ払っておいたほうがいい
0269デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 00:35:34.02ID:j7dIV/6vd
DBに突っ込む予定のデータの話なんかしてません
0270デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/04(金) 00:38:47.72ID:S7YCyC790
>>269
でもね
世の中そーなってんの
なのでツリーを積極的に作る奴はそれだけで無能

まあ、一度xmlで書いてみれば本当に必要だった構造が見えていいかも新内
0271デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 00:41:52.66ID:j7dIV/6vd
今時XMLやJSON使わないなんて変わった人だねえ
0272デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/04(金) 01:07:31.20ID:S7YCyC790
部品Pを扱う建屋A,C,D,Eとか考えるともうツリーとか邪魔になる
0273デフォルトの名無しさん (ワッチョイ 653c-DGmA)2016/11/04(金) 01:18:45.12ID:l35mknxG0
>>272
じゃあとりあえず、適当なcsprojをCSVで書いてごらん
0274デフォルトの名無しさん (ワッチョイ 3ee1-umBA)2016/11/04(金) 01:36:14.39ID:9ZtkjL7R0
>>219
みんな頓珍漢なこと言ってるけど、nullを返さないことを保証するのは需要もあるし、すでに標準ライブラリには導入されてる。
もちろん、空文字を返すよりもnullを返すほうが合理的なこともあるから常にnullを返さないわけではないけど

契約プログラミング(Code Contract)
https://msdn.microsoft.com/ja-jp/library/dd264808(v=vs.110).aspx

例えば、String.Concatのソースを見ると
https://referencesource.microsoft.com/#mscorlib/system/string.cs,a17e32697e4baaf6
に以下のような契約が書いてある
Contract.Ensures(Contract.Result<String>() != null);
これは、戻り値がnullではないと保証する、ということ。

逆に、これがない場合はnullを返す可能性を考慮したほうがよい

現状言語仕様レベルでは契約プログラミングは組み込まれていないので、静的な処理をコンパイラの外で行う必要がある
もちろん言語仕様に組み込む要望は出てるが、やることが多すぎて手が回ってないのでまだ入りそうにはない
https://github.com/dotnet/roslyn/issues/119


Swiftみたいに新しい言語ではnullを許容しない型とかもあるんだけど、なんせC#は15年前の仕様を破壊するわけにいかないので
0275デフォルトの名無しさん (ワッチョイ 3ee1-umBA)2016/11/04(金) 01:43:43.03ID:9ZtkjL7R0
あ、
>空文字を返すよりもnullを返すほうが合理的なこともあるから常にnullを返さないわけではないけど
っていうのは、非null契約が無いメソッドではってことね
非null契約があれば絶対にnullは返さない

非null契約に違反してnullを返そうとすると、静的処理でエラーになるとか、実行時に例外や強制終了になるはず(自分の認識では)
0276デフォルトの名無しさん (ワッチョイ 7213-DGmA)2016/11/04(金) 01:44:56.97ID:fGBbyDJX0
XMLやJSONを使わせないとか老害もいいとこだな
0277デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/04(金) 08:12:03.85ID:S7YCyC790
>>276
データをDBに移しますね
の一言でend
そしてそれはあるあるNo1
0278デフォルトの名無しさん (スフッ Sd28-DGmA)2016/11/04(金) 08:13:58.66ID:eeRk3Y1vd
DBに入れるならDBnullなんでは?
0279デフォルトの名無しさん (スフッ Sd28-DGmA)2016/11/04(金) 08:15:29.14ID:eeRk3Y1vd
あ、言葉足らずだったな。
DBnullに相当する値か状態を表現したクラスしかないのでは?って。
重いとは思うが、それをXMLにあてればいいと思うけど。
0280デフォルトの名無しさん (ワッチョイ b0da-uTye)2016/11/04(金) 08:19:28.81ID:Oa4odGBb0
複数の少数があります
1.5, 3.25, 6.75, 3.375 ....

これら全てが整数になる共通の値を見つけたいのですが、何かいい方法はないでしょうか?
単純に小数点以下が一番長い物に合わせて、1000倍などにしてもいいのかもしれませんが、
できるだけ最小の値にしたいと考えています
0281デフォルトの名無しさん (ワッチョイ b0da-uTye)2016/11/04(金) 08:22:04.24ID:Oa4odGBb0
あ、↑は小数を乗算して整数になる、共通で最小の値という意味です
乗算について抜けていましたすみません
0282デフォルトの名無しさん (ワッチョイ 91dc-dKGq)2016/11/04(金) 08:37:27.49ID:Fu63hJgb0
10^n倍して全部整数にしてから最大公約数で割れば
0283デフォルトの名無しさん (ワッチョイ e63c-DGmA)2016/11/04(金) 08:40:47.32ID:sU8qFob40
>>268
リレーションがなんのためにあると思ってるんだ? w
0284デフォルトの名無しさん (ワッチョイ 3223-8n5s)2016/11/04(金) 08:41:56.32ID:Nv4A79J/0
>>281
小数点以下を分数に変換して最小公約数を求めたら良いんじゃないの?
0285デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/04(金) 08:53:29.87ID:S7YCyC790
>>283
それでいいんだよ
xmlで階層にすると悲劇が始まる
idかkey置いて階層は作らないのが正解
0286デフォルトの名無しさん (スップ Sd78-DGmA)2016/11/04(金) 08:56:20.60ID:jjNRFD+ud
>>285
>>273
0287デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)2016/11/04(金) 08:59:28.30ID:cFPdUXQMp
>>280
単純に10のn乗をかけると循環小数で詰むので分数化するに一票
0288デフォルトの名無しさん (ワッチョイ 7213-DGmA)2016/11/04(金) 09:01:06.22ID:fGBbyDJX0
環境設定ファイルとかクラスをシリアライズするだけで済むのにわざわざDB化するとか馬鹿馬鹿しいわ
0289デフォルトの名無しさん (スフッ Sd28-DGmA)2016/11/04(金) 10:48:32.91ID:eeRk3Y1vd
120120掛けて、それでもだめなら17掛けて、あとは2から割っていくと良いのでは?
それで端数が出たら、素数で割ってけば良いよ。
だいたい23くらいまで持ってたらきれいな数字になる。
分数化は面倒だろ。
0290デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/04(金) 12:29:37.50ID:whUy0fqsa
>>280
宿題スレかお題スレの方がいいと思うけど、

a = 1.5, b = 3.25, c = 6.75, ....
与えられたすべての小数を整数にする最小の10の乗数をRとする

求める共通の値xが見つかったとき、a * x, b * x, c *x, ....は1以外の公約数を
持たないはずだから(ただしa, b, c, ....がすべて同じ値である場合を除く)
a * R, b * R, c * R, ....の最大公約数をGとするとき、

x = R / G

でいいような気がする。
厳密な証明は知らん
0291デフォルトの名無しさん (ドコグロ MMde-DGmA)2016/11/04(金) 14:08:33.75ID:T6Zzc5iHM
>>285
お前は Excel 使っとけ w
0292デフォルトの名無しさん (ドコグロ MMde-DGmA)2016/11/04(金) 14:10:31.34ID:T6Zzc5iHM
>>287
単純に分数にすると無理数で詰むので...
0293デフォルトの名無しさん (ワッチョイ d30d-uTye)2016/11/04(金) 14:56:57.15ID:al1IuUx20
WPF、MVVMで
ファイルやフォルダの一覧を階層構造のTreeViewで表示したいのですが
EnumerateFileSystemEntries を使って実装する方法を教えてください
参考になるサイトやサンプルでも構いません
自分で探してみても単に取得する処理だけのもの(Viewへの適用などが無い)などしか見当たらず困っています
0294デフォルトの名無しさん (アウアウカー Sab5-DGmA)2016/11/04(金) 15:41:50.56ID:zqM+jrKca
>>292
数学的に無理数の範囲でこの問題って解けるのか?
有理数じゃないと無理な気がするけど
0295デフォルトの名無しさん (アウアウカー Sab5-DGmA)2016/11/04(金) 15:47:46.77ID:zqM+jrKca
解けないっていうか、特殊な場合を除きほとんど場合解なしが解になると思う
0296デフォルトの名無しさん (ワッチョイ bcdc-dKGq)2016/11/04(金) 16:23:04.07ID:V0keAHui0
>>293
オブジェクトツリーが作れたらItemsSourceに放り込んでHierarchicalDataTemplateを定義するだけ
0297デフォルトの名無しさん (ワッチョイ 8a02-2mfK)2016/11/04(金) 21:51:02.32ID:tYyOp6nC0
>>294-295
そもそも求める数が整数とか有理数に限るとはどこにも書いてないがな
0298デフォルトの名無しさん (ワッチョイ 3223-8n5s)2016/11/04(金) 22:23:15.39ID:Nv4A79J/0
分数の上下桁数を2桁とか3桁程度の実用的な範囲にして、近似値で分数に変換すれば問題ないでしょ
求めたいものが何であるかによるけどね
0299デフォルトの名無しさん (ワッチョイ bcdc-DGmA)2016/11/05(土) 00:26:17.96ID:u9ZZUUBm0
>>298
当てずっぽうでやるんならわざわざ分数化しなくても
最初から試しに乗算してみて整数っぽくなったらOKでいいだろw
0300デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/05(土) 09:41:59.67ID:OZKlek+X0
ストレージの評価のため、ファイルを同時書き込みするメソッドを
asyncで書いてみたのですが、100回くらいfor文でコールすると
logx.txtが12個とかしか作られません
処理時間で処理が打ち切られたりするのでしょうか?

private static async void TestM(string i)
{
using (FileStream fs=new FileStream(@"F:\work\log" + i + ".txt",
FileMode.Append,
FileAccess.Write,
FileShare.ReadWrite))
{
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
TextWriter tw = TextWriter.Synchronized(sw);
tw.WriteLine("test");
tw.Flush();
}
}

static void Main(string[] args)
{
for(int i = 0; i < 100; i++)
TestM(i.ToString());
}
0301デフォルトの名無しさん (ワッチョイ bcdc-dKGq)2016/11/05(土) 09:56:26.86ID:u9ZZUUBm0
async(というかTask)はデフォルトではスレッドプールを使うから
同時に使用されるスレッド数には限りがあり、残りのタスクはキューに溜まるだけ
普通にnew Threadしたら
0302デフォルトの名無しさん (ワッチョイ e63c-DGmA)2016/11/05(土) 10:06:58.71ID:6wNzhQFs0
>>297
> そもそも求める数が整数とか有理数に限るとはどこにも書いてないがな

えっ?

>>280
> これら全てが整数になる共通の値を見つけたい
0303301 (ワッチョイ bcdc-dKGq)2016/11/05(土) 10:09:53.89ID:u9ZZUUBm0
>>300
いやそもそもasyncの使い方がおかしいな
戻り値voidの場合、awaitが無いとasyncキーワードは全く何の意味も持たない
ワーニング出てるだろ?
(意図とは違うだろうけど)TestMは普通に同期で順番に実行されてるはずだから、
単にswやtwを閉じてないために出力されてないだけじゃないか?
あとasync void使うな
0304デフォルトの名無しさん (ワッチョイ 5194-rqdB)2016/11/05(土) 10:38:43.04ID:9mC8a8qM0
>>300
>>303の言うとおり非同期実行ではなく順番に一個ずつ書き込んでいってるはずだから
Mainのforループがエラーなく最後まで回っているかを確認してみたら
0305300 (ワッチョイ 7220-8n5s)2016/11/05(土) 19:19:50.22ID:OZKlek+X0
根本的に非同期処理のやり方が間違っていただけなんですね
精進します
0306デフォルトの名無しさん (ワッチョイ 0117-7tG6)2016/11/05(土) 20:30:25.56ID:ds+C0ndM0
まあネットで調べただけだと勘違いしやすいよね。
そういう風にしか書かれてないとこ多いもん。
0307デフォルトの名無しさん (ワッチョイ 1541-nJsM)2016/11/05(土) 21:34:08.85ID:q4/6QuN40
書き散らしてるクソブログ多いもんなぁ
分かったフリして書く
↓
それを読んで分かった気になる
以下ループ
0308デフォルトの名無しさん (ワッチョイ 9030-Tcji)2016/11/05(土) 21:42:26.72ID:BoxZvYjG0
最近だとQiitaの「自分用メモ」がひでえ
お前用のゴミを公開するな
非公開で保存できるんだから
0309デフォルトの名無しさん (ワッチョイ 71cb-DGmA)2016/11/05(土) 22:52:00.60ID:iEc26fmZ0
昔は公開しておくといちいち指摘してくれてそれで正しい情報になっていったが
いまブログ書いてるやつがどういうつもりかわからんし触りにくいってのあるよなぁ
お節介やいてストーキングまでされたらたまらんし
殴り合い上等でブログやってる人ならいいが
最近打たれ弱いくせに公開するアホ増えたからなぁ
0310デフォルトの名無しさん (ワッチョイ 21c8-umBA)2016/11/06(日) 17:53:34.18ID:RAhQzM620
WPFでデータバインドする際の INotifyPropertyChanged の実装方針について教えてください。
GUIにバインドするクラスに以下のような2つのプロパティがあるとき

int Value { set; get; }
int Value2 { get { return this.Value * 2 } }

Value の値が変わると自動的に Value2 の結果も変動するため、
Value の setter で、Value、Value2 の2つの PropertyChanged を投げる実装をしました。
しかし、Value が Value を利用してるプロパティの面倒まで見ることに違和感を覚えます。
これは INotifyPropertyChanged の仕様として仕方が無いのでしょうか。
0311デフォルトの名無しさん (ワッチョイ 01d6-8n5s)2016/11/06(日) 19:37:13.87ID:jO0QNoEc0
仕方ない
氏名と名字、名前でも同じだしね
0312デフォルトの名無しさん (ワッチョイ 137b-A9qr)2016/11/06(日) 20:19:58.80ID:A8MT+yST0
どうしてもってなら自分自身のPropertyChangedにイベント引っかけて
Valueが変更されてたらValue2のPropertyChanged起こすとかできるけど
同一クラス内でそんなの別に気にする必要もないんじゃね?
0313310 (ワッチョイ 21c8-umBA)2016/11/06(日) 20:34:01.49ID:RAhQzM620
>>311 >>312
ありがとうございます。そのままの実装で作ってみます。
0314デフォルトの名無しさん (オッペケ Srbd-X2H6)2016/11/07(月) 16:48:49.99ID:oxea6kUxr
>>252
コードレビューで散々ごねて書き直しさせた人がいましたww
0315デフォルトの名無しさん (オッペケ Srbd-X2H6)2016/11/07(月) 16:51:52.12ID:oxea6kUxr
>>274
こんな事まで勉強してる人は滅多にいないかな。
それを言って理解出来る人も極めた少数派。
0316デフォルトの名無しさん (オッペケ Srbd-X2H6)2016/11/07(月) 16:55:30.10ID:oxea6kUxr
>>307
あるあるww
0317デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/07(月) 17:15:04.36ID:RVVbQ4DBa
>>315
悪いけど、その程度のことは知ったうえでその質問者を批判してる人の方が多いと思うよw
0318デフォルトの名無しさん (ワッチョイ 9823-KjJO)2016/11/07(月) 19:06:22.15ID:JC+EsK6v0
うん…言葉尻を捉えるようだがContractで極めたは言い過ぎだな
実装が気になればReferenceSourceを見るのは普通だし
解説としてメジャーなufcpp.netでも触れられている

言語の詳細に興味がない、学ぶ気概がない人はそもそも…
0319デフォルトの名無しさん (オッペケ Srbd-DGmA)2016/11/07(月) 19:10:13.37ID:Msy9mjY5r
変数名規則どうしてる?

フィールド
publicなのは大文字開始でいいけど
privateなのをどうするか悩む

m_Hogeまたはm_hoge
f_Hogeまたはf_hoge
_Hogeまたは_hoge
0320デフォルトの名無しさん (ワッチョイ e9dc-DGmA)2016/11/07(月) 19:52:43.99ID:07KTk/ms0
一番人気はJavaのスタイルに合わせてhoge
10馬身差で_hogeとm_hogeじゃないか
0321デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/07(月) 19:53:21.45ID:RVVbQ4DBa
バッキングフィールドは_hoge
それ以外のフィールドはmHoge
0322デフォルトの名無しさん (ワッチョイ 45bd-bOSl)2016/11/07(月) 20:47:02.70ID:PlwpY0UQ0
Qiitaですげえイラッとする内容で、
ライブラリやツールつかって、やたら「簡単にできる」みたいなことを押す論調で、
紹介している奴。
「簡単にできる」 = 「自分自身で何やってるか、何が変わったかよくわからなく
なる」ということであって、
どうなるかの仕組みを考察したり解説したりするならいいが、

その盲点を無視して、
「ね?猿でもこんなこと簡単にできるでしょ?」
「使わなきゃ損でしょ?」とかはしゃいでいるガキには、物事を説明する
資格はない。そんな有害な記事はネットに上げるな。
0323デフォルトの名無しさん (アウアウオー Sade-MAch)2016/11/07(月) 21:36:50.71ID:RVVbQ4DBa
誰と戦ってるおつもりなのかねw
ばっかじゃなかろうか
0324デフォルトの名無しさん (オッペケ Srbd-X2H6)2016/11/07(月) 22:21:11.52ID:JoerH3dAr
>>318
ごめんなさい。
極めて少数派
の打ち間違いです。
0325デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/07(月) 23:00:37.04ID:geFZXkbd0
JSONで、”[[[1,2],[2,3]]]”のようなアウトプットがしたく
いろいろ探して下記のようなコードで出力できることは
解ったのですが

JavaScriptSerializer seri = new JavaScriptSerializer();
var list = new[] { new[] { new[] {1,2 }, new[] { 2, 3 } } };
string json = seri.Serialize(list);
//出力結果:[[[1,2],[2,3]]]

これを [[[1,2],[2,3],[3,4]...]] のように動的に追記していくには
どのように書いたら良いのでしょうか?

コレクションのように .Add() で次々書けたら良いなと思うのですが
よろしくお願いします
0326デフォルトの名無しさん (ワッチョイ e9dc-dKGq)2016/11/07(月) 23:09:18.73ID:07KTk/ms0
>>325
本題の前に、
https://msdn.microsoft.com/ja-jp/library/system.web.script.serialization.javascriptserializer(v=vs.110).aspx
> Json.NET should be used serialization and deserialization.
とMS様もぶっちゃけてる通り、.NETでJSONを使うならJavaScriptSerializerではなく
デファクトスタンダードであるJson.NETを使いましょう
でJson.NETについて言うと、普通にList<T>をシリアライズすればJSONの配列になる。
事前に配列にしたいならToArrayすればいい。
0327デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/07(月) 23:15:49.87ID:geFZXkbd0
根本的にJavaScriptSerializerは推奨されない技術だったのですね
Json.NETを検討してみます
ありがとうございます
0328デフォルトの名無しさん (ドコグロ MMde-DGmA)2016/11/08(火) 07:59:18.34ID:kkRkk3iCM
>>322
お前もQiitaとやらで
超難しい!超時間掛かる!
簡単とか言ってるやついるけどぶっちゃけ難解!
人類には早すぎた!
って記事かけや
0329デフォルトの名無しさん (ワッチョイ 7b49-XA/h)2016/11/08(火) 21:00:12.94ID:360M0HJP0
>>301
TaskCreationOptions.LongRunningオプション付けてTaskを生成すれば専用のThreadになるから、生のThreadを使う必要ないよ。
それかスレッドプールの同時実行数をチューニングする方法もある。
0330デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/08(火) 21:46:12.39ID:xSnQLWcm0
昨日、jsonの質問をした者ですが
json.netに変更した所で、やはり同じところで悩んでいます
下記コードで出力結果が"[[[1,2],[2,3]]]"となるのですが

var list = new[] { new[] { new[] {1,2 }, new[] { 2, 3 } } };
string json = Newtonsoft.Json.JsonConvert.SerializeObject(list);

これを [[[1,2],[2,3],[3,4]...]] のように動的に追記していくには
どのように書いたら良いのでしょうか?

色々調べても、jsonはキーバリューの形が一般的で
配列でどう表現するのか解りませんでした

よろしくお願いします
0331デフォルトの名無しさん (ワッチョイ e9dc-dKGq)2016/11/08(火) 22:10:11.42ID:ic1oOtKi0
だからList<T>使えよ
JSON云々以前の問題
0332デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/08(火) 23:23:57.86ID:xSnQLWcm0
List<T>のアドバイスをもとに
以下のようなコードで良い感じになってきたのですが
もう一つ配列の外カッコを表現することができませんでした

List<int[]> list = new List<int[]>();
list.Add(new[] { 1, 2 });
list.Add(new[] { 2, 3 });
list.Add(new[] { 3, 4 });
string json = Newtonsoft.Json.JsonConvert.SerializeObject(list);
//[[1,2],[2,3],[3,4]]

List<int[][]> list = new List<int[][]>();にすると
[[[1,2]],[[2,3]]]となってしまい
詰まっております

根本的に考え方が間違っているのでしょうか?
0333デフォルトの名無しさん (ワッチョイ 653c-m5qj)2016/11/08(火) 23:35:34.26ID:qV47zIVg0
だからなぜ配列使うのかと…
0334デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/08(火) 23:55:21.12ID:xSnQLWcm0
すみません

経験不足で、配列以外でやる方法が
想像つきません

どういうイメージでやれば良いのか
教えて頂きたいです
0335デフォルトの名無しさん (ワッチョイ 0117-7tG6)2016/11/09(水) 00:02:28.77ID:hsAPe+Q00
そこは置いとくとして。これで解決したりしてな。(試してない)
解決なら変数の内容というか意味を考えるべきだな。

var list2 = (new List<int[][]>());
list2.Add( list.ToArray() );
// list2 をシリアライズ
0336デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)2016/11/09(水) 03:15:10.85ID:qcMduGDNp
JSONの形だけでいいならこんなのでもいい

List<int[]>[] list3= {list};
int[][][] list4= {list.ToArray()};
0337デフォルトの名無しさん (ワッチョイ e93a-DGmA)2016/11/09(水) 03:33:35.81ID:KnEUpDo20
>>332
List<List<List<int>>>
0338デフォルトの名無しさん (ワッチョイ 517b-8n5s)2016/11/09(水) 05:25:22.53ID:moqMbmIT0
>>332
とりあえずその部分に納得したいならこうやれば形になるよw

var list = new[] { new List<int[]>() };

list[0].Add(new[] { 1, 2 });
list[0].Add(new[] { 2, 3 });
0339デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)2016/11/09(水) 14:02:25.71ID:qcMduGDNp
多分これ>>332は理解できないだろw

前提1: JSONはJavaScript Object Notationの略でjavascriptの文法をベースにした記法である
前提2: javascriptは動的型付け原語であり、C#は
静的型付け原語である
前述3: JSONにおける配列は[]で表され、C#のList<T>と配列はJSONの配列に変換される

前提1,2からC#で必要な型の情報はJSONには記述されないため、JSONをC#に変換する場合この型情報を補完しなければならない

前提3から動的な操作を行う個所はList<T>それ以外を配列で記述するといい


学習または理解のために
C#でもコンパイラによる型推論によって型宣言を省略できるが、理解するまでは省略せずに型をきちんと書く方が理解しやすい

よってvar禁止、初期化時の型宣言の省略禁止でそれぞれを書き換えてみると多少理解が進むんでないかな?
例として>>338のlistと>>336のlist3は省略せずに書くと以下のようになり同じものであるとわかる。

List<int[]>[] list = new List<int[]>[] { new List<int[]>() };

※ List<int[]>[] は intの配列(int[]) の リスト(List<T>) の 配列(末尾の[]) という意味
※ varは、右辺で型が明らかな場合コンパイラが型を推定して補完してくれる。コンパイル時に展開されるので省略せずに型を書くのと等価になる
0340デフォルトの名無しさん (ワッチョイ 3e4c-DGmA)2016/11/09(水) 14:19:57.52ID:ESFv9usG0
>>339
優しいなおめぇ
0341332 (ラクッペ MM2d-DGmA)2016/11/09(水) 17:18:24.33ID:ItbFMo65M
試行錯誤の結果
教えて頂いたList<T>にて
希望のjsonを作れました

基礎的な理解もなく
ネットで得る断片的なソースの
コピペでは応用が効かないと痛感しています

ありがとうございます
0342デフォルトの名無しさん (オッペケ Srbd-X2H6)2016/11/09(水) 19:36:58.06ID:z4p8v0swr
コピペは止めとけ。
Ctrl-C,Vを禁止するだけでプログラミング能力が上がるとか何とか。
0343デフォルトの名無しさん (ブーイモ MM31-m5qj)2016/11/09(水) 20:18:59.79ID:GH2RO7KKM
コピペした回数により残業代減額
0344デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/09(水) 21:32:55.41ID:xe8Gs44h0
LINQのSelectで、メンバ「txt」が"a"の場合、
メンバ「intdata」の符号を反転するということをしたいのですが、
どのように書けば良いのでしょうか?

LINQで条件式が書けるとコードが随分小さくなるので
助かります!!!

class testClass
{
public string txt { get; set; }
public int intdata { get; set; }
}

static void Main(string[] args)
{
List<testClass> ts = new List<testClass>();
ts.Add(new testClass { txt = "a", intdata = 1 });
ts.Add(new testClass { txt = "b", intdata = 2 });
var tsFnc = ts.Select(e => e.txt == "a" ? e.intdata = e.intdata * -1); //←エラー
}
0345デフォルトの名無しさん (ブーイモ MM31-m5qj)2016/11/09(水) 21:46:02.27ID:GH2RO7KKM
e.txt == "a"
? new testClass() { txt = e.txt , intdata = -e.intdata }
: e
0346デフォルトの名無しさん (ワッチョイ e9dc-dKGq)2016/11/09(水) 21:58:25.28ID:EZkCstT40
それインラインのラムダで書いてしまうとコードの意図がわかりにくいから
static testClass Hoge(testClass e) => (>>345);
のようにメソッドとして外出しした上で ts.Select(Hoge) と書くのがいいんじゃないかな
メソッド本体をラムダの形式でスマートに記述できるようになったことだし、
ちょっと複雑なラムダには積極的にメソッド名を付けることを心がけるといい
0347デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)2016/11/09(水) 22:25:47.94ID:qcMduGDNp
>>344
そりゃ値を返さなければエラーになるよな

ts.Select( (e) =>{
if(e.txt=="a") e.intdata*=-1;
return e;
});
0348デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/09(水) 22:41:05.99ID:xe8Gs44h0
>>347
期待した結果が出ました。
ありがとうございます!!!

色んなサイトを回ったのですが、なかなか条件式を書いているサンプルが無かったもので、助かります!!!
0349デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/09(水) 22:44:01.71ID:xe8Gs44h0
>>346
従来のやり方を単純にラムダに変えるのではなく、
ラムダ的なスマートさも追及すべきということですね。

参考になります。
0350デフォルトの名無しさん (ワッチョイ 7220-8n5s)2016/11/09(水) 22:49:39.71ID:xe8Gs44h0
ラムダというかLINQは凄い便利なんですけど、
なんか重いんですよね。

やぼったく書いていた処理をラムダにしたら
可読性が上がった反面、処理に倍の時間がかかるようになってしまい。。。

便利ゆえの宿命なのか、
使いこなせてないだけなのか、
その両方かって気がしています。
0351デフォルトの名無しさん (ワッチョイ 5eed-DGmA)2016/11/09(水) 22:52:28.34ID:GViSYmlw0
適宜ToArrayしろってResharperが言ってた
0352デフォルトの名無しさん (ワッチョイ 8a02-2mfK)2016/11/09(水) 23:09:04.87ID:xK7OwzcU0
LINQにしたら倍ほど遅くなるコードって例えばどんなん?
0353デフォルトの名無しさん (ワッチョイ e9dc-dKGq)2016/11/09(水) 23:23:27.68ID:EZkCstT40
>>347はないわ
インプレースで更新するんなら普通に
foreach (var e in ts) if (e.txt == “a”) e.intdata *= 1;
でいいだろ
副作用がないように見えてこっそり更新してるってのは罠に近い極めてタチの悪いコード
0354デフォルトの名無しさん (ブーイモ MM31-m5qj)2016/11/09(水) 23:31:35.24ID:GH2RO7KKM
>>352
実処理がメソッド呼び出しオーバーヘッドより少ない時かな
ボトルネックにはならないけど倍以上にはなる
0355デフォルトの名無しさん (ワッチョイ f023-8n5s)2016/11/09(水) 23:31:54.26ID:0UIYYtz/0
もしLinqでやりたいのならForEachの拡張メソッドを書くか、IxをNuGetで入れるほうが健全だな
0356デフォルトの名無しさん (ワッチョイ 9f02-u2pL)2016/11/10(木) 01:11:52.00ID:gZ1S6RPu0
>>354
サンプルコードある?
その論理でいくと、実処理がゼロの時が最も顕著で
通常のループよりLINQでのループ(列挙)が倍以上遅いってことになるんだが

繰り返し判定が遅いのかループの準備が遅いのか知らんが
LINQのほうが多少遅いとしても、どれだけ回したら有意な差がでるほどオーバーヘッドあるんだ
0357デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)2016/11/10(木) 01:38:07.59ID:zCCtWAZL0
何万回も回すとか、コンパイラを作るとかじゃなければメソッド呼び出しのコストはほぼ無視できるはず

たぶん、無駄のある書き方してるか、最適化を邪魔するような記述になってるんじゃないかな
0358デフォルトの名無しさん (ブーイモ MM6f-9MLS)2016/11/10(木) 01:48:41.09ID:4pFcdHJlM
>>356
だからボトルネックにはならないって書いたじゃん
倍になろうが大したことない
遅い派の人は処理オーダー違うアルゴリズムと比較してるんだろ
0359デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)2016/11/10(木) 02:05:10.17ID:wdbpo9Rt0
倍遅いって記述がアレで単にループ倍増しているだけじゃね
0360347 (ワッチョイ 033c-9MLS)2016/11/10(木) 02:45:22.58ID:BAuxaWeL0
>>353
いや俺に言われても>>344が求めてるのは "LinqのSelectで〜メンバ「intdata」の符号を反転する" 方法だからな
要求仕様がLinqのSelectで行うことを明示していて、intdataの反転した別インスタンスを返すではなくメンバ変数を反転すると定義しているならそう書くだけだ

こんな書き方するべきじゃないってのはその通りだがそれは>>344に言ってくれ
0361デフォルトの名無しさん (オッペケ Sr2f-WFrU)2016/11/10(木) 03:27:07.24ID:+tyQ2nEUr
副作用は書かないのがコツ。

>>345が考え方としてはよろしい。
0362デフォルトの名無しさん (オイコラミネオ MMdf-h9op)2016/11/10(木) 09:30:47.14ID:SIcifk3eM
IxとRxってどう違うの
0363デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/10(木) 10:49:41.41ID:otGHoxmha
普通に考えてそもそもSelectを使うのがおかしいw
>>353は途中まで普通のこと言ってるのに>>345は否定しないのはおかしいw
0364デフォルトの名無しさん (ワッチョイ b3dc-PwKp)2016/11/10(木) 12:52:58.94ID:+0vOVL7/0
>>347は副作用ないしインスタンスの同一性に拘らないなら目的は果たせてるだろ
分かりにくい糞コードかもしれないが、コードの形をした糞である>>347のように完全否定されるほどのものではないよ
0365デフォルトの名無しさん (ワッチョイ 033c-9MLS)2016/11/10(木) 13:14:42.66ID:BAuxaWeL0
こういう議論が面倒だから>>344の要求に忠実に書いた訳だが…

そもそもSelectを使うのが間違いというのは議論の余地がないからいいとして、副作用を避けるなら>>345はないわw
元のインスタンスと別インスタンスとを混在させて返すってのは罠じゃないのかと

new testClass() { txt = e.txt , intdata = e.intdata*(e.txt=="a"?-1:1) };

別インスタンスを返すなら符号の反転の有無に関わらず必ず別インスタンスで返すべき
0366デフォルトの名無しさん (ワッチョイ a723-teht)2016/11/10(木) 13:43:53.32ID:o8sMendu0
つか、select使わずに拡張メソッド作ったほうがよくね
例えばこんなやつ
http://ideone.com/YQ5uTI
0367デフォルトの名無しさん (ワッチョイ a70d-Cgco)2016/11/10(木) 20:14:55.52ID:jVtZ8e8U0
WPFでVisual StudioのようなタブやドッキングウィンドウがあるUIを作りたく思い
そのようなテンプレートを探しています
「AvalonDock」というものは見つけましたが他にご存知なら教えてください
0368デフォルトの名無しさん (ブーイモ MMef-9MLS)2016/11/10(木) 20:37:33.96ID:uFjDSD4sM
>>365
もう少し視野を広くした方がいい
データ転送オブジェクトや値オブジェクトといったワードで検索してごらん
そのあとはクエリ・コマンド分離の原則を調べよう
0369デフォルトの名無しさん (オッペケ Sr2f-WFrU)2016/11/10(木) 21:24:48.41ID:+tyQ2nEUr
>>366
それの有り難みが理解出来る人は人類では、ほとんどいないw
0370デフォルトの名無しさん (ワッチョイ 7f20-teht)2016/11/10(木) 22:02:45.75ID:INda+yqE0
下のようなコードで動的な数のtaskを作ることは
できるでしょうか?

static async Task ts()
{
List<Task> tsLists = new List<Task>();
var task1 = Task.Run(() =>{/*処理*/});
var task2 = Task.Run(() => {/*処理*/});
tsLists.Add(task1);
tsLists.Add(task2);
await Task.WhenAll(tsLists);
}

Task.WhenAllに配列を含めることができるのなら
taskもできるのではと思いまして

よろしくお願いします
0371デフォルトの名無しさん (ワッチョイ b77b-eMoa)2016/11/10(木) 22:55:20.24ID:pEVMYV3p0
var task1 は、オブジェクトだろ?

当然、コンテナにも入れられる
0372デフォルトの名無しさん (ワッチョイ 4379-teht)2016/11/10(木) 22:56:21.90ID:ApowNrKS0
C#の基本を理解していない奴がスレッドに手出したら死ぬからやめておけ
0373デフォルトの名無しさん (ワッチョイ 7f20-teht)2016/11/10(木) 23:58:51.41ID:INda+yqE0
>var task1 は、オブジェクトだろ?

オブジェクトと聞いて、下のようなコードを書いたら
期待通りの結果が出ました
ありがとうございます

class Program
{
static async Task ts()
{
List<Task> tsLists = new List<Task>();

List<object> taskArry = new List<object>();
taskArry.Add(Task.Run(() => { Console.WriteLine("1"); }));
taskArry.Add(Task.Run(() => { Console.WriteLine("2"); }));
foreach (var tsk in taskArry)
{
var task = tsk;
tsLists.Add((Task)task);
}
await Task.WhenAll(tsLists);
}
static void Main(string[] args)
{
var t = ts();
t.Wait();
for (;;) ;
}
}

思いつきで書いているので、アンチパターンをしているかも知れませんが。。。
0374デフォルトの名無しさん (ワッチョイ 8394-5NgJ)2016/11/11(金) 02:00:56.00ID:/+d8XFyb0
>>370のコードの方は、まぁ、普通
(TaskふたつくらいならわざわざListは使わないけど)

しかし、>>373 は……どうしてこうなった
0375デフォルトの名無しさん (ササクッテロリ Sp2f-9MLS)2016/11/11(金) 02:40:34.81ID:6sQwg64Zp
ソフトの設定をシリアル化するために一つのクラスにまとめたのはいいけどどうアクセスするのが普通なのかよく分かりません
全部public staticにして直接さわってもいいのでしょうか
0376デフォルトの名無しさん (ワッチョイ b37b-hNMU)2016/11/11(金) 03:31:49.89ID:by5SD+CT0
switch文で文字列による分岐をする場合
var hoge="hoge";
// パターン1
var firstChar=hoge.SubString(0,1);
switch(firstChar){
case "a":
 switch(hoge){
  case "akina": ・・・
  case "akiko": ・・・
  case "asaka":: ・・・
  case "amika": ・・・他ずらっと続く
 }
 break;
case "h":
 switch(hoge){
  case "honoka": ・・・
  case "hosaka": ・・・
  case "hoge": ・・・他ずらっと続く
 }
break;
}
// パターン2
switch(hoge){
  case "akina": ・・・
  case "akiko": ・・・
  case "asaka":: ・・・
  case "amika": ・・・
  case "honoka": ・・・
case "hosaka": ・・・
  case "hoge": ・・・
}
パターン1、2でどちらが目的の文字列にたどり着く速度が早いのでしょうか
0377デフォルトの名無しさん (ワッチョイ a70d-Cgco)2016/11/11(金) 04:06:38.01ID:qvZdoaA90
... DropShadowEffect.Color="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},Path=(params:General.ShadowBrush).(SolidColorBrush.Color)}" />

この記述に間違いはありますでしょうか?
0378デフォルトの名無しさん (ワッチョイ 937b-teht)2016/11/11(金) 04:43:55.58ID:MLb8BpI60
>>376
後者
0379デフォルトの名無しさん (ワッチョイ 3319-7KSV)2016/11/11(金) 08:50:36.60ID:OnmZcNT90
>>377
Path中の括弧は基本的に添付プロパティの指定に使うもんだけど
型明示とかの意味で使おうとしてない?
0380デフォルトの名無しさん (ワッチョイ b77b-eMoa)2016/11/11(金) 10:27:04.66ID:M2uBl8fv0
>>373
>List<Task> tsLists = new List<Task>();
>List<object> taskArry = new List<object>();

クラスの継承チェーンでは、Objectクラスがすべてのクラスの基本で、
Object以外のクラスは、すべてそこから派生している。
もちろん、Taskクラスも、Objectクラスの派生クラス

Objectクラスは親クラスで、より抽象的なもの。
Taskクラスは派生クラスで、Objectクラスより具体的で、限定されているため安全だから、
Taskをそのまま使えばいい

Taskクラスは、Objectクラスが持っている、属性・メソッドをすべて持っているから、
そのままObjectクラスとして使える。
(Task)task で、キャストする必要などない

オブジェクト指向を、基本から勉強すべし
0381デフォルトの名無しさん (ワッチョイ b77b-eMoa)2016/11/11(金) 10:43:07.91ID:M2uBl8fv0
>>376-378
漏れも、辞書データベースを作る際、
aで始まる単語の表・bで始まる単語の表・cで始まる単語の表、などのように表を分けるか、
すべてを1つの表にするかで迷う

パターン1の方が、先に限定(枝刈り)されるから、速いような気がするけど、
caseが8つ以上あると、コンパイラが最適化して、
文字列をハッシュ化(整数化)するかも知れないので、パターン2の方が速いかも
0382デフォルトの名無しさん (スッップ Sd1f-PwKp)2016/11/11(金) 12:20:00.46ID:B0EI7WuJd
トライ木って奴だな
実際Stringのハッシュにこれが使われてるかは知らんが
0383デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/11(金) 12:26:36.61ID:TqB+9XQ4a
>>376
実験して報告してw
あと、Dictionary<String, Action>を使うケースも追加で

でもまあ、人が手動でコーティングできる程度の分岐では直感的には
後者の方が速そうな気がする。
0384デフォルトの名無しさん (ワッチョイ 4bda-teht)2016/11/11(金) 12:31:45.60ID:UQPlBidt0
DictionaryにFunc突っ込んだほうがスッキリしていいだろう
0385デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/11(金) 17:11:54.51ID:TqB+9XQ4a
>>376
あと細かいことだけど、「分類」に使うのが常に最初の1文字だけなら
素直にcharにした方が(つまりhoge[0])の方が速い気が
0386デフォルトの名無しさん (ブーイモ MM1f-9MLS)2016/11/11(金) 20:20:29.68ID:Bi+hCNL7M
>>375
設定クラスとファイルは適度に分割する
staticは使わない
設定読み取りインターフェースとクラスを作る
設定に依存するクラスにインジェクションする
0387デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)2016/11/11(金) 22:27:34.93ID:+gNs9Nbk0
>>376
多分後者は最適化でジャンプテーブルに変わるのでそっちのほうが早いかなぁ
0388デフォルトの名無しさん (ワッチョイ b3dc-PwKp)2016/11/12(土) 00:58:23.88ID:e739leKk0
>>376
本気で最適化するならプロファイル取って出現頻度順にソート
一般的にそういうのは分布がかなり偏るので統計的に速くなる
0389デフォルトの名無しさん (ワッチョイ 57ce-Cgco)2016/11/12(土) 08:39:07.19ID:rgkWnGP70
内部で二分探索やジャンプテーブルに変わろうが、毎回文字列を比較してる時点で遅い
分量が不明ならDictionaryに変えるべき
自分でアルゴリズム実装する場合はC#ではunsafeにしない限り遅い
0390デフォルトの名無しさん (ブーイモ MM6f-9MLS)2016/11/12(土) 08:56:42.02ID:NIqnWzQ8M
仮に倍早くなっても辞書をハードコードされたswitchで実装はしたくないな
0391デフォルトの名無しさん (ワッチョイ 57ce-Cgco)2016/11/12(土) 09:36:17.93ID:rgkWnGP70
比較前に一意な文字列に変換して、文字列値としてではなくアドレスやハッシュ値を探索するのが一番速いんだけど
そういうのって標準にないんだっけ
0392デフォルトの名無しさん (ワッチョイ a723-teht)2016/11/12(土) 09:47:10.83ID:IKX2nQlp0
昔見たLinuxのシェルのソースじゃ最初の方のスイッチ使ったロジックだったな
C言語の文字列の扱いなら速度差もあるかもしれんね
0393デフォルトの名無しさん (ブーイモ MM6f-9MLS)2016/11/12(土) 10:14:16.67ID:gzcT9VGJM
>>391
Internというのがある
同じ値の文字列を同じインスタンスの文字列にして返す
0394デフォルトの名無しさん (ワッチョイ 9f02-u2pL)2016/11/12(土) 15:14:10.12ID:Ayj+NND50
caseずらずらと並べると、順次検索するのか?
それだとAxxxは早いけどYxxxは遅いとかいうことになると思うんだが
単純にどっちが早いかなんて比較できんわな
0395デフォルトの名無しさん (ワッチョイ 7f17-C1EH)2016/11/12(土) 15:33:15.88ID:duqbQJlR0
質問です
アプリにメインのフォームとモードレスなフォームの二つがあります
モードレスなフォームを操作したあとに
メインのフォームのボタンを押そうとすると
メインのフォームへフォーカスをあてるためにワンクリック、
ボタンを押すためにもう一回ワンクリックという具合に
2回クリックしないといけないのですが、
これをワンクリックに縮める方法はなにかありますか?
(一つのウィンドウにまとめる方法以外で)
0396デフォルトの名無しさん (ワッチョイ 033c-9MLS)2016/11/12(土) 15:42:42.07ID:IIxQEFvy0
世界一IQの低いソースコードはこれ。ってネタを思い出したわ

>>394
switch はジャンプテーブルでの実装なので末尾のラベルであっても先頭のラベルと処理時間に差は出ない
また同じ理由から選択肢の数が増えても処理時間は殆ど増えない
0397デフォルトの名無しさん (ワッチョイ 7f13-ChQh)2016/11/12(土) 15:47:36.63ID:kNoTIrA70
>>396
おいおい,一度に全部を比較できないだろう?
Axxx は最初の方に比較するし
Yxxx は最後の方に比較するのだったら
Yxxx が確定するまでの時間は Axxx よりも大きくなるのでは?
ジャンプテーブルにしようが,個々の分岐によって時間差が出るのではないかね
0398デフォルトの名無しさん (ワッチョイ b75e-FQoa)2016/11/12(土) 15:58:38.99ID:GAbwEXNG0
>>395
メインのフォームのボタンにMouseEnterでthis.Activate()とFocus()するようにしたら
フォーカスをあてるための分は省略できる
0399デフォルトの名無しさん (ワッチョイ 6bed-eZXk)2016/11/12(土) 16:17:42.31ID:VXYUWtaP0
>>395
WM_MOUSEACTIVATEでググるといい
0400デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)2016/11/12(土) 16:30:32.34ID:HzMgTMM90
>>397
ジャンプテーブル自体を知らないなら初心者スレだからまああるとは思うがジャンプテーブル知ってて

> Axxx は最初の方に比較するし
> Yxxx は最後の方に比較するのだったら
> Yxxx が確定するまでの時間は Axxx よりも大きくなるのでは?

はないわ
言葉だけ中途半端に覚えてる知ったかなんだろうな...
0401デフォルトの名無しさん (ワッチョイ 7f13-ChQh)2016/11/12(土) 16:34:08.09ID:kNoTIrA70
>>400
お前,物事を本当に突き詰めて考えたことが無いんだろう?
今回の文字列比較では差が出て当然
ジャンプテーブルといっておれば,とか間抜けにもほどがある
0402デフォルトの名無しさん (ワッチョイ c3a1-PwKp)2016/11/12(土) 17:10:42.68ID:x4E8HTQB0
文字列比較でテーブル上の位置を特定するには結局ハッシュテーブルと同様の実装がされてるんじゃないの
低レベルな分僅かに高速に動くかも知らんが
0403デフォルトの名無しさん (ワッチョイ 7f17-C1EH)2016/11/12(土) 17:11:17.70ID:duqbQJlR0
>>398-399
toolStripに対して、>>398のMouseEnterでthis.Activate()とFocus()する方法でできました
WM_MOUSEACTIVATEをハンドルする方法もあるのですね。勉強になります
ありがとうございます
0404デフォルトの名無しさん (ワッチョイ 7f13-ChQh)2016/11/12(土) 17:21:06.75ID:kNoTIrA70
>>402
お前すべての文字列についてハッシュ値が異なるように設計できるとでもいうのか?
ハッシュ値をジャンプテーブルに使うとはそういうことだ,そんな無茶な主張をするのか?
0405デフォルトの名無しさん (ワッチョイ a7da-teht)2016/11/12(土) 17:24:24.15ID:5Ttb/Uep0
ハッシュテーブルと言ってる人につっかかるなよ
0406デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)2016/11/12(土) 19:31:45.56ID:HzMgTMM90
>>404
知ったか君は完全ハッシュも知らないのになんでそんな偉そうなのか理解に苦しむ w
0407デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)2016/11/12(土) 19:37:48.04ID:SdQQy6fO0
現在はもっと最適化が入るかもしれんが、やっぱりハッシュテーブルだね
http://qiita.com/NetSeed/items/fd5cd2cdb2ba021518ca

ハッシュが衝突するときだけ文字列比較に行くんじゃないかな
まぁ、hashdosでもされない限りボトルネックにはなりにくいんじゃない?
0408デフォルトの名無しさん (ワッチョイ 7f13-ChQh)2016/11/12(土) 19:52:58.86ID:kNoTIrA70
>>406
で,不特定な文字列に対して比較する場合に完全ハッシュを実現することはできるの?

>>407
ハッシュが衝突するかどうかは,文字列比較までやってしまわないと判明しないのでは?
0409デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)2016/11/12(土) 20:01:20.50ID:SdQQy6fO0
>>408
聞く前に実装を確認したほうが早い
https://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,bcd13bb775d408f1
0410デフォルトの名無しさん (ワッチョイ 7f13-ChQh)2016/11/12(土) 20:11:38.18ID:kNoTIrA70
>>409
なるほどね,不特定な文字列のみ対象とする連想配列ならば,まずはハッシュで付き合わせるのは「あり」なんだね

でも,特定文字列と不特定な文字列比較の case の実装について話しているのに,不特定な文字のみ対象の連想配列の例を出すのはどうかと思うよ
0411デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)2016/11/12(土) 20:31:54.23ID:HzMgTMM90
>>408
> で,不特定な文字列に対して比較する場合に完全ハッシュを実現することはできるの?
コンパイル時に確定してるなら可能
完全ハッシュ アルゴリズム
とかでググれ

> ハッシュが衝突するかどうかは,文字列比較までやってしまわないと判明しないのでは?
ハッシュの衝突の意味がわかってないのか?
異なる入力に対して同一のハッシュ値が生成されることで当然コンパイル時にわかるから衝突するハッシュ値が生成された時だけ文字比較すればいいだけ
0412デフォルトの名無しさん (スフッ Sd1f-PwKp)2016/11/12(土) 20:35:13.60ID:nrwwVciNd
>>410
なんか違和感。
不特定の文字列の中に、特定の文字列は内包されるような気がする。概念的な話になるけど。
0413デフォルトの名無しさん (ワッチョイ 7f13-ChQh)2016/11/12(土) 20:41:39.03ID:kNoTIrA70
>>411
>コンパイル時に確定してるなら
というのは不特定の文字列とはいわないよ
何がくるか分からない文字列に対して完全ハッシュは無理

>>412
もう少しお話をおききしたいが
0414デフォルトの名無しさん (ワッチョイ 6f3c-PwKp)2016/11/12(土) 20:54:31.74ID:HzMgTMM90
>>413
ああ、入力側の話か
分岐した後に一度だけ確認すればいいだけ
確認すべき文字列は確定してるから
0415デフォルトの名無しさん (スフッ Sd1f-PwKp)2016/11/12(土) 21:31:32.38ID:nrwwVciNd
>>413
うーん、不特定な文字列に対して安全なら、それは特定の文字列に対しても安全では無いの?
パフォーマンスは置いといて。
この包丁は誰にとっても安全です、なら、この俺にとっても安全だろうし、>>413にとっても安全だと。
竹光でもさ。

ハッシュが衝突するならオープンアドレス法かなんかでシノニムうまく扱うしか無いけど。
現実問題、Knuthのあの関数でそうそう衝突はしないけど。
0416デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/12(土) 21:48:02.84ID:SCKfSUb2a
>>395
これ、せっかくVista以降改善された仕様を無にする行為だと思うんだけど
0417デフォルトの名無しさん (ワッチョイ 57ce-Cgco)2016/11/12(土) 21:53:54.19ID:rgkWnGP70
ウィンドウのフォーカス周りって10で相当わけわかめな仕様になってない?
ところでわけわかめって通じる?
0418デフォルトの名無しさん (ワッチョイ 033c-Cgco)2016/11/12(土) 21:56:33.32ID:tSXTeFta0
通じる(30代)
0419デフォルトの名無しさん (ワッチョイ 57ce-Cgco)2016/11/12(土) 21:58:32.19ID:rgkWnGP70
何時頃だったか裏にいたウィンドウがアクティブになろうとしてブリンクするいらん仕様を盛り込んでから俺の中で既におかしくなってるけど
10でさらにわけわかめになってる
0420デフォルトの名無しさん (ワッチョイ 7f13-PwKp)2016/11/12(土) 22:56:05.49ID:TM8SsXVk0
>>417
「意味とろろ」まで付けないとだめ
0421デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 03:09:33.62ID:sNDrzqcx0
ファイルをサーチしてそのFileInfo.FilenameをListBoxに表示したい。
あとでItemをクリックしたとき、FileInfoの別のプロパティも参照したいのでFileInfo
自体もListBoxに保存しておきたい。

1.ListBoxを継承したコントロールを作るのは手間がかかる。
2.ListBoxを継承したクラスを作って、Formにaddすることもできるが、これだと
 位置とサイズを設定するのが面倒だ。
 
 なにか良い方法はないか?
0422デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 03:28:05.31ID:sNDrzqcx0
自己解決した。
0423デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 03:33:14.17ID:sNDrzqcx0
やっぱりだめやった。Objectは保存できるが、Stringも同時に保存したい。
二つ同時はむつかしいやろな。
0424デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 03:33:57.68ID:sNDrzqcx0
やっぱり解決した。W thanks
0425デフォルトの名無しさん (ブーイモ MM6f-9MLS)2016/11/13(日) 11:41:32.61ID:l4pNS+tdM
おめでとう
0426デフォルトの名無しさん (ワッチョイ d317-eZXk)2016/11/13(日) 11:48:17.12ID:DlcyGqZP0
ワロタ
0427デフォルトの名無しさん (ワッチョイ 9f02-EqbM)2016/11/13(日) 15:32:47.36ID:PMfnb6vA0
WPFのリストボックスとか任意の型のリストで持てるんじゃなかったっけ
0428デフォルトの名無しさん (オッペケ Sr2f-PwKp)2016/11/13(日) 15:35:53.81ID:LTz5BAc9r
まじかよ糞フォームは独自リストをバインドすることもできないのか
0429デフォルトの名無しさん (ワキゲー MMff-UXqH)2016/11/13(日) 16:33:34.20ID:bY6b9EITM
ListBoxはバインドできるよ
ListViewは無理だけど
0430デフォルトの名無しさん (オッペケ Sr2f-PwKp)2016/11/13(日) 16:37:40.46ID:uxmSSaQNr
WPFのメリットってなに?
0431デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 17:48:03.25ID:sNDrzqcx0
public static int CountList<T>(List<T> list, Func<T, bool> predicate)
{
int count = 0;
foreach (T element in list){
// predicateが参照するメソッドを、elementを引数に渡し呼び出している
if(predicate(element)){
// 真ならカウンタをインクリメント
count++;
}
}
return count;
}

CountList<T> これはT型の変数を返すという意味なのにリターンはstatic int
なのはなぜ?
0432デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 17:53:19.93ID:sNDrzqcx0
public static T CountList<T>(List<T> list, Func<T, bool> predicate)
これの間違いか?
0433デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 17:56:52.79ID:sNDrzqcx0
>WPFのメリットってなに?

UIをプログラムはできなくても絵の得意な人がやってモデルをプログラマーが専念
できるということかな。
0434デフォルトの名無しさん (ワッチョイ 033c-Cgco)2016/11/13(日) 18:01:22.99ID:r+Z8oKZ70
WinFomsではやりにくいGUIも、WPFでなら作りやすいってケースはある
0435デフォルトの名無しさん (ワッチョイ b3dc-PwKp)2016/11/13(日) 18:05:48.45ID:T5+9PjbV0
>>433
現実的にはデザイナーがBlendでXAML作るなんて不可能だけどね
デザイナーに期待できるITスキルは唯一HTML/CSSだけだよ
0436デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/13(日) 18:07:10.18ID:sNDrzqcx0
これはどういう意味? 複雑すぎてわからん。

static String ToResult<TSource>(this IEnumerable<TSource> source)
{
return "{" + string.Join(", ", source) + "}";
}

static String ToResult<TKey, TSource>(this IEnumerable<IGrouping<TKey, TSource>> source)
{
return source.Select(group => string.Format("Key={0}, Source={1}", group.Key, group.ToResult())).ToResult();
}
0437デフォルトの名無しさん (ワッチョイ b7ba-teht)2016/11/13(日) 18:12:30.43ID:pC0Itdjh0
我慢してコードビハインド使わない縛りでやったらUIテストが楽そうだと思った。
0438デフォルトの名無しさん (オッペケ Sr2f-PwKp)2016/11/13(日) 18:30:15.49ID:uxmSSaQNr
>>433
そーなのか
ずっとWinFormしか触ってないんだけど、WinFormのコントロールと同じような動作をWPFに求めてもそういうのは用意されてないの?
たとえばWinFormのDataGridViewには自動的に絡む幅とか調整してくれるメソッドとかあるけどWPFには用意されてないとか?

>>434
逆もある?
0439デフォルトの名無しさん (アウアウイー Sa0f-PwKp)2016/11/13(日) 18:45:13.54ID:lfE9hohca
>>435
割と良いXAML来るけどな。うち。
0440デフォルトの名無しさん (スププ Sd1f-PwKp)2016/11/13(日) 19:32:10.60ID:BXznGnDQd
>>434
その逆もあるよね
0441デフォルトの名無しさん (ワッチョイ a723-teht)2016/11/13(日) 20:47:49.40ID:lO2MkZMm0
>>440
xamlは覚えるまでに苦労するけど、覚えちまったらFormsより遥かに素早く簡単に出来るんだけどな
0442デフォルトの名無しさん (ワッチョイ b33a-teht)2016/11/13(日) 21:29:38.43ID:fclqIQTb0
>>431
> CountList<T> これはT型の変数を返すという意味なのに

その T は型引数に T を取るという意味
0443デフォルトの名無しさん (ワッチョイ a70d-Cgco)2016/11/13(日) 22:11:24.34ID:e/ThXpat0
メニューのボタンを押したら異なるViewの特定の要素にアクセスしたいのですが、どうすればいいですか?
ElementNameでは同じViewに記述していないと駄目?みたいで困っています
RelativeSourceを使えば良いのでしょうか?でも記述方法がわかりません・・・。よろしくお願いします


Menu.xaml
<MenuItem Header="Test1表示" IsCheckable="True" IsChecked="{Binding IsVisible, ElementName=Test1}" />  ←ボタンを押したら

Test.xaml
<Grid x:Name="Test1"> ←これにあるIsVisibleが切り替わるようにしたい
0444デフォルトの名無しさん (ワッチョイ 4b49-VsRF)2016/11/14(月) 00:31:18.15ID:HFnn5wUH0
>>440
Formの方がやりやすいGUIってどんなの?
0445デフォルトの名無しさん (ワッチョイ 57ce-Cgco)2016/11/14(月) 01:58:30.32ID:ktK+BwK20
xaml←これなんて読むんですか!
0446デフォルトの名無しさん (ワッチョイ 9fa6-teht)2016/11/14(月) 02:01:05.98ID:dUUXzUko0
ザームル
0447デフォルトの名無しさん (ワッチョイ 377b-U3jc)2016/11/14(月) 03:26:59.64ID:OCTkBwGI0
static void Swap<T>(ref T lhs, ref T rhs){
T temp;
temp = lhs; lhs = rhs; rhs = temp;
}

呼び出しは
Swap<int>(ref a, ref b);
省略して
Swap(ref a, ref b);

これはダメか? これでもいいよな。
Swap( a, b);
0448376 (ワッチョイ b37b-hNMU)2016/11/14(月) 04:35:40.38ID:v43jjczV0
テストプログラムを作ってみました。
http://ideone.com/JtZ5ui
間違った評価していないか確認して頂きたく。

各テストを1000万回ずつ回した結果は
TestPattern1
test1 elapsed:198msec hitCounter:10000000
test2 elapsed:197msec hitCounter:10000000
test3 elapsed:196msec hitCounter:10000000

TestPattern2
test1 elapsed:192msec hitCounter:10000000
test2 elapsed:183msec hitCounter:10000000
test3 elapsed:183msec hitCounter:10000000

TestPattern3
test1 elapsed:192msec hitCounter:10000000
test2 elapsed:191msec hitCounter:10000000
test3 elapsed:186msec hitCounter:10000000

TestPattern4
test1 elapsed:261msec hitCounter:10000000
test2 elapsed:261msec hitCounter:10000000
test3 elapsed:261msec hitCounter:10000000

firstCharで絞っても大した差は無し。
Dictionary<string,Action>は遅い。

でした。

core i7 6700k Releaseビルド
Debugビルドにするとめちゃ遅い
0449デフォルトの名無しさん (ワッチョイ ef9f-WrRy)2016/11/14(月) 05:52:45.45ID:/TJLzgQW0
それ最適化でswitchが丸ごと無くなるんじゃないの?
0450デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)2016/11/14(月) 12:20:13.87ID:SBSYakm50
どうせいつもの100万回で数百msの差だろと思ったら、試行回数も差も一桁違ってた・・・
考えるだけ無駄だわな
0451デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/14(月) 12:27:16.06ID:QoZcYnGka
>>448
繰り返し回数よりcaseの数の方が肝だと思うけど
0452デフォルトの名無しさん (ワッチョイ 6f7d-teht)2016/11/14(月) 13:04:48.53ID:BB8aMjT80
DebugだとDictionaryだけ速いんだな
0453デフォルトの名無しさん (ワッチョイ b39f-cYps)2016/11/14(月) 15:03:27.08ID:+U0ySF0b0
VS2013 .Net4.5.1
文字列のswitchがDictionary<string, int>→switch(int)みたいなILになってるので
test4がわずかに速いな

TestPattern2もstringCaseTestPattern1呼んでるぞ
0454デフォルトの名無しさん (ワッチョイ 5387-MJQ8)2016/11/14(月) 17:41:26.21ID:Qgf5Rn5/0
話に割り込んでしまってすみません。
次のようなことをやりたいのですが、そもそも可能でしょうか。

メインフォームで時間のかかるループ処理をやっていて、
その進行状況を別フォームを表示して、
別フォーム上に配置したプログレスバーで表示したいと思っています。

以前、ループ処理自体を別フォームで行っいプログレスバー表示はさせたことはありますが、
今回は、ループ処理はメインフォームで行いたいと考えていますが、
そもそも可能なのでしょうか。
0455デフォルトの名無しさん (オッペケ Sr2f-WFrU)2016/11/14(月) 19:12:23.97ID:xSfNgSMsr
>>454
今なら、async, await 一択。
0456デフォルトの名無しさん (ワッチョイ 6f7d-teht)2016/11/14(月) 19:32:29.47ID:42tRiMkK0
>>448
public static readonly Action 〜 で Actionのenumっぽいクラス作ると速い
0457デフォルトの名無しさん (ドコグロ MM5f-wOPQ)2016/11/14(月) 19:51:26.73ID:kXxSR+DwM
>>454
できるけどはたから見たらなんでそんな構成なの?
って感じ
0458デフォルトの名無しさん (ワッチョイ 5387-MJQ8)2016/11/14(月) 20:15:42.84ID:Qgf5Rn5/0
>>455
ありがとうございます。
async使った作り方を検討してみます。

>>457
本当はプログレスバーを表示しているフォームでループ処理を実行できればいいのですが、
引数が大量になったりしてしまうので、メインフォームで処理を行いたいのです。
プログレスバーを別フォームにするのは、まあ、見栄えの問題ですね。
0459デフォルトの名無しさん (スップ Sd1f-wOPQ)2016/11/14(月) 21:22:47.48ID:xjbQt/rmd
>>453
なぜ今どき4.5.1?
0460デフォルトの名無しさん (スププ Sd1f-PwKp)2016/11/14(月) 21:33:34.62ID:gWk7pXe+d
>>459
しょうもないことにつっかかるね
0461デフォルトの名無しさん (ワッチョイ b3dc-dJcJ)2016/11/14(月) 21:35:10.48ID:aL/Lu1lD0
.NET4.6はAPIレベルではほとんど変わってないしどうせインプレース更新で互換性あるから
わざわざターゲットバージョンを上げて動作環境を狭める意味はほぼ無いだろ
0462デフォルトの名無しさん (ワッチョイ 6f3c-wOPQ)2016/11/14(月) 21:46:05.31ID:NhhLZ04e0
>>458
別にやりたいようにやればいいんだが
> 引数が大量になったりしてしまうので
って言う理由はちょっとどうかと思う...
0463デフォルトの名無しさん (ワッチョイ 57cb-wOPQ)2016/11/14(月) 22:34:09.85ID:3a+GOjdi0
>>459
いやあああああああああああ!
2.0ででちゃううううううう!
2.0
のままリリースしちゃうのぉおおおおおお!
恥ずかしいいいいいいい!
0464デフォルトの名無しさん (ワッチョイ 033c-wOPQ)2016/11/14(月) 23:53:59.37ID:OlP0vwcQ0
>>461
サポート切れのバージョンをなんでわざわざ使ってんのかって突っ込みだろカス
0465デフォルトの名無しさん (ワッチョイ 57cb-wOPQ)2016/11/15(火) 00:09:10.73ID:vnzlS/G+0
なんでって
だってバージョン上げたら
テストし直しじゃんよ
そんな金ないだろっていうか
客が金出さねぇって言ってる以上動けないだろ
って人多いと思うぜ

共存できない.netのバージョンの製品が同梱されてるときとか最新で組んでドヤ顔しててもうまく行くんだろか?
それとも全部最新の.netでコンパイルし直すんだろか?
0466デフォルトの名無しさん (ワッチョイ 57cb-wOPQ)2016/11/15(火) 00:11:49.01ID:vnzlS/G+0
すまん知識0だけど
職場の人間も似たような感じだったので
結局よくわからず下位バージョンに合わせて出しちゃったぜ
0467デフォルトの名無しさん (ブーイモ MM1f-9MLS)2016/11/15(火) 01:15:16.80ID:R9/5GWGeM
バージョン非互換なんて滅多に起こらんよ
仮に起こっても数個のコンポーネントを少し弄る程度で解決できる
無論アプリの作りがマトモならって前提だけどな
0468デフォルトの名無しさん (ワッチョイ 033c-wOPQ)2016/11/15(火) 01:16:44.44ID:MJdWHDsF0
>>465
再コンパイルする必要はないって、アホの>>461ですら言ってるじゃねーか
0469デフォルトの名無しさん (スップ Sd1f-wOPQ)2016/11/15(火) 01:18:25.54ID:5Vfxrfmvd
>>467
C#6の中点くらいかな、まああれはUnicodeのせいだけど
0470デフォルトの名無しさん (スフッ Sd1f-wOPQ)2016/11/15(火) 02:29:36.45ID:7Oesxf9ud
>>467
それを「起こってない」と検証する金の出処の話じゃないの?
よく分かるけど。
起こってないのと、めったに起こらないし多分大丈夫、は違う。
鍵は全部締まってるの確認したよ、と、鍵締めたかどうか定かじゃないけどこの辺は治安いいから大丈夫、は全然違う。
0471デフォルトの名無しさん (ワッチョイ a70d-Cgco)2016/11/15(火) 02:53:21.41ID:NoTRkZnD0
WPFアプリケーションで言語を動的に切り替え可能な多言語化をしたいのですが、
調べてみるとResource.resxを使ったりxamlのResourceDictionaryを使ったりと色々あって困惑しています。
どのようなやり方が最適解なのでしょうか?
0472デフォルトの名無しさん (ワッチョイ 033c-wOPQ)2016/11/15(火) 05:52:35.99ID:MJdWHDsF0
>>470
サポート切れのバージョンを使い続けることによるリスクより、4.5.1から4.5.2へのインプレース更新の方がはるかに安全だろ
0473デフォルトの名無しさん (ワッチョイ 033c-wOPQ)2016/11/15(火) 05:53:50.91ID:MJdWHDsF0
>>471
デフォルトのロケールは?
0474デフォルトの名無しさん (ワッチョイ 377b-EKpQ)2016/11/15(火) 08:10:51.58ID:7W+Eb75M0
 public  class FI
  {
      FileInfo _ff;
      string _dispdata;

     public FI(FileInfo fi)
      {
          FI(fi, false); //★error になる。なんとかならないのか?
      }
      public FI(FileInfo fi, bool mode)
      {
         _ff  = fi;
          if(mode)
             _dispdata =  string .Format ("{0,20}:{1,-35} {2,-100}", _ff.CreationTime, _ff.Name, _ff.DirectoryName );
          else
             _dispdata =  string .Format ("{0,20}:{1,-35}", _ff.CreationTime, _ff.Name);

      }
       public   FileInfo finfo{ //★FileInfoという名前にしたいのにできない。何とかならないか?
         get { return _ff; }
      }
  }
}
★をみて感想をください。
0475デフォルトの名無しさん (スフッ Sd1f-wOPQ)2016/11/15(火) 08:37:11.25ID:7Oesxf9ud
>>472
サポート切れも何も。。
リスクとコストを天秤にかけるのは必要なことだろ。
はるかに、とか美味しい言葉で修飾せんと。
その程度の意識でみんなバージョン上げてんだなって思うな。
0476デフォルトの名無しさん (ワッチョイ 377b-EKpQ)2016/11/15(火) 08:51:04.93ID:7W+Eb75M0
474解決しました。たんくす
0477デフォルトの名無しさん (スッップ Sd1f-wOPQ)2016/11/15(火) 12:05:01.57ID:Sy8HLWAKd
>>475
お前サポート切れの.NET保証できんの?すげえな尊敬するわ
0478デフォルトの名無しさん (スフッ Sd1f-wOPQ)2016/11/15(火) 12:14:17.64ID:7Oesxf9ud
>>477
保証をどう定義するかでしょ。
このシステムは動きます、の保証はするよ。
0479デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)2016/11/15(火) 12:24:10.02ID:pMl4CMoG0
MSは保証してないけど動くから保証しますで通用するからまた困るんだよな
0480デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/15(火) 12:32:14.65ID:CGrdF/ira
サポートっていうのは単に何か不具合が見つかった時にMS様がそれを修正する努力はします、
って程度の意味だからさあ...

ビジネストーク的には意味があると思うけど実質的な意味はあんまりないと思うけどね個人的には
0481デフォルトの名無しさん (スッップ Sd1f-wOPQ)2016/11/15(火) 12:38:22.77ID:Sy8HLWAKd
>>478
脆弱性が見つかった時は?
0482デフォルトの名無しさん (スププ Sd1f-wOPQ)2016/11/15(火) 12:55:55.09ID:Z3/Q/mWPd
客の社内環境が最新の.NET Framework許可してない場合も珍しくないしな
0483デフォルトの名無しさん (ササクッテロレ Sp2f-9MLS)2016/11/15(火) 13:15:07.06ID:mY0gDrgyp
>>481
保守で定期的に金取ってるなら契約次第
そうでないなら「フレームワーク更新作業するなら発注してね」でいいだろ
0484デフォルトの名無しさん (スフッ Sd1f-wOPQ)2016/11/15(火) 14:20:03.90ID:7Oesxf9ud
>>481
その脆弱性がシステムにとって致命的かどうか、
システム全体の検証工数と回避修正+波及箇所検証工数でどちらが勝つか(大体はラッパー作って使ってるから、その修正と波及箇所の動作検証で済む)
客が金どれだけ持ってるか、
の折り合いついた所だと思うよ。
0485デフォルトの名無しさん (ワッチョイ 6f7d-teht)2016/11/15(火) 14:37:14.63ID:0U4qoaFD0
XP対応の4を使い続ける
0486デフォルトの名無しさん (スプッッ Sd1f-wOPQ)2016/11/15(火) 15:43:51.26ID:ODQ0lCKgd
>>482
誰も最新の話なんてしてないよ
0487デフォルトの名無しさん (スプッッ Sd1f-wOPQ)2016/11/15(火) 15:44:52.48ID:ODQ0lCKgd
>>484
つまり、脆弱性が見つかってから検証を始めるってことね
0488デフォルトの名無しさん (スフッ Sd1f-wOPQ)2016/11/15(火) 17:05:58.01ID:7Oesxf9ud
>>487
いや、改修したり、OSやミドルやライブラリやフレームワークを更新したら、その検証をするけど、
脆弱性が発見された箇所自体はKBやらで出た内容からソース中の出現箇所出して、依存ツリー出して把握するくらいだよ、その時点では。
0489デフォルトの名無しさん (ワッチョイ 339a-zoBz)2016/11/15(火) 17:08:40.62ID:/cCbWJxV0
既存のCで書かれたエミュレータをアンマネージドDLL化して、C#のGUIアプリから
呼び出して使えないかと思っています。
DLLの関数(1フレーム分進めるなど)を呼び出すことはできると思いますが、
その際にDLL内の特定の関数(ポートへの出力、画面更新など)が実行されたとき、
C#アプリ側でイベントとして捕捉する(C#側の関数が実行される)ようなことは
できるんでしょうか。
0490デフォルトの名無しさん (ワッチョイ 8fe1-PwKp)2016/11/15(火) 17:22:31.09ID:PhOBmSZe0
>>489
コールバックとかを使えば多分行ける
うまく行かないことがあればC++/CLIの出番かな
0491デフォルトの名無しさん (ワッチョイ 3319-7KSV)2016/11/15(火) 17:24:00.58ID:weebeOlr0
そのDLLのソースを書き換えても良いのなら、
DLL側はコールバック登録関数を公開して必要なときに登録されてるコールバックを呼び出す
って形は取れるけど。
0492デフォルトの名無しさん (JP 0H6f-2n2A)2016/11/15(火) 17:46:08.44ID:4QSE1fRAH
オンメモリで改ざん
0493デフォルトの名無しさん (ワッチョイ a70d-Cgco)2016/11/15(火) 17:50:32.92ID:NoTRkZnD0
>>473
日本語です
0494デフォルトの名無しさん (ワッチョイ 4b49-VsRF)2016/11/15(火) 22:28:52.68ID:YqUWOmsB0
>>471
Resource.resxを使うかResourceDictionaryを使うかは好み。
Resource.resxはGUIで設定できる。ロードする部分はシステムのロケール依存で良ければ自動。サテライトアセンブリが生成される
ResourceDictionaryはxamlを自分で記述する。ロードする部分も自分で作成。サテライトアセンブリが生成されない
個人的にはResource.resxの方が好きかな。

で、動的に切り替えって、起動時に切り替えるだけじゃ足りない?
任意のタイミングで既存のGUIもぱっと切り替えるのが必要だとすると、上記だけじゃ駄目で、
ラッパー的なクラスを作成して、それに対してバインディングするようにする必要がある。
0495デフォルトの名無しさん (ワッチョイ a70d-Cgco)2016/11/15(火) 23:15:19.81ID:NoTRkZnD0
>>494
どちらとも動的に切り替えるところまでは作りました
どっちにするかまだ迷っています
どちらが世界的に主流でしょうか?
0496デフォルトの名無しさん (ワッチョイ b3dc-PwKp)2016/11/15(火) 23:23:38.02ID:r0bdrrlQ0
>>495
WPF自体が主流には程遠いから好きにしろとしか
0497デフォルトの名無しさん (ワッチョイ 3703-M1Ou)2016/11/16(水) 14:46:22.40ID:oJqix3AL0
ArrayListを使用した2次元配列を構築したいと考えております。

データは「実験項目」、「測定値」でファイルから読み出します。
一つの「実験項目」に対して任意数の「測定値」があり、任意数の「実験項目」があります。
ファイルを読み出さないとそれぞれの要素数がわからないため動的配列を使いたいと思っています。
「実験項目」、「測定値」共に1,000以内程度の予想です。

ArrayListは扱えていると思っているのですが2次元にする方法がよくわかりません。
ご教示いただけないでしょうか。よろしくお願いします。
0498デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/16(水) 15:20:15.99ID:Nmwy7smwa
>>497
ArrayListは10年以上前に役割を終えた旧式だからもう使っちゃだめ
代わりにList<T>でも使って

List<T>も2次元にはできないが、そもそも2次元にする必要がない

 - TestItem(実験項目)にMeasured(測定値)のリストList<Measured>を持たせて、

 - TestItemのリストList<TestItem>を作る

これでOKでしょ
知らんけど
0499デフォルトの名無しさん (ササクッテロレ Sp2f-9MLS)2016/11/16(水) 15:31:15.35ID:E4kD/LBwp
>>497
TestItem(実験項目)にMeasured(測定値)のリストを持たせたくない場合はDictionary<TestItem,List<Measured>>とか
0500デフォルトの名無しさん (ワッチョイ 3703-M1Ou)2016/11/16(水) 16:11:42.19ID:oJqix3AL0
>>498-499
ご教示ありがとうございます。

やはりArrayListは非推奨なのですね。
List、Dictionaryを勉強してみます。
0501デフォルトの名無しさん (オッペケ Sr2f-WFrU)2016/11/16(水) 20:05:48.43ID:qGX/+c5Jr
何故に、そんなレガシーな亡霊がこの世に??
0502デフォルトの名無しさん (ブーイモ MMef-9MLS)2016/11/16(水) 20:19:51.08ID:gtmrvLDzM
リファクタリングは悪
回帰テスト嫌だからコピペして新規追加しろ
日本はそういう文化だから理解しがたいレガシーコードで溢れかえる
0503デフォルトの名無しさん (ワッチョイ 4bc0-WVKM)2016/11/16(水) 20:38:27.57ID:MMds4sI/0
>>501
キーワードでググったら上位にくるんじゃね
あの手の骨董品コードが残り続けるのは本当害悪でしか無いわ
0504デフォルトの名無しさん (ワッチョイ d3d6-teht)2016/11/16(水) 20:49:59.04ID:Ws6HNRv60
文句はいつまでも互換性を持たせているマイクロソフトに言え
0505デフォルトの名無しさん (ワッチョイ 273c-WVKM)2016/11/16(水) 20:57:40.76ID:MeLHc+gy0
初心者です。

先日測定機のプログラムを作りました。
データ取得の処理中に進捗状況を表示させたくなりました。
フリーズしてるのと勘違いされないようにしたいわけです。

少し調べてみたら、どうやらマルチスレッドなるもの
使うようなんですが、これについて優しく書かれている
サイトなどあればお教えいただければうれしいです。

よろしくおねがいします。
0506デフォルトの名無しさん (ワッチョイ b3dc-PwKp)2016/11/16(水) 21:08:39.93ID:1s2sSz8X0
>>505
自分でThreadやTaskを明示的に作って使う必要があるケースは少ない
再現困難なバグを引き起こしやすいから、マルチスレッドを明示的に使うのは非同期プログラミングに慣れないうちはなるべく避けた方がいい
シリアルか独自のSDKがあるのか知らないけど、何かの外部装置からデータ取ってるなら非同期で取るAPIは用意されてるだろ?
もし同期APIしか用意されてない糞SDKなら仕方ないが、そうでない限りは用意された非同期APIを使うことを優先したらいい
データをどうやって取ってるのかをお前が晒せばもっと具体的なアドバイスもできる
0507デフォルトの名無しさん (ワッチョイ 37dc-WVKM)2016/11/16(水) 21:10:52.22ID:QT5715if0
>>505
時間のかかる処理をバックグラウンドで実行するには?[2.0のみ、C#、VB] − @IT

http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html

.NET開発における非同期処理の基礎と歴史 − @IT

http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_01/masterasync_01_01.html
0508デフォルトの名無しさん (ワッチョイ cb94-5NgJ)2016/11/16(水) 22:04:51.69ID:PcfUB0DB0
上のページはBackgroundWorkerの話で古すぎるし、
下のは歴史から説きおこしてるから最初から読むと長すぎる

async awaitについて書いてあるここ↓くらいから読むのがいいかと
http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_02/masterasync_02_01.html

非同期API使うにしても、async await がわかってないと辛いだろうし
0509デフォルトの名無しさん (アウアウオー Saff-IeI3)2016/11/16(水) 22:20:31.36ID:5Ihw572qa
そもそも非同期とは何かを理解せずにいきなりそんなの読んで理解できると思えませんがw
0510デフォルトの名無しさん (ワッチョイ b3dc-PwKp)2016/11/16(水) 23:41:29.23ID:1s2sSz8X0
初心者ならまずはEAPから入るのがいいんじゃないか
awaitみたいな黒魔獣と違って仕組みが単純明快だし、使う側からすれば完全にシングルスレッドで非同期ができる
排他処理だのデッドロックだのいきなりマルチスレッド特有の問題を抱え込むより、
まずは純粋に非同期プログラミングのところだけを抽出して順番に理解していけばいいと思うよ
0511デフォルトの名無しさん (ワッチョイ 2376-NcFo)2016/11/16(水) 23:57:52.40ID:cEthX6dM0
もっと単純に↓のworkメソッドの中で10%ごとぐらいにラベル表示とかするだけの話じゃないかな
http://www.atmarkit.co.jp/ait/articles/0506/17/news111.html
まずは目的達成を
0512デフォルトの名無しさん (ワッチョイ 9c7b-XpIe)2016/11/17(木) 00:43:08.63ID:KQ/jS2NF0
ベジエ曲線の質問なんですが
P1(10,10) P2(10,40) P3(40,10) P4(40,40)
このような4点のベジエがあったとして、この放物線のP4の延長線を書きたい場合、
どのようにすればいいのでしょうか?
0513デフォルトの名無しさん (ワッチョイ 3f49-YqEk)2016/11/17(木) 00:56:22.10ID:ViKAooID0
Invoke()も今は推奨されないんじゃないかなぁ
0514デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/17(木) 01:43:36.99ID:ypT0aoV/a
>>512
よく知らんけど、終了点の延長戦の方向は制御点から終了点向かう
ベクトルに等しいはずだから、後は簡単な高校数学じゃないの?
0515デフォルトの名無しさん (ワッチョイ 3faf-N7ik)2016/11/17(木) 02:39:29.89ID:Dxu6gLWd0
スレッド周りは古い情報が残りまくりでどうしたらいいのか難しすぎ
非同期処理とかで検索すると普通にasync awaitが見つかるけどプログレスバーとかで検索すると未だにBackgroundWorkerを使うとか書いてるから困る
0516デフォルトの名無しさん (ワッチョイ 9c7b-XpIe)2016/11/17(木) 03:14:03.30ID:KQ/jS2NF0
>>514
自分の説明が下手でも仕分けないのですが、
要するに2次曲線をベジエ曲線を使って描画し、
曲線の終点の延長を追記で描画したいということなのですが
0517デフォルトの名無しさん (ワッチョイ b5dc-2XGH)2016/11/17(木) 07:07:26.21ID:iGNJFpBr0
>>516
端点とそこでの一次の傾きさえ一致してれば滑らかに繋がってるように見える。で、それは514で答えが出てる。
二次の傾きには任意性があって、どう決めたら最も美しいかはあくまでお前の感性の問題だ。
その感性を数学的に定義するのはお前の仕事。それができたら答えは出たようなもんだろ。
0518デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 07:33:08.85ID:B+vLCAoF0
>516
俺もそれ興味あるな。でもペジェー曲線を描く関数は簡単にわかるだろ。
それをプログラム的にどう実現するかが知りたいってことだよね。
バーンスタイン基底関数のブレンディング関数ではN点の式になってるが、実際には
n点でかいたベジェにn+1点を書く場合全部書き直すのは不経済だよな。

bz = new Bezier(p1,p2);
bz = bz.add(p3);
bz = bz.add(p4);
bz = bz.add(p5);
bz = bz.add(p6);

foreach pp in bz{
bz.pset(whiteColor, pp.xl,pp.yl);//前のポイントを消す
bz.pset(RedColor, pp.x,pp.y);//今回を書く
}
こんな感じじゃないか?
グラフィックはやったことないから知らんけど。わからんな前のラインを消すのが
難しいな。
0519デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 07:37:55.62ID:B+vLCAoF0
まあpsetよりもplineだろうな。普通のCADはベクトルで管理していて、書き直しは
やはり、前のラインを記憶していて、背景色で上書きして消すのだと思うよ。
0520デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 07:46:11.48ID:B+vLCAoF0
bz = new Bezier(p1,p2);
bz = bz.add(p3);
bz = bz.add(p4);
bz = bz.add(p5);
bz = bz.add(p6);

bz.write(red, Style1);
これでいいや、制御点はaddするときにわかってるからね。
書くときにベクトルは全部記憶してるからwriteするときに消して書けばいい。

しかし、背景色が違うところをまたがるときはどうすんの? って問題があるな。
0521デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 08:20:53.64ID:B+vLCAoF0
>516
 ツールはなに? DirectXとか? どういう環境でかこうとしているんかで
かなり違うと思う。

DirectXだったら関数についてるんじゃない? 環境が正確にわかればサンプルを
書いてあげるよ。もしわからなければ、、、
0522デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)2016/11/17(木) 08:43:40.73ID:UCWuOxD40
c#でluaを使うためのパッケージは誰がよろしいでしょうか?
0523デフォルトの名無しさん (スププ Sdb8-RUi6)2016/11/17(木) 09:34:37.15ID:Nr9kHWsUd
背景の描画はXor Notの色じゃだめなぬ?
0524デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 11:04:15.91ID:B+vLCAoF0
>背景の描画はXor Notの色じゃだめなぬ?

だめ。
psetなら隣の色を拾って背景代わりにするとできるが、、、lineだと背景の色を
覚えておかないとできないね。特に切り替わりのあるところ毎に背景を記憶して
覚えておかないとできないね。

BackColorXorline()なんて関数があって背景は別レイヤで記憶していてくれれば
できるけど。そんなのがあるんだろうな。きっと。

グラフィックコントローラの機能として何枚かのレイヤがあるんだろうね。でないと
移動するごとに大量のベクトルの書き直しとか間抜けすぎるものね。
だからレイヤーを指定して書き込みできるんじゃなかろうか?
0525デフォルトの名無しさん (オッペケ Sra9-2XGH)2016/11/17(木) 13:02:06.96ID:lS45HIXqr
LINQって使うとハマりそうなところって非同期だから返ってくる結果がよくからん順番になるところと可読性が悪いところ?
メリットは少なめなメモリで動くってだけかな?

Rxとかは便利そうって思えるけど
0526デフォルトの名無しさん (アウアウカー Sa41-2XGH)2016/11/17(木) 13:11:56.85ID:3nQkkv32a
LINQって非同期実行じゃなくて遅延評価じゃないの?
当然順番は変わらないし

更に言うとLINQの最大の利点て可読性の向上だと思ってたんだが…
0527デフォルトの名無しさん (ワッチョイ 9f94-Ctj4)2016/11/17(木) 13:34:27.15ID:JueYqnTL0
返ってくる順番が不確定なのはPLINQだね
(AsOrderd()を使えば順番を維持させることもできるけど)

LINQで可読性が下がるというのは、もしかして、ラムダ式に慣れてないだけでは…
0528デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 13:45:17.61ID:B+vLCAoF0
>526
遅延って意味がおかしいんじゃない。クエリを書いただけでは実行しないってこと
を遅延っていってるんだろうか? そんなの当たり前のように思えるが、、、
0529デフォルトの名無しさん (ワッチョイ 40d9-k96Z)2016/11/17(木) 14:11:29.10ID:DsCEIrdz0
「C#プログラム効率的な書き方」でも読めば?
この本は嫌というほど詳細にLINQが解説してあるから
0530デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 14:40:02.46ID:B+vLCAoF0
>529
 そうだね。それ読んでみる。
0531デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 14:40:19.41ID:B+vLCAoF0
var dtm = new DateTime();
var user = new MembershipUser("?????", "1", "obj", "3","4", "5",
true, true, dtm, dtm, dtm, dtm, dtm);

MembershipUserをテストしようとしてるんだが"?????"は何をいれたらいいの?
無効なプロバイダーでエラーになる。
0532デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 14:41:28.03ID:B+vLCAoF0
正確には

 追加情報:指定されたメンバーシップ プロバイダー名が無効です。

こんなメッセージ
0533デフォルトの名無しさん (ワッチョイ 774f-oPeX)2016/11/17(木) 14:41:41.50ID:sJEahq+u0
また川俣本か・・・
0534デフォルトの名無しさん (JP 0H0d-2BAc)2016/11/17(木) 14:41:59.02ID:9sPAmX71H
実行順序は直感と違うと思うな
副作用がなければ気にならんけど
0535デフォルトの名無しさん (ワッチョイ 40d9-k96Z)2016/11/17(木) 14:49:43.65ID:DsCEIrdz0
>>533
まあね
この人はちょっとパラノイアじみるほどマニアックなところがあるけど、
全部読破すれば間違いなくLINQ to Objectsの力が付くと思う
「こんな使い方普通しないだろw」みたいなのも書いてある
0536デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)2016/11/17(木) 15:17:23.72ID:UCWuOxD40
>>522です
開発環境はvisualstdioです
nugetで公開されているneolua moonsharp等のluaの拡張パッケージになにか違いがあるのでしょうか?
0537497 (ワッチョイ 7c03-EDxK)2016/11/17(木) 17:31:32.94ID:K3Fbeu8d0
>>497 です。

せっかくレスいただいたのですが↓が理解できませんでした。申し訳ありません。

> - TestItem(実験項目)にMeasured(測定値)のリストList<Measured>を持たせて、
> - TestItemのリストList<TestItem>を作る

List<double> lsMeasTest = new List<double>();
でListを生成して
lsMeasTest.Add(dblData);
で測定値を格納していくのはわかります。

実験項目が増えたときにListを生成するのですが
List<double> 変数名 = new List<double>();
を必要数分実行する方法がわからないのです。
0538デフォルトの名無しさん (ワッチョイ 9f94-Ctj4)2016/11/17(木) 17:59:43.84ID:JueYqnTL0
項目リストとしてList<List<double>>(List<double>を入れるList)を作っておく
測定値を入れたList<double>を作ったら、項目リストにAddしていく
ではだめなの
0539デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 18:09:46.70ID:B+vLCAoF0
>573 
 これでどう?

var dict = new Dictionary<string, double>();
dict.Add("test1", 32.5);
dict.Add("test2", 3002.5);
dict.Add("test3", 199932.5);
0540デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/17(木) 18:15:42.30ID:B+vLCAoF0
var dict0 = new Dictionary<string, double>();

dict0.Add("test1", 32.5);
dict0.Add("test2", 3002.5);
dict0.Add("test3", 199932.5);

var dict1 = new Dictionary<string, double>();

dict1.Add("btest1", 32.5);
dict1.Add("btest2", 3002.5);
dict1.Add("btest3", 199932.5);

var Jkken = new Dictionary<string, Dictionary<string,double >>();
Jkken.Add("実験項目1", dict0);
Jkken.Add("実験項目2", dict1);

こうかな?
0541デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/17(木) 18:25:00.31ID:hkg3+6Yaa
>>537
大サービスでサンプル書いてみた
http://ideone.com/WjLe3C
0542デフォルトの名無しさん (ワッチョイ 21bd-2Ppy)2016/11/17(木) 18:51:38.13ID:mx0eMjxm0
public private protected やstatic やプロパティって
どうしても必要なの?
実際に不正アクセスが起たりするもんなの?
何のために、何を防御しているのか理解できない。
0543デフォルトの名無しさん (ワッチョイ b179-XpIe)2016/11/17(木) 18:53:40.36ID:VcCKxuk30
不正アクセスの為にアクセス制限している訳じゃないし、不正アクセスの防止は出来ない
staticは別
0544デフォルトの名無しさん (ワッチョイ 9cba-XpIe)2016/11/17(木) 19:06:49.94ID:uPELr+Dd0
遂にGoogleさんも参加するって
https://mspoweruser.com/google-joins-net-foundation/
0545デフォルトの名無しさん (JP 0H0d-2BAc)2016/11/17(木) 19:49:50.72ID:9sPAmX71H
クラウド方面か
0546デフォルトの名無しさん (ワッチョイ b5dc-2XGH)2016/11/17(木) 20:22:33.07ID:iGNJFpBr0
>>542
余計な情報を外に漏らすと、それを今後もそうだと期待して依存する奴が出てくる
で、お前が後で変えたら何で勝手に変えたんやワシのコードが動かへんようになったわシバクぞボケと言われることになる
日常生活でも「言ってしまったから今更変えづらい」ってあるだろ?
確かに約束できること以外には外に余計な情報を漏らさないようにすることで、
中身を弄っても何勝手に変えとんねんと言われない変更に強いプログラ厶になるんだよ
0547デフォルトの名無しさん (オッペケ Sra9-2XGH)2016/11/17(木) 21:12:47.62ID:lS45HIXqr
>>529
>C#が提供するLINQ to Objectsは、多大な効能と価値を併せ持つ重要な考え方ですが、Cのポインタ同様に抽象的でわかりりにくいものです。

ってその本の解説に書いてるよ
やっぱわかりにくいんだね
0548デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/17(木) 23:20:42.92ID:iGNJFpBr0
それはSQLを知らないだけかと
SQLは伝統的なドカタ道具の中ではズバ抜けてセンスのいい技術だから
食わず嫌いしないで一度ちゃんと学んだ方がいい
0549デフォルトの名無しさん (ワッチョイ 9c42-XpIe)2016/11/18(金) 00:06:56.41ID:BJrPV4Dl0
なぜLambdaがあるのにLinqなんて異物をぶち込んだのか
いまだにわからん

全部Lambdaでいいやん!
0550デフォルトの名無しさん (ワッチョイ b97b-AAsj)2016/11/18(金) 00:09:34.50ID:ifsRvlL10
int i = 0;
int j = 0;
System.Console.WriteLine(i++);   //0
System.Console.WriteLine(j+1);   //1

この2つはなぜ結果が異なってしまうんでしょうか?
0551デフォルトの名無しさん (オッペケ Sra9-2XGH)2016/11/18(金) 00:16:31.04ID:0j66y/nmr
>>548
SQLはMySQLを5年ほどやっとります
0552デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/18(金) 00:30:20.75ID:gT3Hev+M0
>>550
i++はインクリメントする前の値を返すから
0553デフォルトの名無しさん (ワッチョイ 40d9-k96Z)2016/11/18(金) 00:46:38.58ID:iR5uoSVg0
>>547
最初にCのポインタをやった時を思い出すといい
初めは全然分からなかったろ?でも今は楽に分かるだろ?
要は慣れ
0554デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/18(金) 00:55:03.81ID:gT3Hev+M0
>>549
JoinとかGroupByとかSelectManyとかクエリ式無しだともはや暗号だろ
0555デフォルトの名無しさん (ワッチョイ 9fd4-XpIe)2016/11/18(金) 01:08:31.02ID:Bd8bsuVC0
クエリ式なんか使ったことない
0556デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 02:34:45.49ID:ayjJho0i0
>554
それ以外ならラムダ式でできるんか? 例えば? Where、selectを
ラムダ式で書いてみて。

ラムダ式の意味がわからんけど、まあ適当に「こんなんか」くらいで使ってる。
0557デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 02:47:08.73ID:ayjJho0i0
LINQは便利やけど、OrderByとか気持ち悪くて使う気しないな。
単純にSortするよな。
多用するとパーフォマンスが無茶苦茶落ちると思う。
0558デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 02:54:33.31ID:ayjJho0i0
public IEnumerable<string> Records
{
get
{
return doc.Element("root").Element("collections").Elements("own").Select(c => c.Descendants("ID").First().Value);
}
}


LINQだめじゃん。 こっちのほうが簡単。
public IEnumerable<string> Records
{
get
{
return doc.XPathSelectElements("//root/collections/own/ID");
}
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0559デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 02:57:24.22ID:ayjJho0i0
XpathとLINQを組み合わせてつかえんのか?
0560デフォルトの名無しさん (ワッチョイ 3a13-RUi6)2016/11/18(金) 03:07:45.45ID:qODTBmiq0
ごちゃごちゃうるせーよ
0561デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 03:13:27.93ID:ayjJho0i0
var elem = XElement.Parse(something);
var maz = elem.Element("vehicle").Elements("car").Where(c => ((string)c.Attribute("maker")) == "mazda"));

LINQはXMLみたいな階層構造を持ってるとダメじゃない?
これじゃ最初のItemしかサーチできないよ。
0562デフォルトの名無しさん (ブーイモ MM0d-N7ik)2016/11/18(金) 08:03:56.85ID:/xmrja5bM
Linqがボトルネックになったことって意外とないよな
大量データってわかってれば最初から速度最適化考えるし
CLRはメモリ節約の効果がでかいんだね
0563デフォルトの名無しさん (ワッチョイ b5dc-2XGH)2016/11/18(金) 08:16:20.86ID:gT3Hev+M0
それはLINQ使おうとする奴はだいたい一定のスキルがあるから無茶しないだけ
LINQを使おうと思えば使えるシーンで大量データに対して O(N^2)とかの馬鹿みたいなループをやらかす奴はやっぱりいるわけだけど、
そういう奴は当然LINQなんか使わない(使えない)
0564デフォルトの名無しさん (ワッチョイ ad5b-N7ik)2016/11/18(金) 08:21:39.98ID:O/884XX90
トグルスイッチのようなインターフェースってWindowsformのコントロールにあるっけ?
ない場合どうやって作れる?
0565デフォルトの名無しさん (ドコグロ MMff-RUi6)2016/11/18(金) 08:26:54.53ID:MmcaWbSXM
>>564
チェックボックスかラジオボタンで代用
0566デフォルトの名無しさん (ワッチョイ 7c03-EDxK)2016/11/18(金) 08:35:21.61ID:nNUszv7+0
>>538-541
ありがとうございます!!

B+vLCAoF0さんのDictionaryを使う方法、
サンプルコードを準備していただいたhkg3+6Yaaさんの方法
どちらも勉強させていただきます。
本当に感謝です、ありがとうございました!
0567デフォルトの名無しさん (オッペケ Sra9-hkLf)2016/11/18(金) 09:35:07.23ID:+KSaSaaRr
LINQ-To-XMLの立場は。
0568デフォルトの名無しさん (ワッチョイ b974-qiik)2016/11/18(金) 09:39:13.30ID:MjC3oXMe0
知らない子ですねえ
0569デフォルトの名無しさん (ワッチョイ 1519-/ySS)2016/11/18(金) 10:51:06.70ID:AfWqy2AK0
>>564
2値のTrackBarとか
0570デフォルトの名無しさん (ワッチョイ 88d4-XpIe)2016/11/18(金) 12:42:20.87ID:qAuADTbv0
C++弄っていた人から見たら、C#もVBも大差ないよなぁ
ちょっと方言が違うだけ、みたいな

値渡しなのか参照渡しなのか、パッと見で分からないし
使った変数の後始末はFramework任せとか
0571デフォルトの名無しさん (ワッチョイ 1519-/ySS)2016/11/18(金) 14:11:40.18ID:AfWqy2AK0
値渡しなのか参照渡しなのか分からないのはむしろC++とVBだと思うのだけど
呼び出される側だけ特別な記述&/ByRefして呼び出す側は変わらないって言う
C#は両者共に特別な記述ref/outが必要で
0572デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 14:27:23.42ID:ayjJho0i0
C++とか触る気しないな。いらんことを書く量が多すぎて気が狂いそう。
 その点F#をすこし触ってみたが、これは楽だな。C#からすると違和感があるが型推論が
しっかりしているので慣れると楽だと思う。
そもそもループを書くためのforとかがない。もしLINQを知らなかったら、ループなしで
どうやってプログラムを書くのか理解に苦しんだと思う。
0573537 (ワッチョイ 7c03-EDxK)2016/11/18(金) 15:03:02.85ID:nNUszv7+0
>>537 です。

>>541 でサービスしていただきましたが現状とても難しいです。
=>ってなんでしょうか。ビルドできないです。。。

でも、もう少しがんばります。
0574デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/18(金) 18:15:45.39ID:fuS99ZTSa
>>573
使ってるC#のバージョンは?
それはC#6で導入された読み出し専用プロパティの省略記法

public List<Measured> MeasuredList => _MeasuredList;
は
public List<Measured> MeasuredList
{
  get {return _MeasuredList;}
}
と同じ。
http://www.atmarkit.co.jp/ait/articles/1606/01/news051.html
0575デフォルトの名無しさん (ワッチョイ ad5b-N7ik)2016/11/18(金) 20:21:01.12ID:O/884XX90
>>565
そっかー残念
ありがとう
0576デフォルトの名無しさん (ワッチョイ 9fd4-XpIe)2016/11/18(金) 20:30:49.38ID:P4KNWvky0
カスタムコントロールで適当なコントロールから継承して作ればいいだけ
簡単に作れるよ
0577デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/18(金) 20:45:44.35ID:ayjJho0i0
適当では作れんだろ。w
どのコントロールを継承してどのように作るのか。
0578デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)2016/11/18(金) 20:53:06.96ID:cT5mFVkF0
keydownイベントをプログラムから発生させる方法はありますか?
0579デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/18(金) 20:54:03.59ID:fuS99ZTSa
まあ、Checkboxを継承するのが普通だろうねえ。

トグルスイッチっていうのはビジュアルをAndroidのUIにあるような奴にしたいってことかな。
ボタンの凹凸を切り替えるのでよければ何もしなくても標準でできるけど
0580デフォルトの名無しさん (ワッチョイ 3f49-YqEk)2016/11/18(金) 21:37:55.69ID:8JkTMqoR0
見た目を重視しないなら、ユーザーコントロールでトグルボタン2個乗っけるのが手っ取り早い。
0581デフォルトの名無しさん (ワッチョイ 9fd4-XpIe)2016/11/18(金) 21:51:48.89ID:P4KNWvky0
Checkbox継承してOnPaintで描けばいいだけだから、やってみるば簡単
Checkedで描画する画像切替えるとかで簡単に実現できる
サイズは画像のサイズに合わせてMaximumSizeとMinimumSizeを固定しちゃうとかかな
0582デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)2016/11/18(金) 22:02:56.90ID:cT5mFVkF0
>>578です
実装できました
0583デフォルトの名無しさん (ワッチョイ 3f49-+6wY)2016/11/18(金) 22:24:07.69ID:8JkTMqoR0
画像貼り付けて作ると高DPI対応は出来なくなるな
0584デフォルトの名無しさん (ワッチョイ 34ce-ke/V)2016/11/18(金) 22:47:36.55ID:YsofO7c60
画像を高画質で持っておいて伸縮サセルノデス
0585デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/18(金) 22:49:04.17ID:fuS99ZTSa
EMFを使えば出来るんじゃない?
十分でかいビットマップを使ってもいいと思うけど
0586デフォルトの名無しさん (ワッチョイ 34ce-ke/V)2016/11/18(金) 22:51:45.64ID:YsofO7c60
ところでWindows10によくある横にスライドするスイッチ(● )←みたいなやつ
あれの状態をプログラムから参照したいのですが、
ウィンドウハンドル的なものは取れますか?
0587デフォルトの名無しさん (ワッチョイ 5e23-tQqt)2016/11/18(金) 23:09:11.73ID:RGR0MUcx0
>>585
つか、単純な図形だからGDI+で書いたほうが早いし、アニメーションさせたくなったら
画像はお払い箱です
0588デフォルトの名無しさん (ワッチョイ 3f49-YqEk)2016/11/18(金) 23:12:28.84ID:8JkTMqoR0
EMFは存在をすっかり忘れていたな
C#でも扱えるんだね

デカいビットマップの縮小は、小さいパーツだとあまり綺麗に表示されないよ
マルチアイコンみたいに複数の解像度の画像を用意すればましだけど
0589デフォルトの名無しさん (ワッチョイ 3a13-8L7G)2016/11/18(金) 23:29:21.49ID:+XmNVsSt0
自作のフォームアプリケーションを起動させて引数も渡したいのですがどうすればいいですか?
0590デフォルトの名無しさん (ワッチョイ 3a13-8L7G)2016/11/18(金) 23:40:26.29ID:+XmNVsSt0
できました
0591デフォルトの名無しさん (ワッチョイ 5e7d-XpIe)2016/11/18(金) 23:55:36.52ID:X3QgbGYl0
画像の拡大縮小はモード選べるよ。十分綺麗にできるでしょ
0592デフォルトの名無しさん (ワッチョイ 56e1-RUi6)2016/11/19(土) 00:45:16.52ID:1yryIr4y0
>>559
普通に出来るだろ
0593デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/19(土) 02:06:11.41ID:E+HZm7+A0
>Checkbox継承してOnPaintで描けばいいだけだから、やってみるば簡単
>Checkedで描画する画像切替えるとかで簡単に実現できる
>サイズは画像のサイズに合わせてMaximumSizeとMinimumSizeを固定しちゃうとかかな

こんなことやったことないわ。どういう意味だ?
なんでChecboxを継承する必要があるんだ?
つかトグルSWだよな。
ちょっとやってみるんで指導よろしく。

OnPaintで描くってどういう意味だ?
情報が欠落しすぎ。
まずプロジェクトに追加するのは何? 
ユーザーコントロール? クラス? コンポーネント?
どれだ?
0594デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/19(土) 02:08:07.35ID:E+HZm7+A0
checkboxを継承するってのだから、どう考えてもクラスだよな。じゃあまあ
追加クラス。
0595デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/19(土) 02:31:43.92ID:E+HZm7+A0
public class clsToggleButton : CheckBox
{
Form _pform;

public clsToggleButton(Form frm)
{
_pform = frm;
}
public void OnPaint (PaintEventArgs pevent)
{
//ここにトグルボタンを描く
if( this.Checked == false ){
//どこに描くんだろ?

}else{

}
}

}
0596デフォルトの名無しさん (ワッチョイ 5e7d-XpIe)2016/11/19(土) 02:41:43.15ID:wlTmYqF50
追加→新しい項目→カスタムコントロール
で、追加されたコードのControlの部分をCheckBoxに。
OnPaintの所は、例えば↓みたいすれば、クリックするたびに赤と青が入れ替わる
protected override void OnPaint(PaintEventArgs pe)
{
  using (var brush = new SolidBrush(Checked? Color.Red : Color.Blue))
  {
    pe.Graphics.FillRectangle(brush, ClientRectangle);
  }
}
一度ビルドすると、ツールボックスに載るのでドラッグ&ドロップでフォームに配置できる
0597デフォルトの名無しさん (スププ Sdb8-RUi6)2016/11/19(土) 02:54:11.98ID:aIswJeomd
>>593
一切欠落してなくない?
Checkboxを継承したコントロールだから、クラスで、コンポーネントで、ユーザコントロールだけど、そんな瑣末な話は置いといて、
とりあえず、OnPaintをオーバーライドして、graphicsにthis.checked描画してみたら?
0598デフォルトの名無しさん (ワッチョイ 5e41-mj3c)2016/11/19(土) 04:05:39.65ID:N2eyluxh0
どうしてもタメになる書籍はC++をサンプルに使われてることが
多いから調べてはいるけど
C#に慣れちゃってるとまーキモチワルい

確かにこれが出来ればほとんど何でも出来るんだろうけど・・・

とりあえずC++最高ということで
0599デフォルトの名無しさん (ワッチョイ 5e41-mj3c)2016/11/19(土) 04:38:58.99ID:N2eyluxh0
ちげぇ!
C#最高!です

なんとか基本的なことは出来るようになった希ガス
疲れたよ、もう
0600デフォルトの名無しさん (ワッチョイ 9fcf-RAPI)2016/11/19(土) 06:23:34.01ID:S6bRHJ270
600げと
0601デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/19(土) 06:31:51.33ID:E+HZm7+A0
>Checkboxを継承したコントロールだから、クラスで、コンポーネントで、ユーザ
>コントロールだけど、そんな瑣末な話は置いといて、

うろ覚えの初心者には全然些末じゃないy。 無茶苦茶大事!!!
「Checkboxを継承したコントロール」ここにたどり着くのに一晩かかる。

ユーザコントロール is a コンポーネント
コンポーネント is a クラス 
こういう関係なの? おお、初めて知った。

トグルボタン は ユーザーコントロールとして作るってことだね。納得。

でも空クラスを配置してCheckboxを継承してもおんなじことだよね。
何が違うの?
0602デフォルトの名無しさん (ワッチョイ 7c7b-8L7G)2016/11/19(土) 06:56:43.78ID:E+HZm7+A0
>596
この説明は完璧って感じがする。
 これからでかけるのでチェックできない残念。
0603デフォルトの名無しさん (ワッチョイ 9c7b-wMId)2016/11/19(土) 08:53:15.23ID:gGKRRZRa0
>>601
各種コントロールの説明や、継承チェーンを見れば?

自分が作りたいコントロールに近いものを探して使うか、
そこから継承して派生したコントロールを作ればいい

クラスを使う時は、継承チェーンをさかのぼりながら、
ベースクラスにどういう機能があるか調べる

なぜなら派生クラスは、ベースクラスのすべての機能を持っているから
0604デフォルトの名無しさん (ワッチョイ 3f49-YqEk)2016/11/19(土) 12:30:26.20ID:xW+PNGAl0
>>598
STLなんかは後付けで今風な機能を実装しようとしてて、無理やり感が半端ない。
0605デフォルトの名無しさん (スププ Sdb8-RUi6)2016/11/19(土) 13:12:50.96ID:aIswJeomd
>>601
同じ事だよ。
ユーザコントロール一度画面から選ぶと、似たようなコード出て来るから、
そいつの継承元見てみ。
>>596は親切だな。
0606デフォルトの名無しさん (ワッチョイ 9c7b-wMId)2016/11/19(土) 18:51:47.20ID:gGKRRZRa0
よく知らんけど普通、IDEにはクラスウィザードが付いている

新しいクラスを作るときは、クラスウィザードの画面で作れば、自動的にクラスが作られる
0607デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/19(土) 19:01:01.87ID:VKIYWaqIa
そんな使ってる人ほとんどいないと思うよw

ところで前から思うんだけどウィザードってのはポリコレ的にどうなのかね
0608デフォルトの名無しさん (ワッチョイ 3a20-XpIe)2016/11/20(日) 19:20:37.60ID:DP6jtmXB0
ハードディスクのベンチマークを測る
簡易ツールを作りたくて
ランダムリード・ライトのサンプルを見つけたのですが
これでハードディスクへのランダムリード・ライトになるでしょうか?

//ランダム書き込み
using (System.IO.BinaryWriter rw = new System.IO.BinaryWriter(
File.OpenWrite(@"C:\temp\test.txt"), System.Text.Encoding.UTF8))
rw.Write("0");

//ランダム読み込み
using (System.IO.FileStream file = new FileStream(@"C:\temp\test.txt",
System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
byte[] bs = new byte[file.Length];
file.Read(bs, 0, bs.Length);
}
0609デフォルトの名無しさん (ブーイモ MMb8-RUi6)2016/11/20(日) 19:28:04.56ID:aSeFXcOvM
ファイル名が違うな ¥¥.¥PhysicalDriveN だよ
0610デフォルトの名無しさん (ワッチョイ 777b-w7k2)2016/11/20(日) 20:25:05.70ID:JNgwCyth0
ディスク書き込みは複数層でバッファリングがあるから
.NETのライブラリだけじゃ割と無理じゃないかな
0611デフォルトの名無しさん (ワッチョイ 3a20-XpIe)2016/11/20(日) 20:32:04.76ID:DP6jtmXB0
\\.\PhysicalDriveN
なんてドライブの指定方法があるのですね

ただ、MBRを迂闊に書き換えると
クラッシュするとか
単純な読み書きは危険なようで

だから、公開されてるベンチツールには
シーケンシャルの読み書きしかないのかと思いました

情報ありがとうございます
0612デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/20(日) 22:44:41.11ID:ujJmR5b00
BindingSource のデータをLINQで扱いたいのですが
↓コードのbs に登録されているデータをLINQを使って
ID=100とID=200 のKamokuの平均値をだしたいのですがどんな風にやればいいでしょうか?


private List<Employee> emplist;

BindingSource bs = new BindingSource(emplist, string.Empty);
dataGridView1.DataSource = bs;
0613デフォルトの名無しさん (ワッチョイ 777b-w7k2)2016/11/20(日) 23:11:49.40ID:JNgwCyth0
DataSourceがList<T>ならBindingSourceでフィルタできるわけでも無し
emplistにWhereとAverageするだけじゃね
Whereで要素数0になる可能性があるとちょっと面倒だけど
0614デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/20(日) 23:36:14.07ID:ujJmR5b00
>>613
DataTable でLINQ使うときは、↓のように var items = dt.AsEnumerable() でやれるのですが
>>612のようにやるときは、bs.AsEnumerable() みたいにはできないのですか?


DataTable dt;

var items = dt.AsEnumerable()
.Where(x => x["id"] == "100")
.Select(x => x["Koumoku"].ToString());
0615デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/20(日) 23:45:11.80ID:mNZMIvsS0
BindingSourceは一応IEnumerableを実装してるから
bs.Cast<Employee>().Where(…とできるんじゃないの
試したことないしそんなことしようとも思わないけど
0616デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/20(日) 23:51:53.85ID:ujJmR5b00
>>615
ありがとう試してみます。
0617デフォルトの名無しさん (ワッチョイ 3f49-YqEk)2016/11/21(月) 02:19:09.69ID:iKiRpZRf0
>>611
>>610の言う通り、c#のStreamキャッシュとOSのファイルキャッシュがあるから、C#標準のライブラリだけじゃ実現できないよ。
P/InvokeでCreateFile()やWriteFile()/ReadFile()等のWIN32APIを呼び出す必要がある。
OSのファイルキャッシュは、CreateFile()でオープンする時にFILE_FLAG_NO_BUFFERINGを指定すれば無効にできる。

HDDに直接書き込みたいなら、ロックとアンマウントも必要になるんじゃないかな。
(DeviceIoControl()でFSCTL_LOCK_VOLUMEとFSCTL_DISMOUNT_VOLUME)
0618デフォルトの名無しさん (ワッチョイ 159a-2Ppy)2016/11/21(月) 05:14:56.16ID:6eO9t+4E0
>>490-491
C#側でデリゲート型を定義して、起動時にコールバック関数のデリゲートをDLLに渡し、
DLL側では関数ポインタとして受け取ることで、C#側の関数をC側から適宜呼び出すことが
できました。C#側はunsafeを使ってないマネージコードなのに、Cから関数ポインタの形で
呼び出すことができるんですね、ちょっと驚きました。有り難うございました。

そこでもう一つ疑問が出てきたんですが、DllImportしたDLLがprintfした内容(標準出力)を、
WPFアプリやFormアプリで受け取って特定のコントロールに出力したり、GUIとは別に
コンソールウィンドウを出してそちらに表示するようなことはできるんでしょうか。
0619デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/21(月) 07:15:54.06ID:EumYM2T30
SetStdHandleとかでできるんじゃないの
素直に子プロセス作ってリダイレクトした方が簡単確実だけど
0620デフォルトの名無しさん (ワッチョイ fa23-tQqt)2016/11/21(月) 08:51:20.53ID:hLpmxTjl0
int25とかint26思い出したわ
0621デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/21(月) 20:26:47.04ID:7M/YTSBB0
LINQで質問ですが
class Person
{
public string id { get; set; }
public DateTime Dateday{ get; set; }
public int kamoku { get; set; }
}

var items = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).avrage;

↑でID = 100 のkamoku の平均を求めていますが、
Datedayの最新10件で平均を求めるのはどんな書き方があるでしょうか?
後、IDの割合を求めるときに↑のwhere tesA.id == 100 を外したのをもう一回やって割り算しているのですが一括で書くときはどうすればいいでしょうか?
0622デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/21(月) 22:40:08.70ID:EumYM2T30
>>621
var av = (
 from tesA in bs.Cast<Person>()
 where tesA.id == 100
 order by tesA.Dateday descending
 select tesA.kamoku
).Take(10).Average();
IDの割合の方は質問の意味が分からない
0623デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/21(月) 23:04:49.74ID:7M/YTSBB0
>>622
ありがとうございます。参考になります。

IDの割合はAverageでなくてcountにしたほうがよかった。すみません
今は↓の結果 items100 / itemsALLで割合をだしています。これを1回で書きたいです。

var items100 = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).count;

var itemsALL = (from tesA in bs.Cast<Person>()
select tesA.kamoku).count;
0624デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/21(月) 23:08:48.37ID:EumYM2T30
items100 / bs.Count でいいだろそれ
0625デフォルトの名無しさん (ワッチョイ 5e41-mj3c)2016/11/21(月) 23:14:12.37ID:lc1W0DQ40
一連のスイッチのオンオフを配列にいれて
シーケンスな処理をするんですが
そのままだと当然boolの配列です。

この場合、配列にする際にConvert.ToInt32を使い
0,1の配列にした方が処理速度が速くなる
ということはあるでしょうか?
配列数は多くても64個です。

自分で確認はまだしてないですが
知見多き方お願いします。
0626デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/21(月) 23:22:00.28ID:7M/YTSBB0
>>624
>>623
すみません
items100 / bs.Count だと実際にやりたいので使えないので
↓ので items100  / itemsALL で書くときはどうしたらいいでしょうか?

var items100 = (from tesA in bs.Cast<Person>()
where tesA.id == 100
select tesA.kamoku).count;

var itemsALL = (from tesA in bs.Cast<Person>()
where tesA.id > 100
select tesA.kamoku).count;
0627デフォルトの名無しさん (ワッチョイ 0448-dXbs)2016/11/21(月) 23:30:37.04ID:cS6E2DFI0
>>625
BitArrayを調べてみたらいい、非ジェネリックでは唯一つかえる存在かもな
0628デフォルトの名無しさん (アウアウオー Sa36-MfQN)2016/11/21(月) 23:34:45.98ID:4A1pLeCTa
>>625
bool使って遅くなる理由があると思えんなあw
どっちにしろ要素数64じゃ差はでないでしょ。

「シーケンシャルな処理」とやらが単純な論理演算ならboolやboolの代用にintを使った配列ではなく、
intをビットワイズで使えば圧倒的に高速になるとは思う
0629デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/21(月) 23:55:19.26ID:EumYM2T30
>>626
短くしたいだけならこれでいいだろ
var persons = bs.Cast<Person>();
var items100 = persons.Where(p => p.id == 100).Count();
var itemsALL = persons.Where(p => p.id > 100).Count();

全件スキャンが2度走るのが気持ち悪いということなら、素直にループにするか、
もしくはこんなやり方もできないこともない
var items = bs.Cast<Person>().ToLookup(p => p.CompareTo(100));
return items[0].Count() / items[1].Count();
0630デフォルトの名無しさん (ワッチョイ fa73-XpIe)2016/11/22(火) 00:12:53.34ID:FPsVs5Xk0
>>629
最後のがまだよくわからないけど調べてみます。
ありがとうございました。
0631デフォルトの名無しさん (ワッチョイ 7d7b-XpIe)2016/11/22(火) 00:22:30.53ID:a+0IO69G0
>>630
もしかしてArrayListつかってる?List使った方がいいよ

bs = new List<Person>();
・
・
float result = (float) bs.Count(x => x.id == 100) / bs.Count(x => x.id > 100);
0632デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/22(火) 07:30:50.02ID:agBMDwRZ0
関係ないけどfloatは誤差が簡単に表面化するから
初心者スレ的には「最終出力以外には使うな」でいいと思う
0633デフォルトの名無しさん (ドコグロ MM74-EDxK)2016/11/22(火) 09:09:41.67ID:iOkC5GDaM
>>574
遅くなりすみません。
教えていただいたコードでうまくいきました。
ありがとうございました。

使っているのはVisual C# 2013です。
0634デフォルトの名無しさん (ワッチョイ 40d9-k96Z)2016/11/22(火) 13:19:07.30ID:xeeHVDvp0
VS2013のC#って>>574の書き方は出来なかったはずだが
0635デフォルトの名無しさん (ワッチョイ 5e41-mj3c)2016/11/22(火) 20:13:44.80ID:ZJs8cfZ60
>>627
>>628

ありがとうございます!!
そうですよね、このくらいの要素数なら
どっちにしろ誤差レベルとは思いましたが
かなり有益な情報得られたんでよかったです
調べてみます!
0636デフォルトの名無しさん (ワッチョイ 800d-ke/V)2016/11/22(火) 21:09:02.72ID:0tp2RUgI0
MVVMで、AのViewにあるボタンを押したらBのViewにBindingされているViewModelの値を変更するにはどうすればいいですか?
0637デフォルトの名無しさん (オッペケ Sra9-hkLf)2016/11/22(火) 21:23:07.00ID:vhsrXRxUr
>>636
AとBにモデルとして関連があるなら、それ同士で連係。
画面としてのみの関連なら、ViewModel同士で連係。
0638デフォルトの名無しさん (ワッチョイ 800d-ke/V)2016/11/22(火) 21:39:14.03ID:0tp2RUgI0
>>637
返信ありがとうございます
ViewModel同士の連係の方ですが、具体的にどのようにすればいいでしょうか?
例えばBのViewModelにあるIsEnabledというメンバー変数の値がある場合、StaticにしてAのViewModelでBのViewModelのインスタンスを作るのでしょうか?
0639デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/22(火) 21:48:58.09ID:agBMDwRZ0
>>638
AがBのインスタンスを作るんならStaticにする必要は全く無いだろ
しかし、そもそもVMを設ける目的は単体テストであるということを考えると、
VMが別のVMに明示的に依存するのは好ましくない
理想を言えば、AからBを直接newしたりBのメンバに直接アクセスするのではなく、
インターフェース (例えばIB) を定義してAからはIBを通してアクセスすることにして
AにBのインスタンスを外から渡してやるのがいい
インスタンスを渡すのはViewでやるかDIコンテナ使う
0640デフォルトの名無しさん (ワッチョイ 800d-ke/V)2016/11/22(火) 21:58:02.53ID:0tp2RUgI0
>>639
ご教授ありがとうございます!
ただ、
>インターフェース (例えばIB) を定義してAからはIBを通してアクセスすることにして
>AにBのインスタンスを外から渡してやるのがいい
この部分がわからないので、コードで実例を教えてください
0641デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/22(火) 22:11:27.86ID:agBMDwRZ0
>>640
こんな感じ
interface IEnableable { public bool IsEnabled { get; set; } }
class AView {
 private AViewModel vm;
 public AView() {
  this.vm = new AViewModel(BViewModelのインスタンスを取得());
 }
}
class AViewModel {
 private IEnableable b;
 public AViewModel(IEnableable b) {
  this.b = b;
 }
 void 連携する() {
  this.b.IsEnabled = true;
 }
}
class BViewModel : IEnableable {
 public bool IsEnabled { get { 略 } set { 略 } }
}
BViewModelのインスタンスを取得() のところはnew BViewModel()でもいいしシングルトンでも何でもいい
MVVMでは依存関係はなるべくViewに押し付けるのが基本
0642デフォルトの名無しさん (ワッチョイ 800d-ke/V)2016/11/22(火) 22:21:59.10ID:0tp2RUgI0
>>641
なるほど、このようにやるんですね
Viewに押し付けるというのも勉強になりました
本当にありがとうございます!
0643デフォルトの名無しさん (ワッチョイ 9cba-XpIe)2016/11/22(火) 22:34:41.26ID:BBlq8Dj70
アプリケーションの設定を保持するクラスを作ってこれをシリアライズできるようにしたのですが、
このシリアライズしたものをapp.configに含むことはできるでしょうか?
ファイル名や場所をコードで指定するのが嫌だなぁという程度の理由ですが。
0644デフォルトの名無しさん (ワッチョイ b5dc-Th+s)2016/11/22(火) 22:42:45.68ID:agBMDwRZ0
>>643
System.Configuration.ConfigurationSection
でも普通にSettings使った方が簡単だと思うけど
0645デフォルトの名無しさん (ワッチョイ 9cba-XpIe)2016/11/22(火) 23:20:36.22ID:BBlq8Dj70
そうですか、無いですか。ありがとうございました。
0646デフォルトの名無しさん (ワッチョイ a030-qiik)2016/11/23(水) 01:45:13.48ID:MGsJz9yg0
噛み合ってなさが絶妙
0647573 (ドコグロ MM87-f5kA)2016/11/24(木) 09:42:16.88ID:EZR6VYZqM
>>573 です。

if(1 == args.Count()){
var t1 = new TestItem("デバイス1");
}
if (2 == args.Count()){
t1.AddMeasured(new Measured("電圧", "V", 1));
t1.AddMeasured(new Measured("電流", "mA", 100));
testItems.Add(t1);
}
上記のようにすると下IF文内のt1が”現在のコンテキスト内に存在しません”となってしまします。
IF分の条件式は例ですがt1の生成と値の格納が同条件でない場合は
どのように処置するべきでしょうか。
やりたいことはテキストファイルから各語を読み出して格納して数値演算(平均値、最大、最小、標準偏差)したいのです。
テキストに格納してある情報は次の順になります。

”項目名1”
”項目名1の測定値1”
”項目名2”
”項目名2の測定値1”
 ・・・
”項目名10”
”項目名10の測定値1”
”項目名1”
”項目名1の測定値2”
 ・・・

1回目の”項目名n”を取得したときに配列(List)を生成し
その後は”項目名n”により選択した生成済みの配列に”測定値n”を格納したいです。
本業はHWよりのためC#基礎がわかって無く申し訳ありません。
でも何とかできることは自分で処理したいと思っています。
よろしくお願いします。
0648デフォルトの名無しさん (ワッチョイ ab3a-/sNf)2016/11/24(木) 10:18:45.81ID:+mUg/yMV0
>>647
if文の外で変数定義する。
『スコープ』の概念を学ぶべし。

今のレベルの基本が分かってない内はvar使わない方が良いかも。
varは便利だし正しく使えば特に害のない機能だけど、意味が分からないうちはやめとこう。
0649デフォルトの名無しさん (ドコグロ MM27-f5kA)2016/11/24(木) 11:09:09.16ID:IyDqbIdrM
>>648
ありがとうございます!
チャレンジしてみます。
0650デフォルトの名無しさん (ワッチョイ a77b-rApL)2016/11/24(木) 12:28:53.06ID:P/Ibr7r50
varは積極的に使うべきだよ。
0651デフォルトの名無しさん (ワッチョイ c748-AQyI)2016/11/24(木) 14:01:47.31ID:4ySrR9x20
>>647
標準偏差は自前で計算してもいいけどMath.NET Numericsというのが既にある(nugetで入れる)
http://ideone.com/kv7bLQ

こういうのってRの方が手っ取り早い気がする
CSVの読み込みからグラフ描画まで揃ってるしな
0652デフォルトの名無しさん (ワッチョイ 5b3c-/sNf)2016/11/24(木) 14:14:09.14ID:G2Ig6Dqz0
>>648
var関係ないやろ
0653648 (ブーイモ MMc7-/sNf)2016/11/24(木) 15:37:41.35ID:cupH4QVAM
>>650
それは同意する。積極的に使うべき。
ただ、スコープの理解がまだの方には少し毒と思っただけ。

>>649
異論も多いようなので、varに関しては先ほどの発言を気にせず自由にやって下さいな。頑張って!
0654デフォルトの名無しさん (JP 0Hdf-sTmH)2016/11/24(木) 17:51:15.84ID:2Y5JG7GhH
質問します。

ファイルの存在を確認する方法についての質問です。

if (System.IO.File.Exists(@"C:\tmp\sample.txt"))
{
MessageBox.Show("ファイルは存在します");
}
else
{
MessageBox.Show("ファイルは存在しません");
}

上記例の場合、
「tempフォルダ内のsample.txtというファイル」
の存在を確認するようになっていますが、
同時に異なる2つのフォルダ内の2種類のファイルの存在を
確認するにはどうすればいいのでしょうか?

C:\tmp1\sample1.txt
C:\tmp2\sample2.txt

が同時に(又は片方だけ)存在する場合の処理を行いたいと思っています。

File.Exists((@"C:\tmp1\sample1.txt")&&(@"C:\tmp2\sample2.txt"))
みたいな書き方はできないんでしょうか?

やってみたらNGになったんで質問した次第です。

よろしくお願いします。
0655デフォルトの名無しさん (ワッチョイ c748-AQyI)2016/11/24(木) 18:09:09.66ID:4ySrR9x20
この場合は
if (File.Exists(@"C:\tmp\sample.txt") && File.Exists(@"C:\tmp\sample2.txt")) {}
if (File.Exists(@"C:\tmp\sample.txt") || File.Exists(@"C:\tmp\sample2.txt")) {}
という風にFile.Existsが2回必要なわけだろ

可変で1個かもしれないし2個以上かもしれないというときは
string[] list = { @"C:\tmp\sample.txt", @"C:\tmp\sample2.txt", };
に対してLINQが使える
if (list.All(x => File.Exists(x))) {}
if (list.Any(x => File.Exists(x))) {}
0656デフォルトの名無しさん (スッップ Sdaf-/sNf)2016/11/24(木) 18:11:35.21ID:HdRBGkCMd
>>654
Exists(..)を&&で繋げば良いよ。
0657デフォルトの名無しさん (ワッチョイ abdc-MM3T)2016/11/25(金) 07:04:44.10ID:9jtEtGtN0
>>655
その場合、
list.All(File.Exists)
list.Any(File.Exists)
の方がスマート
0658デフォルトの名無しさん (JP 0Hdf-sTmH)2016/11/25(金) 09:44:10.37ID:55zEIhIxH
654です。

ありがとうございました。

なるほど、パス名を&&でつなげてもだめですね。
File.Exists(・・・)&&File Exists(・・・)を
にしなきゃダメですね。

やってみたらうまくいきました。

LINQはあまりわかってないんですが、
やっぱり使えれればかなりコードを書くのが楽になるんでしょうか?

時間ができればやってみてもいいかなぁと思っていますが・・・
0659573 (ドコグロ MMcf-f5kA)2016/11/25(金) 10:18:27.69ID:cWogpahDM
>>651 >>653
レスありがとうございます。
勉強になります。

徐々に方向性が見えて来たような気がしています。
ありがとうございます。
0660デフォルトの名無しさん (ワッチョイ 37d9-1MTn)2016/11/25(金) 16:46:17.82ID:3a2jMeJO0
>>655を見て、RMAX未満のint乱数をN回発生させてori[]が含まれている回数を
LINQで数えたいのですが、こんなのになってしまいました
もっと簡単に書ける方法はないでしょうか

const int N = 10000;
const int RMAX = 10;
Random r = new Random();
int c = 0;
int[] ori = {1, 5};

Enumerable.Range(1, N).Select(i => new { j = r.Next(RMAX) }).Select(i => ori.Any(j => j == i.j)).Where(i => i).Select(i => { c++; return 0; }).ToArray(); // 0〜9の中にori[]が含まれているかどうか調べる
Console.WriteLine($"{N}回の繰り返しで 0〜{RMAX - 1} の中にori[]が含まれていたのは {c} 回でした。");
0661デフォルトの名無しさん (オッペケ Sre7-4iO2)2016/11/25(金) 17:23:50.79ID:vVyJsUPAr
Selectに副作用書くな
0662デフォルトの名無しさん (ワッチョイ c748-AQyI)2016/11/25(金) 17:46:39.77ID:k5F1VYSo0
つか毎回乱数作ると検証しようがないよな
int[] randoms = new int[N];
for (int i = 0; i < N; i++)
randoms[i] = r.Next(RMAX);

というのがあったと仮定して以下を実行する
c = randoms.Where(ori.Contains).Count();
0663デフォルトの名無しさん (ブーイモ MMc7-/sNf)2016/11/25(金) 17:51:48.96ID:yM8tzyplM
int count = Enumerable.Range(1, N)
.Select(_ => r.Next(RMAX) )
.Count(ori.Contains);
0664デフォルトの名無しさん (ワッチョイ 27ba-lM3r)2016/11/25(金) 23:44:37.58ID:8749fss/0
検証は普通、同じシードの疑似乱数使うだろ。
0665デフォルトの名無しさん (オッペケ Sre7-4iO2)2016/11/26(土) 05:41:07.62ID:BlR4fLnAr
そこで、Stateモナド登場。
0666デフォルトの名無しさん (ワッチョイ 37d9-1MTn)2016/11/26(土) 15:45:30.50ID:q0gSFGbR0
>>661-663
ありがとうございます

Select()に副作用書くのはListだとForEach()があるのですが、配列だと使えないので
無理矢理感がありますが許してください(汗
0667デフォルトの名無しさん (オッペケ Sre7-4iO2)2016/11/26(土) 15:59:56.88ID:BlR4fLnAr
>>666
許せぬ。
普通に>>663で良いんでないの?
0668デフォルトの名無しさん (ワッチョイ 1349-lVzu)2016/11/26(土) 16:01:54.05ID:pkHe6RQg0
>>666
ゆるさん。
根本的にLINQの使い方が間違ってる。
0669デフォルトの名無しさん (ワッチョイ 37d9-1MTn)2016/11/26(土) 16:46:10.56ID:q0gSFGbR0
>>667-668
駄目ですか
精進します

>>664
こうやってみました
DateTime dt = DateTime.Now; // 乱数のシード値に使う

Random r = new Random((int)dt.Ticks);

// 乱数測定1

Random r = new Random((int)dt.Ticks);

// 乱数測定2

以下続く
0670デフォルトの名無しさん (ワッチョイ 37d9-1MTn)2016/11/26(土) 16:58:09.08ID:q0gSFGbR0
あ、違った

DateTime dt = DateTime.Now; // 乱数のシード値に使う

Random r = new Random((int)dt.Ticks);

// 乱数測定1

r = new Random((int)dt.Ticks);

// 乱数測定2

以下続く
0671デフォルトの名無しさん (ブーイモ MMaf-VGur)2016/11/26(土) 17:05:31.40ID:/HuSQ2djM
public static class EnumerableEx {
public static IEnumerable<int> Randoms(int seed, int max, int count) {
var r = new Random(seed);
for(int i = 0; i < count; ++i)
yield return r.Next(max); }}

c = EnumerableEx.Randoms(seed, RMAX, N).Count(ori.Containts);
0672デフォルトの名無しさん (ワッチョイ abdc-MM3T)2016/11/26(土) 17:27:30.27ID:UC4M2NKY0
>>671
引数のcountは無しで無限ストリームにした方が美しいと思う
有限にしたければTakeで切ればいい
0673デフォルトの名無しさん (オッペケ Sre7-4iO2)2016/11/26(土) 20:57:24.75ID:BlR4fLnAr
>>670
続きは?
0674デフォルトの名無しさん (オッペケ Sre7-4iO2)2016/11/27(日) 02:43:47.55ID:vLOqtuLor
public static IEnumrable<T> Randoms<T>(Func<T> next)
{
while(true) {
yield return next();
}
}

任意の乱数アルゴリズムを渡せるようにと考えたけど、もはやランダムとは無関係だよねww
0675デフォルトの名無しさん (ワッチョイ abdc-MM3T)2016/11/27(日) 07:11:41.91ID:dEf188sX0
>>674
名前が既に機能を表してないのはともかく、これは副作用が前提になるからよくない設計
どこかで副作用を使ってない限りnext()は必ず毎回同じ値になるはず
0676デフォルトの名無しさん (ワッチョイ 370b-PVnu)2016/11/27(日) 13:07:28.68ID:ZDMyX7Jh0
普通に何がしたいのか分からない
0677デフォルトの名無しさん (ワッチョイ 87ce-w12Y)2016/11/28(月) 06:20:00.23ID:d2SeRThv0
乱数列をインデックスで参照したいだけ
なんでしょ?
0678デフォルトの名無しさん (ワッチョイ 87d4-TEJY)2016/11/28(月) 20:53:46.42ID:jgfNB/jg0
実際のプログラムでデリゲート/イベントをどう使うのが便利なのか、理解できる教材・WEBサイト等があれば教えてください
0679デフォルトの名無しさん (ワッチョイ c748-AQyI)2016/11/28(月) 21:37:11.66ID:TQQs9y8p0
https://msdn.microsoft.com/ja-jp/library/ms173171.aspx
0680デフォルトの名無しさん (ワッチョイ 4f4c-/sNf)2016/11/29(火) 10:18:57.84ID:PfRgidpN0
関数ポインタなイメージだわ
0681デフォルトの名無しさん (ワッチョイ 87ce-w12Y)2016/11/30(水) 00:56:16.15ID:H3buRLlE0
Win32APIのコールバックに渡せる時点で外部からの見え方は関数ポインタそのもの
そこにどうやってインスタンもねじ込んでるのか正確には知らないけど
関数ポインタをユニークなヒープ領域に書いてそれを渡して呼び出させる
みたいな気持ち悪いことを裏でやってるんだろう
0682デフォルトの名無しさん (ワッチョイ 87ce-w12Y)2016/11/30(水) 01:03:41.03ID:H3buRLlE0
少なくとも1度はヒープ上でコード実行してるはずなんだけど
スパイウェア認定されたりしないのはなぜだろう
0683デフォルトの名無しさん (ワッチョイ 279d-lM3r)2016/11/30(水) 01:04:12.90ID:w8bfAEOD0
動けばいい
0684デフォルトの名無しさん (ワッチョイ a77b-rApL)2016/11/30(水) 02:53:33.77ID:5s/CT6+70
>679
Msdnの説明なんて99%糞だよな。頭和杉、マクロバカって書いてある本を
見たことがある。
 でもたまに凄くわかりやすいのがある。今日まさにそれに出会って
感想欄に

MSDNにしては本質をついていてわかりやすい。こんなにわかりやすい
せつめいは初めてだ。
これはMSDNの文章とは違う素晴らしい文章だ。たぶん外注のライターが
書いたものだと思うが、こういう外注さんは大事にしなさい。
ありえないとは思うが、もし万が一社員が書いたものならぜひともボーナス
を弾んであげてほしい。

と書いておいた。
0685デフォルトの名無しさん (ワッチョイ 5b3c-0AhV)2016/11/30(水) 02:59:23.96ID:PzfaC3Zi0
精神を病んでいる様だからカウンセラーにでも相談したまえ
0686デフォルトの名無しさん (ワッチョイ abdc-MM3T)2016/11/30(水) 07:35:52.74ID:TOIBVM0F0
>>681
マネージコードからの通常のInvokeや一般のクラスやインターフェースの仮想メソッド呼び出しでも
JITのために同様の仕組みがあるらしい
デリゲートが関数ポインタを持ってるんじゃなくて、呼び出し元(call siteという)ごとのキャッシュとして
ネイティブ関数を生成するみたいだ
0687デフォルトの名無しさん (ワッチョイ a77b-rApL)2016/11/30(水) 10:16:51.02ID:5s/CT6+70
Delegateはクラスを着ていない素っ裸の抽象メソッドだと思う。だから
デレッってしてる。
クラスと同様にインスタンスを作成して使うけれども抽象メソッドだから
実態のメソッドを代入して使用する。
その時に実態のメッソッドから名前を剝ぎ取った素っ裸のメソッドが
ラムダ式だ。

スッポンポンというところがデレゲートとラムダは似ている。
0688デフォルトの名無しさん (ワッチョイ a77b-rApL)2016/11/30(水) 10:35:50.72ID:5s/CT6+70
delegate int delSm(int i); //型紙delSmを作成する。 
void test() {  
 delSm Sm;         //型紙delSmから洋服Smを作成 
 Sm = (x => x * x);  //素っ裸のメソッドにSmを着せる  
 int j = Sm(16);     //j = 256  
}  
0689デフォルトの名無しさん (ワッチョイ 5c03-Z4eY)2016/12/01(木) 16:54:34.62ID:0Um+ha3M0
C#の質問で無く恐縮ですが
VS2013でC#コード入力していますが
補完機能の振る舞いがよくわからないことがあります。

例えば"int"と入力する場合
i→n→tとキーインすると
補完候補は"int"の表示が選択されています。
ここでスペースをキーインすると
エディタには"iint"と入力されてしまいます。

どういうことでしょうか?

returnもrreturnとなってしまいます。
0690689 (ワッチョイ 5c03-Z4eY)2016/12/01(木) 16:55:46.18ID:0Um+ha3M0
もしかしてATOKのせいでしょうか。
0691デフォルトの名無しさん (ワッチョイ 6bc0-/mAi)2016/12/01(木) 19:32:35.80ID:Zf0m27Yo0
TABキーで補完すればいいんじゃね
0692デフォルトの名無しさん (ワッチョイ d1d6-NTgB)2016/12/01(木) 23:26:48.62ID:iYDC/6Ae0
>>689
ATOK使ってるけど普通に使えてるな
VSのサービスパックでも当てたら直るんじゃね?
0693689 (ワッチョイ 5c03-Z4eY)2016/12/02(金) 08:57:18.65ID:31Pwg6Qz0
>>691 >>692
ありがとうございます。

TABにしても同じなんです。
SPためしてみます。

と、書いていましたが
たった今VS2013起動して試してみたところ
問題有りませんでした。

原因はわかりませんが再起動すれば良いようですね。
お騒がせしました。ありがとうございました。
0694初心者 (ワッチョイ 50cf-yaSi)2016/12/02(金) 14:04:42.72ID:mPN6uvNG0
C#の勉強したいんですけど
visualstudioのどれをダウンロードすればいいですか?一番左ですか?
0695デフォルトの名無しさん (アウアウオー Sabe-k+pW)2016/12/02(金) 14:22:34.32ID:KR/8JQ+qa
オッスオラ極右
0696デフォルトの名無しさん (フォォーッ MM9b-NTgB)2016/12/02(金) 14:24:44.13ID:hCuw5ExfM
>>694
http://download.microsoft.com/download/8/0/3/8036DBC2-135E-431D-86FE-C2C53562C9F1/vs_community_JPN.exe
0697デフォルトの名無しさん (ワッチョイ 98d4-NTgB)2016/12/02(金) 14:44:59.65ID:ulrrSATP0
いままでPro買ってたけどCommunityでいい気がしてきた
0698デフォルトの名無しさん (オッペケ Sr8d-F2U0)2016/12/02(金) 15:12:50.24ID:B5+8wL6Vr
コミュニティ使っててアプリ作って条件以上の売上出たらどうすればいいの?
0699デフォルトの名無しさん (ワッチョイ 2a02-0Nhh)2016/12/02(金) 15:32:17.74ID:mFAqdh2w0
買えばいいんじゃね、そんなんに売れたんなら
0700デフォルトの名無しさん (ワッチョイ 9220-NTgB)2016/12/02(金) 22:45:54.98ID:5RQuVDtH0
C#というわけではなく、初歩的なことかと思いますが
テスト要領書って、本来コーディング前に作っておくものでしょうか?

うちの会社じゃ
いつもコーディングの後半に作ってるんですが
一般的にはどうなんだろうと思いまして
0701デフォルトの名無しさん (ワッチョイ 4dcb-g21N)2016/12/02(金) 22:56:52.05ID:2vcaPjiT0
マルチポストしてんじゃねえぞチンカス野郎
0702デフォルトの名無しさん (ワッチョイ 115b-25R2)2016/12/02(金) 23:15:26.91ID:9K0+rqji0
データベース使ったサンプルアプリ作ってみたいのですが、データベースは何を使ったらいいですか?
0703デフォルトの名無しさん (ワッチョイ f4cb-yaSi)2016/12/02(金) 23:44:10.13ID:UcIXa3VL0
>>702
モノによって癖があるよ
インストール方法からして上手くいかないポイントが違う

業務でWindowsアプリ作るならSQLServerExpressがオススメ
絶対使うしね
趣味でレンタルサーバー使うならmysqlが多いかも
0704デフォルトの名無しさん (ワッチョイ d1d6-NTgB)2016/12/02(金) 23:48:17.42ID:kbaBWwKx0
ファイルコピーだけで簡単に動かしたいのならSQLiteもいいぞ
0705デフォルトの名無しさん (ワッチョイ f4ce-BRVC)2016/12/02(金) 23:58:41.69ID:P1j76Eyi0
Windows標準で入ってるJet DBが何も入れる必要ない点でオススメ
0706デフォルトの名無しさん (ワッチョイ 2aaf-MLbx)2016/12/03(土) 00:46:33.44ID:6QJpBGmN0
SQLiteは便利で面白い
Firefoxのクッキーの管理なんかにも使われてる
0707デフォルトの名無しさん (ワッチョイ 115b-25R2)2016/12/03(土) 09:19:05.56ID:/EDU3A450
>>703-706
ありがとうございます!
さっそく調べてみます!
0708デフォルトの名無しさん (ワッチョイ 92e5-/mAi)2016/12/03(土) 10:35:13.28ID:OhSejOMk0
普段threadを生成してやっていた非同期処理を
バージョンアップに合わせてasync await使って実装してみようと思います。

非同期を意識しない場合の元ソースは以下のコード

private void btn_click(省略)
{
    var list = getList("なんたら");
}

private List<string> getList(string target)
{
   var list =  hogehoge関数
   return list ;
}

この中で呼び出し元の btn_click から getList関数を非同期で呼び出すことは可能でしょうか?
可能であればいずれ同期的に使う可能性も含めて getList関数には手を入れたくはないのですが、入れられないのであれば手を加えても問題ありません。

有識者の皆様、何かしらヒントでもご教示いただけれb幸いです。
0709デフォルトの名無しさん (ワッチョイ 92e5-/mAi)2016/12/03(土) 10:42:36.75ID:OhSejOMk0
連投失礼
記述ミス修正

getList関数には手を入れたくはないのですが、入れられないのであれば手を加えても問題ありません。
↓
この中で呼び出し元の btn_click から getList関数を非同期で呼び出すことは可能でしょうか?
可能であればいずれ同期的に使う可能性も含めて getList関数には手を入れたくはないのですが、入れなければいけないのであれば手を加えても問題ありません。

Task<List<string>>にしないといけないんだろうなぁ…とは思いますが…。
0710デフォルトの名無しさん (ワッチョイ 2a02-0Nhh)2016/12/03(土) 10:56:58.35ID:rfPwjFy00
普通は同期版と非同期版と二つ定義するんじゃないのか
getListは同期関数にしたいの?非同期関数にしたいの?
0711デフォルトの名無しさん (ワッチョイ 39dc-Cf2b)2016/12/03(土) 11:00:28.76ID:x7z2pgeG0
なんか勘違いしてそう
async使うなら最終的にIOやユーザー操作でブロックされるところまで全部非同期で繋がないと意味ないよ?
0712デフォルトの名無しさん (ワッチョイ 839d-5gNI)2016/12/03(土) 11:03:34.95ID:n86jitUO0
var list = await Task.Run(() => getList("..."));
こういうことじゃないの?
0713デフォルトの名無しさん (ワッチョイ 39dc-yaSi)2016/12/03(土) 13:23:04.99ID:x7z2pgeG0
ところで、asyncを全面的に使ってるとストリームにたかが数バイトを書き込むだけみたいな
時間的粒度の小さいメソッドでもいちいちawaitせざるを得ないことがよくあると思うんだけど、非効率だからまとめて処理できないもんかな
個人的には、全ての書き込みがバッファリングされることが保証されてるAsyncStreamみたいなクラスがあって
後でにまとめてawait FlushAsyncするという考え方の方がWriteAsyncより使いやすいと思うんだけど
0714デフォルトの名無しさん (ワッチョイ 92e5-/mAi)2016/12/03(土) 13:33:41.53ID:OhSejOMk0
>>710-712
イメージ的には

getList←同期
getListAsync←非同期(内部でgetListを呼ぶ)
のようになるのかなと。

もとのgetList自体は同期処理で動くようにしておきたかっただけという簡単なものでした。
>>712さんの言うところで出来てしまいました…。

あっさり過ぎて…ありがとうございました。
これでUIが固まらない為だけの面倒な非同期を書かなくて済みそうです。
0715デフォルトの名無しさん (スッップ Sda8-wK09)2016/12/03(土) 17:28:43.65ID:6dOdOU6od
商用で使えるフリーの開発環境ってありますか?
0716デフォルトの名無しさん (ワッチョイ 39dc-yaSi)2016/12/03(土) 17:42:27.55ID:x7z2pgeG0
>>715
小規模な企業までならVS Communityが商用利用可
Communityが使えない規模ならVS Express
0717デフォルトの名無しさん (ワッチョイ 8d4a-JWTN)2016/12/03(土) 21:57:51.27ID:NEbgZC1U0
>List<T>も2次元にはできないが、そもそも2次元にする必要がない
list<list<T>>で二次元じゃあないの?
0718デフォルトの名無しさん (ワッチョイ 839d-5gNI)2016/12/03(土) 22:06:20.99ID:n86jitUO0
広義の二次元だけど狭義の二次元ではない、かな
多次元配列とジャグ配列で呼び分けるから
0719デフォルトの名無しさん (ワッチョイ 1ee1-yaSi)2016/12/03(土) 22:51:22.62ID:1XG4MZmv0
>>713
その程度なら自分で実装すればよくね?
0720デフォルトの名無しさん (ワッチョイ 6b0d-BRVC)2016/12/03(土) 23:02:24.03ID:nNmCZ+K50
TreeViewでファイルエクスプローラーを作りましたが
ファイルやフォルダの数が多すぎると必ずフリーズします
例えば肥大化した"C:\Windows\WinSxS"を表示するにはどうしたらいいですか?(私の環境ではサブフォルダ数が1万数千あります)
0721デフォルトの名無しさん (ワッチョイ f4ce-BRVC)2016/12/03(土) 23:27:08.60ID:55Oi6B7P0
>>720
そもそも1万件とか画面に一度に表示できる数じゃないんだから
一部だけ出すとか表示方法を工夫する以外にないよ
既存のファイラーとかを参考にしてみたらどうかね
0722デフォルトの名無しさん (ワッチョイ f4cb-yaSi)2016/12/04(日) 00:29:04.69ID:tP3D55j/0
>>720
開いたフォルダのみ中身を表示してはどうだろうか?
0723デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)2016/12/04(日) 20:20:27.84ID:HFDVK7VF0
Rxをテストしようとおもうのだが、

using System.Reactive.Linq;

これを追加しても
エラー CS0234 型または名前空間の名前 'Reactive' が名前空間 'System' に存在しません (アセンブリ参照があることを確認してください)。

となる。参照を探してもmscore.libしかないがこれをチェックすると
「すでにビルドに組み込まれているのでエラー」になる。

どうしたらいいの?
0724デフォルトの名無しさん (アウアウカー Sa05-F2U0)2016/12/04(日) 20:35:11.66ID:iX2mGjzba
Rxはインストールしたの?
標準ではないよ
0725デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)2016/12/05(月) 06:04:42.72ID:kVcVuvgX0
VS Community 2015で
Nuget パッケージマネージャー画面でSystem.Reactiveをインストールしようと
する
設定は参照にして、パッケージソースは「すべて」
 Nuget.org
 packagesource
 Microsoft and .NET
 Microsoft Visual Studio Offline Package
にしている。

'.NETFramework,Version=v4.5.2' を対象とするプロジェクト 'WpfApp1' に関して、
パッケージ 'System.Reactive.3.1.1' の依存関係情報の収集を試行しています
Unable to load the service index for source http://packagesource.
この要求の送信中にエラーが発生しました。
リモート名を解決できませんでした。: 'packagesource'
========== 終了 ==========

インストールできない。
http://packagesource. このエラーが出るのはパッケージマネージャの設定に
間違いがあるんだろうか?
0726デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)2016/12/05(月) 07:19:43.60ID:kVcVuvgX0
PM> Install-Package System.Reactive
Install-Package : ソース '' 内でパッケージ 'System.Reactive' が見つかりません。

つまりパスが違っている。DefaultPathはどこに設定するのだろうか?
0727デフォルトの名無しさん (ワッチョイ 5c7b-BMT5)2016/12/05(月) 07:22:18.16ID:kVcVuvgX0
あれっ、頭にきてボタンを押しまくっていたらインストールできた。
なぜだ? わからんが、とにかくインストールできた。手当たり次第に
出たらめにやるのがいいみたいだ。
0728デフォルトの名無しさん (アウアウオー Sabe-wK09)2016/12/05(月) 21:52:16.25ID:7n2NXvP5a
「n = n + 1」「n++」「n += 1」

の中で速度が速い、またはメモリの消費が少ない手段はどれですか?
今回の使用目的はループ内でのカウンタです

また、それぞれの使い分けがわからないので適切な使用箇所があれば教えてください
0729デフォルトの名無しさん (ワッチョイ 9213-ggLi)2016/12/05(月) 21:55:01.48ID:+86vS9TV0
>>728
差はないから好きにすればいい
0730デフォルトの名無しさん (ワッチョイ 467d-NTgB)2016/12/05(月) 22:28:32.97ID:k7XpTrID0
++はコピーが入る
0731デフォルトの名無しさん (ワッチョイ 4d7b-1jzX)2016/12/05(月) 22:44:22.01ID:VOjnBi1e0
出たな、半可通
0732デフォルトの名無しさん (オッペケ Sr8d-E9Xg)2016/12/06(火) 02:55:06.76ID:4zSpj2YCr
>>727
VSのnugetのインストーラが古いので更新する必要がある場合がある。
0733デフォルトの名無しさん (アウアウカー Sa67-OnqS)2016/12/09(金) 10:45:19.60ID:0JyYFlmma
>>728
cpy add 1 mov
inc
add 1
0734デフォルトの名無しさん (JP 0H5f-l58V)2016/12/09(金) 10:50:44.15ID:u4ONmpntH
それだけで文にするならどうせ最適化されるでしょ

部分式として使ってるならしらんけど
0735デフォルトの名無しさん (ワッチョイ 07ce-3ple)2016/12/10(土) 21:08:20.94ID:9pHrXFRT0
カウンタならどうでもいいけど
インデックスとして使うならunsafe付けてポインタ扱った方がいい
0736デフォルトの名無しさん (ワッチョイ d349-mlnL)2016/12/10(土) 21:20:26.17ID:THyFY8cN0
そんなのが必要になる場合は限られる。
初心者スレでunsafeを気軽に進めない方が良い。
0737デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/10(土) 21:36:24.82ID:MAlDTlrl0
fixedはpinのオーバーヘッドがあるから頻繁に使うとかえって遅くなるよ
0738デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 06:33:33.19ID:caNoEqSZ0
>TreeViewでファイルエクスプローラーを作りましたが
>ファイルやフォルダの数が多すぎると必ずフリーズします
>例えば肥大化した"C:\Windows\WinSxS"を表示するにはどうしたらいいですか?
>(私の環>境ではサブフォルダ数が1万数千あります)

自分もこれで悩んでる。1分ごとに測定したデータが1ファイルごとに1年分ある。
 60x20x360=43万ファイル
これをGetFilesでファイル名を取り出して集計処理しようとするとファイル読み出しで
ハングする。

やり方がよくわからないので先輩に聞いたら

「Application.EentDoを入れたらキーが効くのでハングしないよ」

というアドバイスをもらってやってみたが、ダメだった。

で自分で少し調べてみたんだが、
 UIの同一スレッドでこれをやると原理的にだめ。処理が重すぎてかならずハングする。
 スレッドを分ける方法として、タスクプールを使う方法とスレッド生成がある。
 タスクプールを使うのがよい。Async/Await
というところまでは分かったんだが、どうやって実現したらいいのかまだよくわからん。
0739デフォルトの名無しさん (ワッチョイ 07d4-QGPA)2016/12/11(日) 06:47:31.93ID:fUQnV1N+0
非スタティックなメソッドを呼び出したい場合に、
new クラス名.メソッド名();
とするのはなにか問題があるのでしょうか?
0740デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 08:40:31.81ID:caNoEqSZ0
>739
 それはコンパイルエラーになるから問題ないと思うが、、、
0741デフォルトの名無しさん (ワッチョイ ebdc-6LJV)2016/12/11(日) 09:12:08.77ID:xUW3RgdE0
>>739
new クラス名().メソッド名();
の間違いと仮定した上での回答だが、
毎回必ずそのパターンで使用されるのであれば実質staticメソッドと変わらないからstaticメソッドにすることも検討すべき
パラメータが複雑な場合にBuilderパターンとFluentなスタイルを組み合わせて、
new Request().WithEncoding(UTF8).with…().Send();
みたいにするのは丁寧に作られてるライブラリだとよくあるけど
0742デフォルトの名無しさん (ワッチョイ 07cb-1E9w)2016/12/11(日) 09:24:54.90ID:G916gL+V0
>>738
仕様が決まってない問題をAPIの問題にすり替えてる
超たくさんファイルがあるとき結局どうしたいの?
全部表示したいの?一部表示したいの?
ユーザに指定させて表示したいの?
0743デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 09:42:50.42ID:caNoEqSZ0
仕様は明白だとおもうが、、、
 TreeView表示と同じだが、ファイルを読みだしてグラフ表示しながら同時にファイル
読み出しとその集計処理もやる必要がある。
 100ポイントづつを読みだして処理して表示する。
 続きを100ポイント読みだして処理して表示する。
このようにシングルスレッドのなかで実現できれば、それが最も良い。

しかし、処理を分割するのはGetFilesのようなライブラリを
使う場合は中断して途中から再開は不可能だ。

そこで、GetFilesは別タスクで動かして非同期処理をするパイプを作ればいい。
task1 thread
data = getfiles();
FIFO.add(data);

UI thread
tree.add( FIFO.read());
というのが検討中の内容だ。
0744デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/11(日) 09:42:54.26ID:xUW3RgdE0
>>738の場合は小手先のコーディングでどうするという問題じゃなくて
SparkとかHiveとか使えばいいんじゃないか
0745デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 09:51:31.24ID:caNoEqSZ0
それちょっと調べてみるが、C#にキューってのがあるが、それじゃだめなの?
0746デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/11(日) 09:54:31.80ID:xUW3RgdE0
>>745
抽象度が全然違う
ちゃんとしたビッグデータ処理基盤を使えば、
データを全部HDFSに放り込んでおきさえすれば簡単にデータセット全体にクエリがかけられる
いちいち要件に応じて作り込まなくていい
0747デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 09:55:28.07ID:caNoEqSZ0
>744
そんな商用ツールは見掛け倒しと思って間違いない。第一広まらないy。
0748デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/11(日) 09:58:51.14ID:xUW3RgdE0
>>747
オープンソースだしデータ処理の世界じゃクソ有名だよ?
脊髄反射で拒否する前にちょっとは新しいことに興味持ってみてもいいんじゃないかな、
余計なお世話かもしれないけど
0749デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 10:05:36.19ID:caNoEqSZ0
えっ、オープンソースなのか。俄然興味がわいてきた。w
0750デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 10:07:25.47ID:caNoEqSZ0
普通のDBに比べてSpark、Hiveは何がいいの?
0751デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 10:12:32.86ID:caNoEqSZ0
グラフ表示するような案件だとSpark SQLがいいみたいだね。 速い。
0752デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/11(日) 10:16:20.28ID:xUW3RgdE0
>>750
ざっくりいえば大量データのバッチ処理が速い
レイテンシが大きいのでリクエストをリアルタイムに処理して結果を返すようなものには向いていない
0753デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 10:33:30.52ID:caNoEqSZ0
C#を最近勉強をはじめたばかりだが、これはすごい言語だな。まさにアルゴリズムの最高哲学
という印象を受けた。これは面白い。
しかし目移りしてどこから取り掛かったらいいのか困る。VBをチョロっとしか経験がないので
C#には新しい概念がありすぎてミクロ的にもマクロ的にはほんとに目移りする。
 LINQ、WPF、RX、ざっとみたところだ。

いままだ右も左もわからないので取り合えず。適当にReactive Extention からマスターして
みようと思っているが、、、、
0754デフォルトの名無しさん (ワッチョイ 0b7b-ymeu)2016/12/11(日) 11:12:34.07ID:n3GfLzAe0
>>739
newより.の方から優先順位が高いので
その例ではクラス名.メソッド名 のスタティックメソッドを呼び出して、その戻り値をnewする事になる

なので、newをカッコでくくる
(new Date).toISOString();
0755デフォルトの名無しさん (ワッチョイ 0b7b-ymeu)2016/12/11(日) 11:13:40.49ID:n3GfLzAe0
ああ、すまん、Javascriptスレと間違えてたわ
0756デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/11(日) 11:16:14.04ID:xUW3RgdE0
Rxはマイナーな技術だしasync/awaitがわかってれば十分カバーできるからスルーでOK
WPFも終わった技術だから今更要らない
専業コーダーじゃないんなら小手先の技術に拘るのはほどほどにして
マイクロサービス的な連携だとかクラウド活用だとかもっとマクロな領域へシフトしていった方がいいと思うよ
0757デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 13:36:37.71ID:caNoEqSZ0
>756
 言わんとするところはよくわかる。考え方の本質は同じだとおもう。
できれば楽にプログラムをしたい。

 WPFは終わったのだろうか? たしかに流行ってないよね。w
でもMVVMの考え方は間違っていないと思う。
Rxはマイナーな技術なんだろうか? 応用できる範囲がどの程度あるのか
はよくわからない。
 LINQには少なからず衝撃を受けたので、Push型のRXはなにかとてつもない発見
がありそうな予感がする。
もっともLINQというよりはIEnubableとかデザインパターンの考え方に衝撃を受けた。

マクロ的な技術を使う上でもミクロをある程度は理解していないと、無駄な使い方
をしてしまう可能性があるように思う。その意味では細部まで100%理解しよう
なんて思わないが、60%くらいは理解しておきたい。
0758デフォルトの名無しさん (ブーイモ MM07-caEn)2016/12/11(日) 13:48:02.76ID:Z923MDQCM
ネタや実験以外でRxなんて使ってる現場存在するのか
0759デフォルトの名無しさん (ワッチョイ 5b79-pq3j)2016/12/11(日) 14:07:20.29ID:bG1axWcs0
フロントならangularについてくるから使うけどC#では使ったことない
0760デフォルトの名無しさん (ワッチョイ 5b79-pq3j)2016/12/11(日) 14:12:00.35ID:bG1axWcs0
angularでもRxはtoPromiseしか使わないから使ってないような物か
0761デフォルトの名無しさん (ワッチョイ d349-mlnL)2016/12/11(日) 14:12:51.19ID:31wztqOV0
>>743
GetFiles()って、Directory.GetFiles()のこと?
それだったら、代わりにDirectory.EnumerateFiles()を使えば逐次処理出来るよ。
0762デフォルトの名無しさん (ワッチョイ d349-mlnL)2016/12/11(日) 14:29:28.43ID:31wztqOV0
>>739
恐らく、やりたいのは
(new クラス名).メソッド名();
ってことだと思うけど、何度も使う場合は毎回newすることになるので非効率。
また、IDisposeなクラスの場合はDispose()を呼べない。
上記2つに問題ないなら使っても構わない。staticメソッドにすべきだけどね。
0763デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 14:49:28.21ID:caNoEqSZ0
>それだったら、代わりにDirectory.EnumerateFiles()を使えば逐次処理出来るよ。

それなかったな。 会社がVs2008なのでw
Vs2008で.net Framework4.5とかつかえるんだろうか?
0764デフォルトの名無しさん (ブーイモ MM07-caEn)2016/12/11(日) 14:58:46.78ID:Z923MDQCM
なきゃ実装すればいい
0765デフォルトの名無しさん (ワッチョイ cb5b-w4ID)2016/12/11(日) 14:59:38.20ID:PxfwJXGz0
こんな感じで構造体配列の中身をIntPtrにコピーしたいんですが
どういう方法がありますか?
struct A{ int x=0,y=1,z=2; }
A a = new A();
IntPtr ptr;
Marshal.StructureToPtr(a, ptr, false);
0766765 (ワッチョイ cb5b-w4ID)2016/12/11(日) 15:00:53.89ID:PxfwJXGz0
>>765 すいません。領域確保(AllocCoTaskMem)のところは省略してます。
0767デフォルトの名無しさん (オッペケ Sr27-w4ID)2016/12/11(日) 15:40:06.69ID:pNKp5sE/r
List<string> list = new List<string>() {"hage", "namahage"};
List<string> list = new List<string> {"hage", "namahage"};

どっちもいけるんだけどどう違うの?
0768デフォルトの名無しさん (ワッチョイ 07cb-1E9w)2016/12/11(日) 15:41:48.31ID:G916gL+V0
>>743
でも現実には処理が間に合わないわけじゃん
それでも一気に表示する仕様は変えないのか?
エクスプローラーではできてるのか?とか
Windowsのコピーって動作だって早く終われば進捗ウィンドウなんて出さないけど
長くかかれば進捗ウィンドウが出てくるわけよ
0769デフォルトの名無しさん (ワッチョイ d349-mlnL)2016/12/11(日) 15:48:11.13ID:31wztqOV0
>>763
肝心な条件を後だしとか酷いな。

Directory.EnumerateFiles()は.Net 4からだけど、VS2008は.Net3.5までだな。
.Net3.5じゃ、Async/AwaitどころかTaskも使えないぞ。
>>739で用語が混じってるけど、スレッド/スレッドプール/タスクね。
0770デフォルトの名無しさん (ワッチョイ d349-mlnL)2016/12/11(日) 15:55:26.64ID:31wztqOV0
Directory.GetFiles()は全てのファイルを取得するまで処理が戻ってこないから、バックグラウンド処理にした所で結局待たされる。
逐次処理がしたいなら、Win32API使ってDirectory.EnumerateFiles()のようなものを独自実装するしかないな。
0771765 (ワッチョイ cb5b-w4ID)2016/12/11(日) 17:07:16.26ID:PxfwJXGz0
こんな風に構造体の配列の要素ひとつずつをIntPtrで確保した領域にコピーしようと
したのですが、こういう方向性では無理ですか?
IntPtr ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(A))*a.Length);
for(int i = 0; i < a.Length; ++i){
Marshal.StructureToPtr(a[i], ptr+i*size, false);
}
0772765 (ワッチョイ cb5b-w4ID)2016/12/11(日) 17:20:36.88ID:PxfwJXGz0
>>771 あーこれで問題なくいけてましたwお騒がせしました。
0773デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 17:56:21.30ID:caNoEqSZ0
>770
そういうことか。 それでDoEventが聞かなかったんだね。

>769
Net4をダウンロードして、参照すればいいだけかとおもっていたが
むりか? 
0774デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 18:00:11.20ID:caNoEqSZ0
>770
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\test");
System.IO.FileInfo[] files =
di.GetFiles("*.txt", System.IO.SearchOption.AllDirectories);

//ListBox1に結果を表示する
foreach (System.IO.FileInfo f in files)
{
ListBox1.Items.Add(f.FullName); ここでキューにいれればいいやん。

}
0775デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 18:06:46.94ID:caNoEqSZ0
>でも現実には処理が間に合わないわけじゃん
>それでも一気に表示する仕様は変えないのか?

キューから取り出して表示するんなら、UIがわで順次表示できるよ。
問題はUIで超重たい処理がはいるのでハング状態になるということだけ
でしょ。
UIが動けば、ブレーク中断したり任意にできる。
0776デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/11(日) 20:18:29.55ID:caNoEqSZ0
SparkはC#サポートしてないよ。C#からどうやってつかうの? 
0777デフォルトの名無しさん (ワッチョイ ebdc-6LJV)2016/12/11(日) 22:29:10.18ID:xUW3RgdE0
そんなもん別プロセスでやりゃいいでしょ
パラメータや結果の受け渡しはRPC(IPC)使ってもいいけど、今回の要件ならファイルベースでもオーバーヘッドは全く無視できる
0778デフォルトの名無しさん (ワッチョイ 07cb-1E9w)2016/12/11(日) 22:30:49.68ID:G916gL+V0
一個一個入れて描画されてるから遅かったりして?
0779デフォルトの名無しさん (ワッチョイ d723-xm+r)2016/12/12(月) 01:48:31.95ID:jfe+O/Es0
>>771
.NET 4.0以降ならこういうのもあるよ、Marshal.AlignedSizeOf<T>()でアライメントされるが
https://msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.safebuffer
派生クラスでhandleに確保済みポインタを設定し、Initialize<T>()等でポインタ領域も指定

StructureToPtrはジェネリックメソッドでさえも非ジェネリックのラッパーっぽいので
パフォーマンスは期待できない、unsafeで良ければ構造体ポインタ使った方が良いかもね
0780デフォルトの名無しさん (ワッチョイ cb5b-w4ID)2016/12/12(月) 02:20:55.85ID:JnfesTFd0
>>779
おぉ〜情報ありがとうございます!
なるほどそういうのもあるんですね。
教えて頂いた事を参考にさせて頂いてどうやるかもうちょっと考えてみます。
0781デフォルトの名無しさん (ワッチョイ ebdc-6LJV)2016/12/12(月) 06:39:25.29ID:w8oqDcFY0
bittableな構造体ならマネージ配列にGCHandleを割り当ててAddrOfPinnedObjectという手もあるよ
unsafeならfixedステートメントがだいたい等価
いちいちアンマネージなバッファを割り当てたり更新内容をマネージコードに書き戻したりしなくていいから楽
0782デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/12(月) 08:05:25.67ID:Jwz8x4f60
>そんなもん別プロセスでやりゃいいでしょ
>パラメータや結果の受け渡しはRPC(IPC)使ってもいいけど、今回の要件なら
>ファイルベースでもオーバーヘッドは全く無視できる

全然意味がわからない。C#でCSVを作ったとして
1.C#からScalarにクエリを送信して、
2.Sparkの処理終了を待つ
3.結果を受信する。

これをC#でプログラムして、Scalarでもプログラムするってこと?
言うのは簡単だが、、、、例でもなきゃ調べてプログラムするのに1週間はかかりそう。w
本質的な情報が欠落しているとおもうよ。こんなのは初心者には全然意味がわからない。
0783デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/12(月) 08:06:12.67ID:Jwz8x4f60
>777
こういうのを使えってことだろうか?
 Mobius: C# API for Spark
0784デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/12(月) 08:10:10.92ID:Jwz8x4f60
var lines = sparkContext.TextFile(@"hdfs://path/to/input.txt");
var words = lines.FlatMap(s => s.Split(' '));
var wordCounts = words.Map(w => new KeyValuePair<string, int>(w.Trim(), 1))
.ReduceByKey((x, y) => x + y);
var wordCountCollection = wordCounts.Collect();
wordCounts.SaveAsTextFile(@"hdfs://path/to/wordcount.txt");

こんな感じでC#からSparkをコントロールしたいのだが、もっとも一般的で初心者向け
な簡単な方法はなにでしょうか?
0785デフォルトの名無しさん (ブーイモ MM2f-6LJV)2016/12/12(月) 08:30:36.13ID:FdLiOBdBM
>>784
それを普通にScalaかPythonかJavaで書いてC#からProcess.Startで呼べばいい
なんでもC#でやる必要ない
0786デフォルトの名無しさん (オッペケ Sr27-l58V)2016/12/12(月) 11:23:30.02ID:FEnMQE8Ar
誰も>>767に答えられないの?
0787デフォルトの名無しさん (ブーイモ MM2f-6LJV)2016/12/12(月) 11:31:59.68ID:FdLiOBdBM
>>786
違いはない
0788デフォルトの名無しさん (アウアウオー Sa3f-ff1P)2016/12/12(月) 11:55:48.82ID:DdSBjDaJa
どうでもいいけどここにちゃんとした説明があるな
https://msdn.microsoft.com/ja-jp/library/bb308966.aspx#topic12
0789デフォルトの名無しさん (ワッチョイ 277b-gb6D)2016/12/12(月) 14:45:07.46ID:Jwz8x4f60
>785
なるほど。
 傾向を掴むだけの場合にはいいけれども、アプトプットの表現を加工したいような
場合にはやはりC#でないと、、、となって結局はC#が必要になるような気がする。

JavaもC#も言語的にはそんなに変わらないが、インテリセンスのないようなIDE
では作業できないと思わないか?
Scalaとか触ってはみたがインテリセンスがないのでこれでは使えない。
インテリセンスがあればうろ覚え程度でもなんとかなる。
0790デフォルトの名無しさん (ワッチョイ b741-mm6H)2016/12/12(月) 15:32:39.38ID:9sS+uj7w0
未指定だと
Javaはpublicに
C#はprivateになるのは
かなりデカイ違い
0791デフォルトの名無しさん (ワッチョイ 5b79-pq3j)2016/12/12(月) 15:56:55.39ID:snQzvIqt0
>>790
javaはppだぞ
0792デフォルトの名無しさん (ワントンキン MMef-g0tO)2016/12/12(月) 16:46:36.53ID:cpVlzpwxM
peek to peek ?
0793デフォルトの名無しさん (ワッチョイ 5b79-pq3j)2016/12/12(月) 17:00:27.95ID:snQzvIqt0
package private
0794デフォルトの名無しさん (ブーイモ MM47-caEn)2016/12/12(月) 18:52:15.45ID:VeOEVzI1M
えっJavaってIDEにインテリセンスもないのか
0795デフォルトの名無しさん (ワッチョイ 5b79-pq3j)2016/12/12(月) 19:44:00.02ID:snQzvIqt0
>>794
Ctrl+spaceで出すか、設定からいつでも出るようにしないといけない
0796デフォルトの名無しさん (ワッチョイ 5f73-drn7)2016/12/12(月) 23:05:44.03ID:dBjxs9jc0
Datatablのフィールドに氏名があったとして
Linqで荒川のindex(rowの位置)を取得するにはどう書けばいいのですか?
0797デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/12(月) 23:11:46.39ID:w8oqDcFY0
>>796
そんなことはしない
データソースに直接クエリするべき
0798デフォルトの名無しさん (ワッチョイ 5f73-drn7)2016/12/12(月) 23:30:47.31ID:dBjxs9jc0
>>797
indexをforで探して別のフィールドの国語、数学の点を変えるでやっているんだけど
forじゃなくてLinqで探せないかなと思って、forよりLinqのが早い?かなと
0799デフォルトの名無しさん (ワッチョイ 6b23-WrC4)2016/12/12(月) 23:34:13.53ID:/DQxiOau0
>>798
行数が少ないだけでスピードは大して変わらんよ
0800デフォルトの名無しさん (ワッチョイ b790-d424)2016/12/13(火) 23:38:21.93ID:3IrbMGrr0
カレンダーを作りたいのですがフォームに表示する場合どのコントロールアイテムを使えばいいのかわかりません
使えそうなコントロールアイテムってありますか?
0801デフォルトの名無しさん (ブーイモ MM07-6LJV)2016/12/13(火) 23:45:34.29ID:D1DGYHRwM
WebBrowserでGoogleカレンダー表示しとけ
0802デフォルトの名無しさん (ワッチョイ b790-d424)2016/12/13(火) 23:45:54.00ID:3IrbMGrr0
すいません、質問内容を変えます
MonthCalenderアイテムのたとえば第1・3火曜日だけを色を変えたりとかってどうやるんでしょうか?
0803デフォルトの名無しさん (ワッチョイ ebdc-Ts63)2016/12/14(水) 01:12:47.69ID:dZsAFSxQ0
簡単な方法はない
出来合いのカレンダーコンポーネントなんかHTMLなら腐るほどあるから
今時WinFormsなんかやめてASP.NET MVCでWebアプリとして作ることをお勧めする
0804デフォルトの名無しさん (ワッチョイ d349-mlnL)2016/12/14(水) 01:25:03.42ID:ymoBJubC0
何だろね、この強引なWEB推し。
初心者がいきなりASP.NET MVCとか無理だろ。
0805デフォルトの名無しさん (ワッチョイ 3f19-i2Au)2016/12/14(水) 01:50:56.59ID:WNb69LWH0
webアプリってあんまり好きじゃない
0806デフォルトの名無しさん (スププ Sd2f-8RvK)2016/12/14(水) 02:05:02.38ID:0k2o8obnd
デスクトップアプリ作りたい人にWebアプリ薦めるとか頭おかしいだろ
0807デフォルトの名無しさん (ワッチョイ 07cb-1E9w)2016/12/14(水) 22:24:55.46ID:AUUgXdZT0
あー、どうだろ?
今時、DBにも繋がらないゴミになんか価値あるの?
って思う
メモ帳ですらgoogleでクラウド化してくれたことでやばいぐらい利便性が上がってる
0808デフォルトの名無しさん (スププ Sd2f-8RvK)2016/12/14(水) 22:39:26.79ID:0k2o8obnd
>>807
デスクトップアプリがDBに繋がらないって意味分からん
0809デフォルトの名無しさん (ワッチョイ 3faf-i2Au)2016/12/14(水) 22:46:30.91ID:iFO9XKWI0
デスクトップアプリでDBならSQLiteとかでもOnedriveみたいにファイルを置くだけで同期できるやつを使えば鯖なくても簡単にクラウド化できるし
ローカルのファイル書き込みと同じように使えるから初心者でも楽でいいよ
0810デフォルトの名無しさん (ワッチョイ 6b23-WrC4)2016/12/14(水) 23:01:05.01ID:4HnH0eA/0
>>809
SQLiteは、同時書き込みサポートしていないから、当該アプリケーション専用かつ、二重起動不可にしないと何かと問題起こるでしょ
0811デフォルトの名無しさん (スププ Sd2f-8RvK)2016/12/14(水) 23:06:38.72ID:0k2o8obnd
>>810
用途に合わせてDB選択すればいいじゃないですか
0812デフォルトの名無しさん (ワッチョイ 34cb-Wqrw)2016/12/15(木) 00:01:01.86ID:I51Ec/8p0
>>808
クラウド的な意味で
なんでもネットに繋げて見るべきだと思うな俺は
0813デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/15(木) 00:37:49.10ID:R3vgAk4Qd
>>812
?
0814デフォルトの名無しさん (ブーイモ MMb8-JvIx)2016/12/15(木) 00:50:31.08ID:ArFpv1XpM
いまやC#も舞台は完全にWebに移ったからなあ
.NET Coreも正式リリースされ、C#はクラウド開発の主要技術として本格的に覇権を取りにいく時代に入った
デスクトップアプリなどという終わった技術に固執している場合ではないよ
0815デフォルトの名無しさん (ワッチョイ 9c9d-0G5/)2016/12/15(木) 01:56:47.57ID:UyqFS3sy0
※個人の感想です
0816デフォルトの名無しさん (ワッチョイ 350c-8I6M)2016/12/15(木) 01:58:26.76ID:roF9qDxe0
>>814
仕事でデスクトップアプリ作ることないの?
いままでデスクトップアプリだったけど、Webに移行できたアプリって例えばどういうのがあるの?
0817デフォルトの名無しさん (ワッチョイ 413c-awGI)2016/12/15(木) 03:06:24.93ID:hXmFu1Hy0
>>816
業務アプリはWeb移行流行っただろ
デスクトップアプリは、開発ツールとしてならちょくちょくつくるね
0818デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/15(木) 04:10:25.23ID:R3vgAk4Qd
.NET Coreって別にクラウド用じゃないんだけど
0819デフォルトの名無しさん (ワントンキン MM40-Qnvt)2016/12/15(木) 06:03:28.59ID:4tPXC7shM
PAINT DOT NET がWebに移植されたの?
0820デフォルトの名無しさん (JP 0H57-8I6M)2016/12/15(木) 10:17:25.60ID:AviUmHkiH
デスクトップアプリでもクラウド上のDBに接続できるし>>807は意味わからんな
MS的にAzure App ServiceとXamarinと.NET Core推しでUWP含めデスクトップアプリを捨てにかかってる感はある
0821デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/15(木) 10:33:10.37ID:QVvM9ANid
>>820
xamarinはUWPサポートしてるんですが
0822デフォルトの名無しさん (ワッチョイ 8001-Vn9u)2016/12/15(木) 10:42:37.80ID:FQrvRs280
会社で使う業務アプリなら、使い勝手がどうとかレスポンスがどうとか文句言っても
しょうがないからWebアプリでも仕方なしに使うけど、個人で使うならよっぽど何か
メリットがない限り、Webアプリを選ぶ事はないわな
0823デフォルトの名無しさん (ドコグロ MM1c-Wqrw)2016/12/15(木) 11:52:17.88ID:JOHJeedcM
>>822
え?
むしろスマホも枠に入れたらwebアプリのが多くならない?
0824デフォルトの名無しさん (ドコグロ MM74-f0Z7)2016/12/15(木) 12:11:23.13ID:oGetrQbmM
スマホアプリ全部をWebアプリに含めるなよ
0825デフォルトの名無しさん (ワッチョイ 8001-NX/j)2016/12/15(木) 12:12:53.08ID:FQrvRs280
スマホの話をしてるつもりはないんだけどなw
0826デフォルトの名無しさん (ワンミングク MM40-BQpQ)2016/12/15(木) 12:33:06.76ID:7KRIzockM
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
0827デフォルトの名無しさん (ワッチョイ f2af-fzYk)2016/12/15(木) 15:47:36.94ID:cs8YXCvF0
スマホアプリもデスクトップと同じようなものだと思ってたけど違うの?
ソシャゲー以外はゲームもそれ以外もネット無しでも動くのが多いけど
0828デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/15(木) 16:19:58.27ID:QVvM9ANid
>>827
同じに決まってますやん

っていうかもしかして
デスクトップアプリ=通信機能なしのアプリ
Webアプリ=通信機能ありのアプリ
と思ってる人いる?
0829デフォルトの名無しさん (ワッチョイ 3976-ayWP)2016/12/15(木) 20:22:44.73ID:JHzpWXH70
ローカルファイルの存在がある限りはデスクトップアプリなくならんよなあ
electronとかでテクノロジー的には統一されるのかもしれんが
0830デフォルトの名無しさん (ワッチョイ 39d9-0Nmv)2016/12/15(木) 20:50:15.58ID:0F4R16IB0
アーキテクチャーの話になってきてるからスレタイ読んで方向修正しろ
0831デフォルトの名無しさん (ワッチョイ 34cb-Wqrw)2016/12/15(木) 22:01:11.28ID:I51Ec/8p0
c#でスマフォアプリ作りたいよ!
0832デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/15(木) 22:07:11.09ID:QVvM9ANid
>>831
どうぞどうぞ
0833デフォルトの名無しさん (ワッチョイ 3542-XOD+)2016/12/15(木) 22:41:41.93ID:Uw+BYsZj0
>>831
つunity
0834デフォルトの名無しさん (オッペケ Sr29-I6+1)2016/12/15(木) 23:42:14.65ID:FEXhH1Xvr
>>833
なんでそこでUnity出てくるんだよ
アプリ=2D/3Dゲームとは限らんだろ
0835デフォルトの名無しさん (アウアウイー Sa87-WqSn)2016/12/15(木) 23:52:53.04ID:JZ4+gGwKa
>>834
つunity
0836デフォルトの名無しさん (ワッチョイ 3542-XOD+)2016/12/15(木) 23:53:04.54ID:Uw+BYsZj0
>>834
ゲームエンジンだからってゲーム製作を強制されてるわけじゃないしマルチプラットフォーム楽だから提案しただけ
情報はそれなりに多いしC#でスマホアプリ開発したいなら余裕で候補に入ってくると思うけど
0837デフォルトの名無しさん (ドコグロ MM74-f0Z7)2016/12/15(木) 23:55:29.59ID:oGetrQbmM
ゲームでもないのにUnityはありえないな
0838デフォルトの名無しさん (ワッチョイ 35dc-JvIx)2016/12/16(金) 00:09:14.95ID:oD0nT6zl0
今はXamarinもタダでVSに付いてくるからな
0839デフォルトの名無しさん (ササクッテロル Sp29-DuXA)2016/12/16(金) 14:15:42.62ID:+kSjzPrMp
>>837
Unity使ってゲームじゃないもの複数リリースしてるわ俺
0840デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/16(金) 14:58:58.27ID:2fwYBe0Xd
変わった人ですね
0841デフォルトの名無しさん (JP 0Hf9-hLkw)2016/12/16(金) 16:48:03.99ID:q/3Oja+oH
Xamarinってスマホ用のちょっとしたアプリをC#でちょちょいと書くくらいの用途だったら
十分使えるのかね?
0842デフォルトの名無しさん (ワッチョイ 794a-xySp)2016/12/16(金) 17:30:52.01ID:3vYA7mHR0
>>814
CoreってまだPreviewでしょ?
0843デフォルトの名無しさん (ワッチョイ 3179-fmwP)2016/12/16(金) 17:31:55.76ID:OhRUtX+J0
ionic2でスマホアプリ作った方が楽じゃない?
0844デフォルトの名無しさん (ワッチョイ 9523-8I6M)2016/12/16(金) 18:33:01.02ID:pxUpeQjw0
>>842
http://www.publickey1.jp/blog/16/net_core_10_redhat.html
オープンソースの「.NET Core 1.0」、マイクロソフトが正式リリース。Windows/Linux/macOSに対応。 2016年6月28日
0845デフォルトの名無しさん (スププ Sdb8-WTZK)2016/12/16(金) 19:33:08.33ID:2fwYBe0Xd
>>841
プログラマーのスキル次第だよ
0846デフォルトの名無しさん (ワッチョイ 34cb-rqOZ)2016/12/17(土) 20:24:02.58ID:qwypf80K0
>>842
Cora!何ねぼけたこと言ってんだ!
0847デフォルトの名無しさん (ワッチョイ a030-0Nmv)2016/12/17(土) 21:23:42.16ID:iwmBtcKB0
審議拒否
0848デフォルトの名無しさん (ワッチョイ bf0d-zrF5)2016/12/19(月) 17:35:36.43ID:alVbxlzl0
無名関数をその場で実行したいのですがどうやればいいですか?

public void Hoge()
{
  int fuga = 0;

  //JSだと (function() { fuga++; })(fuga); みたいな書き方
  () => {
   fuga++;
  }

  Console.Write(fuga.ToString()); // 1
}
0849デフォルトの名無しさん (ワッチョイ b779-fmwP)2016/12/19(月) 17:55:39.16ID:C2gHCNQF0
jsと同じ仕方で出来ない?
(()=>{})()
0850デフォルトの名無しさん (ワッチョイ bf0d-zrF5)2016/12/19(月) 18:00:28.82ID:alVbxlzl0
>>849
「メソッド名が必要です」とエラーが出ます。何か間違っているのでしょうか・・・?
http://i.imgur.com/xkxr4EQ.jpg
0851デフォルトの名無しさん (ワッチョイ 9519-qvaQ)2016/12/19(月) 18:07:22.05ID:/uogIQCg0
型が必要
new Action(() => fuga++)();
((Action)(() => fuga++)))();
0852デフォルトの名無しさん (ワッチョイ bf0d-zrF5)2016/12/19(月) 18:22:45.50ID:alVbxlzl0
>>851
できました!
ありがとうございます!
0853デフォルトの名無しさん (アウアウオー Sa36-yl9W)2016/12/19(月) 18:43:30.73ID:3c7S3m0Fa
何の意味がw
0854デフォルトの名無しさん (ワッチョイ b779-fmwP)2016/12/19(月) 18:55:26.87ID:C2gHCNQF0
あっそっか
C#はscalaとかjsと違って名前で判別してるんだった
0855デフォルトの名無しさん (ブーイモ MMe5-JvIx)2016/12/19(月) 19:16:31.85ID:U/zOmskaM
デリゲート型宣言は、イベントをオブジェクト指向に持ち込むためだけにデリゲートが存在していた時代の名残だね
今作り直したら確実に無くなるものの筆頭
0856デフォルトの名無しさん (ワキゲー MMe6-qmcu)2016/12/19(月) 19:24:00.11ID:s6nMQ4X7M
多値がまだない今だとref/outが
0857デフォルトの名無しさん (アウアウオー Sa36-yl9W)2016/12/19(月) 19:34:56.44ID:3c7S3m0Fa
>>855
そんなわけないでしょw
勘違いはなはだしいな
0858デフォルトの名無しさん (ブーイモ MMe5-JvIx)2016/12/19(月) 20:16:21.66ID:U/zOmskaM
>>857
昔はデリゲートなんかほんとにイベントの裏方のカスみたいな存在だったよ
もはや死語となったマルチキャストデリゲートも今じゃありえない設計判断
0859デフォルトの名無しさん (ブーイモ MM8d-Qnvt)2016/12/19(月) 20:27:48.59ID:Ph61c/PCM
そうなのか?Taskへの書き換えが楽だからマルチキャスト多用してるわ
0860デフォルトの名無しさん (ワッチョイ 9d23-8I6M)2016/12/19(月) 20:38:22.46ID:OLcwTH7T0
prismのEventAggregatorでは、マルチキャストどころか多対多のイベントがサポートされている
これとprism..Unitiy使い始めると設計が根本から変わわるよね
0861デフォルトの名無しさん (ワッチョイ 35dc-JvIx)2016/12/19(月) 20:43:17.00ID:t+mkU7Kd0
TaskならContinueWithやWhenAll使いなよ
マルチキャストだと戻り値取れないだろ?
後でTaskに乗り換えようとしてもコードが副作用だらけになってて排他処理が必要になるはずだから
置き換えはそう簡単にはいかないだろう
0862デフォルトの名無しさん (ワンミングク MM40-Qnvt)2016/12/19(月) 20:46:00.65ID:cSqZiFK0M
いや呼び出し部はちゃんど自分でバラして戻り値取ってるよ
0863デフォルトの名無しさん (ワッチョイ 35dc-JvIx)2016/12/19(月) 20:50:55.64ID:t+mkU7Kd0
>>862
それマルチキャスト使う意味ある?
List<Func<>>でいいじゃん
MulticastDelegateをバラすと型情報も無くなるしパフォーマンスも悪い
百害あって一理なし
0864デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)2016/12/19(月) 22:35:52.95ID:SUXs8zgR0
スレチかもしれませがすみません
C#の勉強の延長でASPでwebアプリ作ってみようかと思ってるんですがASP.NETでのwebアプリの開発って主流の一つに入るんでしょうか
0865デフォルトの名無しさん (ワッチョイ 35dc-6+SE)2016/12/19(月) 22:41:34.98ID:t+mkU7Kd0
>>864
今から始めるならASP.NET MVCにしとけ
無印の方のASP.NET(WebForms)はドカタ技術
0866デフォルトの名無しさん (ワッチョイ 413c-bVUl)2016/12/19(月) 23:07:17.43ID:MBhcE2/40
>>864
Webアプリで何がしたいの?
0867デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)2016/12/19(月) 23:08:48.47ID:SUXs8zgR0
>>865
ありがとうございます
ASP.NETの知識無しでMVCのほうから入っても問題ないのですか?
0868デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)2016/12/19(月) 23:13:07.51ID:SUXs8zgR0
>>866
特に決めてはいないですが、在庫管理やらの業務系が出来ればと考えてます
0869デフォルトの名無しさん (ワッチョイ 413c-bVUl)2016/12/19(月) 23:20:50.16ID:MBhcE2/40
>>868
それなら.NET CoreじゃなくてまだFullの.NET Frameworkでいいね
0870デフォルトの名無しさん (ワッチョイ 35dc-6+SE)2016/12/19(月) 23:53:29.04ID:t+mkU7Kd0
>>867
別物だから問題ない
.NET開発としてではなく一般的なWeb開発の技術として主流かどうかを気にしてるなら断然MVCの方がいい
いわゆるWebMVCといってWeb開発においては非常に一般的なアーキテクチャを採用してるからな
無印の方はWinFormsのようなものを無理やりWeb上に再現した変態技術だが、
お前らの独自技術はもういいからWebらしいフレームワークが欲しいというニーズに応えて「普通な」MVCができた
0871デフォルトの名無しさん (ワッチョイ 413c-bVUl)2016/12/19(月) 23:54:58.14ID:MBhcE2/40
>>870
今どき無印とは言わねーよ
0872デフォルトの名無しさん (ワッチョイ bf49-TtuQ)2016/12/19(月) 23:57:07.79ID:yUAE2IHm0
>>867
問題ない。

>>869
いきなりそんなこと言っても何のことだか分からんと思うぞ。
そもそもCoreのこと聞いてないし。
0873デフォルトの名無しさん (ワッチョイ 413c-bVUl)2016/12/20(火) 00:19:37.86ID:woy83GfY0
>>872
自分で調べるだろ
わからなけりゃまた聞いてくるだろうし
今から始めるやつはそもそもWeb formsなんか対象にならないだろうから、Coreと比べるのは妥当
0874デフォルトの名無しさん (ワッチョイ 3a13-WTZK)2016/12/20(火) 01:09:58.52ID:bQKX6Z8E0
屁理屈言うなよ
0875デフォルトの名無しさん (スプッッ Sdc8-bVUl)2016/12/20(火) 02:18:50.01ID:usQ/Ng63d
>>874
至極まともな考えだと思うが
0876デフォルトの名無しさん (ワッチョイ 35dc-6+SE)2016/12/20(火) 07:30:35.17ID:wmh5vlKz0
今はASP.NET自体も無印とCoreに分裂してるから紛らわしい
このジャップ国でASP.NETに入門しようとしたら平気でWebFormsの情報ばかり出てくるから
とりあえずはそこさえ間違えなきゃいいと思うけどね
いきなりCoreは日本語の情報少なくて厳しいと思う
0877デフォルトの名無しさん (ワッチョイ 2d5b-yrUh)2016/12/20(火) 07:55:39.72ID:1rO91uPl0
>>864です
みなさんありがとうございます
大変参考になりました。聞いてよかったです
色々出して頂いたものは今から調べてみたいと思います
0878デフォルトの名無しさん (ブーイモ MM8d-3Pgg)2016/12/20(火) 19:05:30.30ID:ZJa7dsMxM
web formsはあれはあれでよく出来てるよ
経験の浅い若手を使って業務用システムをサッと作りたいときとかね
もちろん保守は他社がやると見込める時だけだが
0879デフォルトの名無しさん (ワッチョイ 6751-g1cW)2016/12/22(木) 23:43:30.19ID:GClofaGB0
C#を三か月前から勉強し始めました。
家でも勉強したくてパソコンにVS入れたいのですが、2015をインストールしたら,
Blend2015というのがインストールされました。
無料版ではComminityとExpressがあって、Comminityのほうがおすすめと聞いたのでそっちを入れたかったのですが・・・

Blendとはいったいどういう位置づけになるのですか?
会社ではVisualStudio2013Professionalを使っています。
0880デフォルトの名無しさん (ワッチョイ b749-AD9A)2016/12/22(木) 23:52:13.67ID:x9LZEgeN0
>>879
VisualStudioに付いてくるおまけ。
WPFでGUIをデザインするためのツール。
Comminityを入れたんなら、Blendとは別にComminityの方も入ってるだろ。
0881デフォルトの名無しさん (ワッチョイ b749-AD9A)2016/12/22(木) 23:53:53.81ID:x9LZEgeN0
あれ、community、だな。
0882デフォルトの名無しさん (ワッチョイ 6751-g1cW)2016/12/23(金) 00:07:02.38ID:eKejh9BS0
>>880
communityをインストールしようとしたらなぜかBlendになってました・・・。
2015もcommunityありますよね?
ありがとうございます。インストr−ルやりなおしてみます
0883デフォルトの名無しさん (スフッ Sddf-Khx9)2016/12/23(金) 00:13:03.88ID:nw5SwlgYd
Visual Studio入れるとBlendが付いてくる
アプリケーションの一覧にVisual Studioのフォルダが出来てないか?
0884デフォルトの名無しさん (ワッチョイ 0379-d0Xh)2016/12/23(金) 00:15:51.67ID:P0PUtLY+0
Blend版が付いてくるのを知らなくて、普通のVS起動していたつもりがBlend起動してて、設定項目が見つからず6時間くらい無駄にした思い出
0885デフォルトの名無しさん (ワッチョイ b749-AD9A)2016/12/23(金) 00:19:34.19ID:et7LM/Li0
>>882
Blendだけ入るって無いと思うけど。両方入っているはず。
落ち着いてメニューをよく見たら。
0886デフォルトの名無しさん (ワッチョイ 73dc-PUH/)2016/12/23(金) 00:19:39.42ID:Boa5/2YS0
仕事で使うための勉強ならBlendなんか用無しだろ
ASP.NETとWinFormsだけやっとけばいい
0887デフォルトの名無しさん (ワッチョイ e75e-g1cW)2016/12/23(金) 00:24:53.07ID:ydrXOK0X0
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe
>>882
必ず入っているはず。
むしろBlend版とか知らなくて、そのレス見てからサインインしたw
0888デフォルトの名無しさん (アウアウカー Sa3f-fflT)2016/12/23(金) 15:03:31.78ID:8qbb8kwia
Coreの話が出てたけど、ラズパイにwebアプリをデプロイできるの?
0889デフォルトの名無しさん (ワッチョイ 273c-GTRU)2016/12/23(金) 15:17:21.07ID:ThcKA0lt0
>>888
ロードマップでは、ARM対応はQ4 2016 / Q1 2017ってなってた。Samsungが確か頑張ってるはず。
0890デフォルトの名無しさん (アウアウカー Sa3f-fflT)2016/12/23(金) 17:23:34.06ID:9xVG4ZuTa
>>889
そうなのね!ありがとう
0891デフォルトの名無しさん (ワッチョイ 6751-g1cW)2016/12/23(金) 18:46:44.52ID:eKejh9BS0
>>883,884,885,886,887
返信ありがとうございます
インストール一覧を調べてみたところcommunityも入っていました
もっと確認すべきでした・・・
どうもありごうございました。
0892デフォルトの名無しさん (ワッチョイ d7ce-agOw)2016/12/23(金) 21:53:23.45ID:Lyl7nXDN0
余計な物も入れてくるから嫌いなんだよなあインストーラー
IDE必要ないからexeビルド環境だけ入るようなオプションない?
0893デフォルトの名無しさん (ワッチョイ efa1-YuIQ)2016/12/23(金) 22:11:13.66ID:wnG5DWev0
csc.exeなら.NET Frameworkに含まれてんじゃないっけ
0894デフォルトの名無しさん (ワッチョイ 4779-d0Xh)2016/12/23(金) 22:39:52.11ID:6njdFiip0
csc.exeはデフォで付いてくる
IDE入れないとコンパイラ入れられない言語とかない
0895デフォルトの名無しさん (ワッチョイ 0f7b-SerI)2016/12/23(金) 22:43:28.69ID:jiSEHcxr0
YouTube にある、T Umezawa の「メモ帳でC#超入門 #16」

ニコ生で放送しているのか?
よく知らないけど、昨日、#16 がアップされた
0896デフォルトの名無しさん (ワッチョイ e30d-agOw)2016/12/23(金) 22:46:42.71ID:8ECS/mff0
自作自演の宣伝きめぇ
0897デフォルトの名無しさん (ワッチョイ 4779-d0Xh)2016/12/23(金) 22:55:02.72ID:6njdFiip0
メモ帳とかメリットなさすぎ
VSが重くて嫌ならVSCodeおすすめ
0898デフォルトの名無しさん (ブーイモ MM8f-ncxm)2016/12/23(金) 23:04:29.79ID:gDLxrLVpM
VSは機能の割には無茶苦茶軽いと思うけどな
しかもゴッテゴテのWPFアプリなのに
0899デフォルトの名無しさん (ブーイモ MM3f-lsSM)2016/12/23(金) 23:05:50.84ID:MNqe+TxRM
WPFが重いって無能が作り上げた先入観でしかないんだよね
0900デフォルトの名無しさん (ワッチョイ f3d6-i5Qz)2016/12/23(金) 23:09:15.19ID:ejzKG2eK0
超低スペックなパソコンを後生大事に使い続ける貧乏人が文句言ってるだけ
0901デフォルトの名無しさん (ワッチョイ abc0-g1cW)2016/12/23(金) 23:28:01.18ID:c2xEt3tE0
低スペPC使っているけど、VSは2010以前とそれ以降で重さが段違いだな
0902デフォルトの名無しさん (ワッチョイ 4779-d0Xh)2016/12/23(金) 23:35:32.33ID:6njdFiip0
>>898
Eclipseに比べたらかなり軽いよね
JavaとかScalaもVSに対応してほしい
0903デフォルトの名無しさん (ワッチョイ ab3c-g1cW)2016/12/23(金) 23:36:01.09ID:Fo6fBKop0
2017は必要なものだけで立ち上げられるんだろ?
0904デフォルトの名無しさん (ブーイモ MM3f-lsSM)2016/12/23(金) 23:38:37.93ID:MNqe+TxRM
次はインストールも爆速になるらしいな
最近のMicrosoftさん頑張りすぎ
ORACLEも少しはMicrosoftを見習ってほしい
0905デフォルトの名無しさん (ワッチョイ 4779-d0Xh)2016/12/23(金) 23:42:33.40ID:6njdFiip0
インストールは寝る前にするからあまり関係ないけどね
0906デフォルトの名無しさん (ブーイモ MM8f-ncxm)2016/12/23(金) 23:43:37.75ID:gDLxrLVpM
>>899
VSの成功が証明してるようにスケーラビリティが高いのは確かだけど、
実際小さなアプリに使うには重いよ
0907デフォルトの名無しさん (ワッチョイ 4779-d0Xh)2016/12/23(金) 23:45:24.81ID:6njdFiip0
WPFはバインドがなー
Angularとかの自動更新になれるとね
0908デフォルトの名無しさん (ワッチョイ 273c-GTRU)2016/12/24(土) 00:09:01.03ID:LpJ8AJuF0
>>892
Cake使えば?
0909デフォルトの名無しさん (ワッチョイ ef9f-h9rX)2016/12/24(土) 01:10:24.95ID:YCrD1JsG0
>>894
なんで自信ありそうに言いきってるの?
IDE入れないといけない言語はあるよ
0910デフォルトの名無しさん (ワッチョイ 3f3c-PK0Z)2016/12/24(土) 09:08:23.75ID:dPbQS77J0
>>909
具体的に何よ?
0911デフォルトの名無しさん (ワッチョイ 73dc-ncxm)2016/12/24(土) 09:26:43.36ID:3LTJc3r/0
Smalltalkとか昔のVBやDelphiとか
0912デフォルトの名無しさん (ワッチョイ 8f42-3ZJ0)2016/12/24(土) 10:07:04.78ID:Uz+bz49d0
コンパイラ?
0913デフォルトの名無しさん (アウアウカー Sa3f-a5Nx)2016/12/24(土) 10:09:16.39ID:VcKJc7+aa
powerbuilderもだった
0914デフォルトの名無しさん (ワッチョイ 2f23-g1cW)2016/12/24(土) 11:28:12.62ID:prTI7XBj0
>>912
昔のVBもDelphiもコンパイラなんだけどw
0915デフォルトの名無しさん (オッペケ Srcf-qdr/)2016/12/24(土) 13:38:48.90ID:HbE0faQGr
ウインフォームアプリ作ったんだけどインストーラーとかアップデータとかも自分で作るの?
0916デフォルトの名無しさん (ワッチョイ 273c-GTRU)2016/12/24(土) 13:40:12.31ID:LpJ8AJuF0
>>915
ClickOnce
0917デフォルトの名無しさん (ワッチョイ ef9f-h9rX)2016/12/24(土) 13:41:59.25ID:yr6q9nVG0
VBAとかSmall BasicとかScratchとかもそうじゃね
0918デフォルトの名無しさん (オッペケ Srcf-qdr/)2016/12/24(土) 13:56:05.59ID:HbE0faQGr
>>916
それってオワコンなんじゃないの?
0919デフォルトの名無しさん (ブーイモ MM5f-ncxm)2016/12/24(土) 14:01:46.96ID:1tLIoM8kM
>>918
それを言ったらWinFormsもオワコンだよ
今生きてるのはASP.NETとUWPだけ
0920デフォルトの名無しさん (ワッチョイ abc0-g1cW)2016/12/24(土) 14:03:16.98ID:a9e/NRk30
オワコンだけど代替がないってのがね
0921デフォルトの名無しさん (ワッチョイ 379d-i5Qz)2016/12/24(土) 14:23:05.13ID:2536g+Dg0
MSもWinFormsに回帰、注力すべき
0922デフォルトの名無しさん (ワッチョイ 2f23-g1cW)2016/12/24(土) 14:35:55.93ID:prTI7XBj0
拡張機能からNuGetでVisualStudioInstaller入れられるの知らないのカー
0923デフォルトの名無しさん (ワッチョイ e33c-IeCC)2016/12/24(土) 15:17:55.11ID:hhClfuXq0
並列処理を行いたいんですがどうすればいいでしょうか?

しかも複数の並列処理で同一のコントロール(TextBox1.text)
に同時に書き込めるようにしたいです(書き込む順番はきにしません)
あとそれぞれの並列処理を無限ループで繰り返し処理を行いたいと
思っております。

どなたか教えてください。どうぞよろしくお願いします
0924デフォルトの名無しさん (オッペケ Sref-AvAH)2016/12/24(土) 15:19:37.36ID:JBAVj1Vvr
>>899
無能と言うか変化について行けない頭固い人だね。
所謂老害かな。
0925デフォルトの名無しさん (ワッチョイ 273c-GTRU)2016/12/24(土) 15:20:33.37ID:LpJ8AJuF0
>>918
その要件を簡単に実現できる方法が他にない。
0926デフォルトの名無しさん (オッペケ Sref-AvAH)2016/12/24(土) 15:21:12.81ID:JBAVj1Vvr
>>923
async, await 一択。
0927デフォルトの名無しさん (ワッチョイ 8f13-i5Qz)2016/12/24(土) 15:21:23.94ID:XrRMaYjq0
>>909
たとえば?
0928デフォルトの名無しさん (ワッチョイ d7ce-agOw)2016/12/24(土) 16:08:14.24ID:yMvVW4sX0
>>923
System.Windows.Forms.Control.Invoke経由で書き込むだけ
0929デフォルトの名無しさん (ブーイモ MM5f-ncxm)2016/12/24(土) 16:10:19.44ID:RJkhT4CTM
>>923
ワーカースレッドから好き勝手にGUI触るとカオスになるから、Producer-Consumerで分離すれば?
複雑なことをやるならGUIからではなくデザイン(見た目じゃないよ)から入る作り方も覚えていったほうがいい
0930デフォルトの名無しさん (ワッチョイ 8f13-0LB+)2016/12/24(土) 16:17:45.91ID:cCwHGfM40
>>928
これだな
0931デフォルトの名無しさん (ワッチョイ 73dc-ncxm)2016/12/24(土) 16:27:12.97ID:3LTJc3r/0
>>924
悪いけど、今時WPF推しとかそれこそ老害だと思うぞ
立ち止まって周りを見てみろ
0932デフォルトの名無しさん (ワッチョイ b77b-g1cW)2016/12/24(土) 16:28:09.91ID:YD9ZIllA0
話の流れが読めない人?
0933923 (ワッチョイ e33c-IeCC)2016/12/24(土) 17:08:45.84ID:hhClfuXq0
みなさんありがとうございます。
自分なりに調べて以下の通りつくってみました
「3秒まってコンソールに文字列を出力する」という処理を並列で動作させたかったのですが
どうもそれぞれの処理が単体で実行されるだけで並列処理になっていないようです。
以下の処理を並列で実行できるようにするにはどうすればよろしいでしょうか?
private async void button1_Click(object sender, EventArgs e)
{
while (true)
{
await Task.Run(() => Thread.Sleep(3000));
Console.WriteLine("タスク完了");
}
}
0934デフォルトの名無しさん (オッペケ Srcf-qdr/)2016/12/24(土) 17:10:58.57ID:HbE0faQGr
>>919
>>925
>>920
そっかあ
面倒だけど自作するか…
もうおっさんだからWinForm以外習得できん
0935デフォルトの名無しさん (オッペケ Srcf-qdr/)2016/12/24(土) 17:12:35.93ID:HbE0faQGr
>>922
あれ…記憶にないけどインストールしてあったw
まあアップデータは自作になるか…
0936デフォルトの名無しさん (ブーイモ MM3f-TACi)2016/12/24(土) 17:21:30.45ID:Jrqe8RRjM
>>933
その例は
「3秒まってコンソールに文字列を出力する」
ってタスクを無限個作りたいのん?
最初は2個にしておけば?
0937923 (ワッチョイ e33c-IeCC)2016/12/24(土) 17:33:48.36ID:hhClfuXq0
>>936
はいそうです
2個でも問題ありません。
簡単なサンプルとか頂ければ大変助かります
大変恐縮ですがどうぞよろしくお願い致します
0938デフォルトの名無しさん (オッペケ Sref-AvAH)2016/12/24(土) 17:39:03.48ID:JBAVj1Vvr
>>933
> 以下の処理
これが意味不明だけど。

十分並列にはなってる。
0939923 (ワッチョイ e33c-IeCC)2016/12/24(土) 17:52:32.66ID:hhClfuXq0
>>938
そうなんですね。ご指摘ありがとうございます。

ただ私の想定としては、「3秒待って出力」という処理を
複数同時に開始したいと思っておりました
ですがコンソールに出力されるタイミングは3秒おきに1処理分しか
出力されず、非同期処理と変わらない処理となっているような気がします

上で示したサンプルがわかりづらくて申し訳ありませんが
タスクは2個でも3個でも同時並列で処理できれば問題ありません
大変恐縮ですがご教示頂ければと思います
0940デフォルトの名無しさん (ワッチョイ 3b3a-a3YU)2016/12/24(土) 18:00:04.01ID:kAw8XX2k0
>>937
void TaskTest() {
Task.Run(async () => {
await Task.Delay(3000);
Console.WriteLine(DateTime.Now);
});
Task.Run(async () => {
await Task.Delay(3000);
Console.WriteLine(DateTime.Now);
});
}
0941923 (ワッチョイ e33c-IeCC)2016/12/24(土) 18:29:36.15ID:hhClfuXq0
>>940
ありがとうございます!
ちなみにテキストボックスなどに内容を出力することって出来ますでしょうか?
これらの処理をりようして
TextBox1.Textに内容を出力する処理をそれぞれのタスクに追加すると
エラーになってしまうようです。
お手数おかけしますがよろしくおねがいします。
0942デフォルトの名無しさん (ワッチョイ 8f13-0LB+)2016/12/24(土) 18:40:47.89ID:cCwHGfM40
>>941
>>928
0943923 (ワッチョイ e33c-IeCC)2016/12/24(土) 18:41:21.02ID:hhClfuXq0
これだとやっぱり3秒毎に1処理実行されるだけなんですね・・・

async Task<string> TaskTest()
{
await Task.Delay(3000);
return "a";
}

private async void button1_Click(object sender, EventArgs e)
{
while (true)
{
TextBox1.Text += await TaskTest();
Application.DoEvents();
}
}
0944923 (ワッチョイ e33c-IeCC)2016/12/24(土) 18:51:54.77ID:hhClfuXq0
>>942
ありがとうございます。
ただやっぱり並列にはなりませんでした・・・
なにがまちがってるんでしょうか・・・?
while (true)
{
await Task.Factory.StartNew(() =>
{
Invoke((MethodInvoker)(() =>
{
Thread.Sleep(3000);
TextBox1.Text += "a";
}));
});
}
0945デフォルトの名無しさん (ワッチョイ 7f94-4hBO)2016/12/24(土) 19:04:14.66ID:iV5eYun00
while(true)で無限にTaskを作るとOutOfMemoryExceptionになるから
Parallel使って10個ずつくらいに制限して、
TextBoxへの書き込みにはProgressを使うとこんな感じ

private void button1_Click_1(object sender, EventArgs e)
{
 IProgress<string> progress = new Progress<string>(text =>
 {
  TextBox1.Text += text;
 });
 Task.Run(() =>
 {
  while (true)
  {
   Parallel.For(0, 10, i =>
   {
    System.Threading.Thread.Sleep(3000);
    progress.Report("a");
   });
  }
 });
}
0946923 (ワッチョイ e33c-IeCC)2016/12/24(土) 19:13:46.70ID:hhClfuXq0
ありがとうございました!大変助かりました!
お手数おかけして申し訳ありませんでした
0947923 (ワッチョイ e33c-IeCC)2016/12/24(土) 20:17:57.50ID:hhClfuXq0
>>945
おかげさまで仕事がはかどりました
改めてありがとうございました。
ただ、ソースをよく読んでみると
Parallel.Forというのがあるので
Task使わなくても問題なさそうですね
(C#歴は1ヶ月程度なので違ってるかもしれませんが)
0948デフォルトの名無しさん (ブーイモ MM3f-TACi)2016/12/24(土) 20:23:51.87ID:Jrqe8RRjM
>>945
Progressなんてクラスが居たのね。こいつは捗りそう。
0949デフォルトの名無しさん (ワッチョイ 7f94-4hBO)2016/12/24(土) 20:25:53.45ID:iV5eYun00
>>947
Parallelは完了まで自スレッドをロックしてしまう
(つまり、並列ではあるけど非同期ではない)ので
UIスレッドをフリーズさせないためにはTaskとの併用が必要
0950923 (ワッチョイ e33c-IeCC)2016/12/24(土) 20:51:06.97ID:hhClfuXq0
なるほど。ありがとうございました!
0951デフォルトの名無しさん (アウアウカー Sa3f-qibb)2016/12/24(土) 21:56:05.36ID:AwL0H4eka
おまえら割とマジですげぇわ
0952デフォルトの名無しさん (ワッチョイ ab3c-g1cW)2016/12/24(土) 22:01:11.57ID:LTc/wMbf0
俺は初心者だからかもしれんが
ここに世界中の天才が集まってるのかとと思うわ
0953デフォルトの名無しさん (ワッチョイ bfcb-oYiN)2016/12/25(日) 19:11:38.15ID:liHUAEex0
かわいい奴
0954デフォルトの名無しさん (ワッチョイ e33c-IeCC)2016/12/26(月) 00:25:16.13ID:0WzKTwBd0
時刻だけ比較したいんですがそんなことってできます?
例えば現在時刻が13:30以降の時のみtrueを返すような時ってどうすればいいですか?
0955デフォルトの名無しさん (ワッチョイ 8f13-7bim)2016/12/26(月) 00:35:44.64ID:TE+B1lbE0
>>954
これでどう?

var now = DateTime.Now;
var time = new DateTime(now.Year, now.Month, now.Day, 13, 30, 0);
return time <= now;
0956デフォルトの名無しさん (ワッチョイ 7f94-4hBO)2016/12/26(月) 00:46:35.20ID:+7V9eNZX0
こんなのも
TimeSpan referenceTime = new TimeSpan(13, 30, 0);
return DateTime.Now.TimeOfDay >= referenceTime;
0957デフォルトの名無しさん (ワッチョイ 3bc9-DLF2)2016/12/26(月) 00:54:59.31ID:AQNPYjTP0
単に
((DateTime.Now.Hour == 13 && DateTime.Now.Minute >= 30) || DateTime.Now.Hour > 13)
じゃいかんのか
0958デフォルトの名無しさん (ワッチョイ e33c-IeCC)2016/12/26(月) 01:08:14.89ID:0WzKTwBd0
ありがとうございました!
0959デフォルトの名無しさん (ワッチョイ 379d-i5Qz)2016/12/26(月) 02:19:47.23ID:CIVIxVtu0
今回のケースに限ったことじゃないんだけど、
1回のif文でNowを複数回参照して、Nowが全部同じ値だという保証はあるのかな?
0960デフォルトの名無しさん (ワッチョイ 8f13-0LB+)2016/12/26(月) 02:47:24.74ID:TE+B1lbE0
>>959
ないよ
0961デフォルトの名無しさん (ブーイモ MM5f-TACi)2016/12/26(月) 12:35:23.91ID:cti1899cM
13:59:59から14:00:00の変わり目だけに起こるバグとか、怖いっす
0962デフォルトの名無しさん (ワッチョイ 2f23-g1cW)2016/12/26(月) 13:03:53.01ID:Bu04EBir0
どうしても気になるなら、先に分を比較すればバグることはない
0963デフォルトの名無しさん (ワッチョイ 8f42-lvdU)2016/12/26(月) 14:07:19.56ID:UJaB3lV20
そんな対処せずに1回の比較で終わるようにしときゃいいやん
0964デフォルトの名無しさん (スフッ Sddf-0LB+)2016/12/26(月) 14:13:47.94ID:qgo+g5wcd
だから>>955みたいに先にNowを保存すればいいだろ
ウダウダ悩んでるおまえ等が信じられんわw
0965デフォルトの名無しさん (アウアウオー Saff-iGc/)2016/12/26(月) 14:18:36.34ID:1bhMGPyja
どうでもいいけど、そもそも「現在時刻が13:30以降の時のみtrue」って要件はかなりあいまいだね。
0966デフォルトの名無しさん (JP 0Hef-g1cW)2016/12/26(月) 14:24:40.84ID:E1wmt4rJH
23:59:59までtrueでいいんかとか
PCの内蔵タイマーの時刻でいいんかとか
タイムゾーンはどうなんかとか
0967デフォルトの名無しさん (ワッチョイ 837b-DNID)2016/12/26(月) 14:38:43.61ID:G2ewta8d0
先生スレッドのカルチャー変えても比較出来るんですか
0968デフォルトの名無しさん (ワッチョイ 63a4-zpPG)2016/12/26(月) 17:15:25.72ID:faSaUmiF0
TextBox1とTexBox2(非表示)があります。
TextBox1にフォーカスが移動したら、TextBox2を表示してそちらにフォーカスを移動します。
TextBox2から別のところにフォーカスが移動したらTextBox2を非表示にしたいです。

TextBox1のEnter時に

TextBox2.Visible = true;
TextBox2.Select();

と書き、TextBox2のLeave時に

TextBox2.Visible = false;

と書きました。実行してみるとTextBox2が点滅して消えてしまいます。
調べてみるとLeave時の処理が3回実行されているようで、さらに
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.gotfocus(v=vs.110).aspx
Doing so can cause your application or the operating system to stop responding.
フォーカスの設定をするなと書いてあるようです。

最悪、透明なボタンでも設置して無理矢理実現するしかないのかなと考えていますが、
フォーカス取得時に別のテキストボックスに移動することはできませんか?
0969デフォルトの名無しさん (ワッチョイ e30d-agOw)2016/12/26(月) 17:20:02.90ID:uTypYcaG0
WPFは駄目って言ってる奴いるけど、じゃあ何で作るんだ?
まさか制限盛りだくさんのUWPとか言わないよな?
0970デフォルトの名無しさん (アウアウオー Saff-iGc/)2016/12/26(月) 17:31:38.03ID:1bhMGPyja
>>968
なぜそんなアホなことをしたいの?

たぶん実現したい何らかの使用に対して君が思いついた方法がそれなんだどうけど
どう考えてもその方法は間違ってるから最終的にどういう仕様を実現したいかを
書いた方がいいと思うよ
0971デフォルトの名無しさん (ワッチョイ 0fba-i5Qz)2016/12/26(月) 17:31:53.92ID:ejLfwHLb0
そういう連中、WPFを知ってて言ってるわけじゃないもんな。
追及してやると主張が C#駄目 Windows駄目 デスクトップアプリ駄目 のどれかに変わる。
0972デフォルトの名無しさん (ワッチョイ abc0-g1cW)2016/12/26(月) 17:36:34.58ID:BQIvjtl90
>>971
今その条件で作れと言われたら迷わずWPF選びたいけど、俺社環だとForm選ばざるを得ないのが辛い
0973デフォルトの名無しさん (ワッチョイ c33c-v5hB)2016/12/26(月) 17:44:50.42ID:bXBxzWjM0
>俺社環だと
あるある
0974デフォルトの名無しさん (ワッチョイ 63a4-zpPG)2016/12/26(月) 17:46:33.22ID:faSaUmiF0
>>970
郵便番号を入力する部分のテキストボックスを7つに分けたのですが、
入力時には1つにしたほうが入力しやすいだろうと思いました。
LabelにするとTabでフォーカスを受け取れないので連続で入力しにくいかなと思ったり、
そもそも郵便番号をわざわざ分けているのは、入力フォームを画像にして裏に貼り、
入力イメージが掴めるようにしようかなと思った次第ですが、別のテキストボックスに
入力させてそれをプレビューしちゃだめというわけでもないので出来ないのであれば
入力とプレビューをわけようと思いますが、テキストボックスがフォーカスを受け取ったら
バトンパスのように他のテキストボックスに移動するというのは出来ないのかなと思って質問しました。
0975デフォルトの名無しさん (ワッチョイ c33c-v5hB)2016/12/26(月) 17:56:43.50ID:bXBxzWjM0
>郵便番号を入力する部分のテキストボックスを7つに分けたのですが
この時点でおかしいだろ(困惑)
0976デフォルトの名無しさん (ワッチョイ 7f94-4hBO)2016/12/26(月) 18:15:12.11ID:qJ+YWzR60
入力しようとしてテキストボックスを選んだら勝手に次のテキストボックスに飛ぶって
嫌がらせにしかならない気が…(どうやって入力してもらうの…)

郵便番号の枠のイメージで1文字ずつの入力にしたいというのなら
1文字しか入力できないテキストボックスを7つ配置して、
入力されたら次に飛ぶ、文字が消されたら前に飛ぶ、みたいに作るのがいいのでは
0977デフォルトの名無しさん (アウアウオー Saff-iGc/)2016/12/26(月) 18:28:31.17ID:1bhMGPyja
>>974
ハガキや封書の〒記入欄の見た目に似せたいってことかもしれんけど、
そんなくだらない仕様を諦めるわけにいかないの?

ありがた迷惑なだけでメリットないと思うけど

郵便番号を入力するUIなんて割と多いけどそんなヘンテコな仕様見たことないよw
0978デフォルトの名無しさん (ワッチョイ d7ce-agOw)2016/12/26(月) 19:05:18.45ID:/iMD3zus0
話を一般化すると、プロダクトID入力画面みたいに
指定桁だけ入力し終わったら次のテキストボックスに移動したいのかな
TextChangedとSelectNextControlかな
0979デフォルトの名無しさん (ワッチョイ 2f23-g1cW)2016/12/26(月) 19:38:22.72ID:Bu04EBir0
>>969
Cのライブラリ使ったりDataGridが何とかなりそうなら、UWPも悪くない選択肢だよ
コントロールも標準で沢山ついてくるしtoolkitも充実している
0980デフォルトの名無しさん (ワッチョイ 2f23-g1cW)2016/12/26(月) 19:43:38.71ID:Bu04EBir0
郵便番号程度なら、パネルから派生させたフルスクラッチでコントロール作っても大したことない気がするな
これからも使いそうなら作っちまえよ
0981デフォルトの名無しさん (ワッチョイ 5394-4hBO)2016/12/26(月) 19:52:33.70ID:5v43Qgq70
>TextBox1にフォーカスが移動したら、TextBox2を表示してそちらにフォーカスを移動します。
>TextBox2から別のところにフォーカスが移動したらTextBox2を非表示にしたいです。
というのは、入力しようとすると別途用意された入力フォームが開く、みたいなUIを模したいのかなぁ

とりあえず >>968 はこれで実現できる
private void TextBox1_Enter(object sender, EventArgs e)
{
 new Task(() =>
 {
  TextBox2.Visible = true;
  TextBox2.Select();
 })
 .Start(TaskScheduler.FromCurrentSynchronizationContext());
}

フォーカスイベントの連鎖から独立した別スレッドからUIスレッドに指示を出すので
>set focus from within the Enter, GotFocus, Leave, LostFocus, Validating, or Validated event handlers
には当たらないと思う
0982デフォルトの名無しさん (JP 0Hcf-Qa15)2016/12/26(月) 20:00:08.21ID:K98gijPEH
役所が1セルに1文字しか入力しちゃいけないExcelフォーマット量産してるって
話を思い出した
0983デフォルトの名無しさん (ワッチョイ 0fba-i5Qz)2016/12/26(月) 20:14:39.87ID:ejLfwHLb0
UWPは配布が一番のネックだな。
プログラミング需要のある程度の割合を企業内ユースが占めていると思うけど、
そういう用途じゃわざわざUWPなんて使わんよな。せいぜいWinRT。
さらに、今の時点だとまだWindows7を無視できないから結局FormsかWPFってところじゃない?
0984デフォルトの名無しさん (ワッチョイ 9faf-pRKv)2016/12/26(月) 21:10:56.35ID:yrQs6qFs0
ストア配布なら企業内以上に一般も難しそう
欲しいソフトがあるときはWindowsはストアで探すよりも検索してベクターなり窓の社なりから探してくる人が多いし
0985デフォルトの名無しさん (ワッチョイ c33c-v5hB)2016/12/26(月) 21:25:19.92ID:bXBxzWjM0
Winはそうよね
海外はどうか知らんが
0986デフォルトの名無しさん (ワッチョイ e30d-agOw)2016/12/26(月) 22:27:21.69ID:uTypYcaG0
じゃあ、>>756や>>931は間違ってるということでいいんですね
0987デフォルトの名無しさん (アウアウオー Saff-iGc/)2016/12/26(月) 23:49:51.33ID:nUdM+QKma
その手の問題は最終的には自分で答えを出すしかないでしょ。

個人的には2chくんだりで「いつも誰かと戦ってる」タイプの人のいうことは真に受けない方がいいと思うけどねw
それは彼がそんなくだらないことをするのか、その動機を考えれば自明だよね

俺個人としてはこの記事(すでに古い記事だけど)のタイトルがすべてだと思う
https://www.infoq.com/jp/articles/Win8-LOB-Options

Windows Formが終わってるのと同程度にはWPFも終わってる
かといってプランCも存在しない
0988968 (ワッチョイ 736e-gQz9)2016/12/26(月) 23:57:39.10ID:Z8alzA0s0
そこまでひどいUIとは思いませんでした。
おとなしく入力とプレビューを分けるようにします。
>>981は明日にでも試してみようと思います。
0989デフォルトの名無しさん (ワッチョイ 8f7b-YyGO)2016/12/27(火) 01:33:51.84ID:SOm/Nt9E0
うめ
0990デフォルトの名無しさん (ワッチョイ 5394-4hBO)2016/12/27(火) 02:10:31.58ID:HrGPkQcW0
次スレ
ふらっと C#,C♯,C#(初心者用) Part126
http://echo.2ch.net/test/read.cgi/tech/1482772061/
0991デフォルトの名無しさん (ワッチョイ dfcb-vcjl)2016/12/27(火) 02:44:38.87ID:Ue0MWe8H0
twitterのタイムラインのようなものを作ろうと思っているのですがどのようなコントロールを使えばいいのかがわかりません
どなたか私に教えていただけないでしょうか?
よろしくお願いします
0992デフォルトの名無しさん (ワッチョイ 73dc-PUH/)2016/12/27(火) 07:15:38.67ID:CsLSwhzy0
WebBrowser
0993デフォルトの名無しさん (ワッチョイ 4791-t+3N)2016/12/27(火) 14:02:51.16ID:DjR8onEe0
datagridviewでセルに何か書き込まれたときにそこが真ん中になるよう自動でスクロールしたいのですが
どうすればいいですか?
0994デフォルトの名無しさん (ワッチョイ dfcb-vcjl)2016/12/27(火) 14:19:39.59ID:Ue0MWe8H0
>>992
ご回答ありがとうございます
私の言葉が足らなかったようですみません
twitterのタイムラインをwebbrowserで表示するのではなくtwitterのAPIを使いツイートの情報を受け取りそれらをtwitterのタイムライン風に表示したいと考えております
0995デフォルトの名無しさん (ワッチョイ 2b94-4hBO)2016/12/27(火) 14:40:14.00ID:+TUrL10Q0
>>993
CurrentCellDirtyStateChangedかCellValueChangedイベントハンドラで

int offset = dataGridView.Rows.GetRowCount(DataGridViewElementStates.Displayed) / 2;
int current = dataGridView.CurrentCell.RowIndex;
dataGridView.FirstDisplayedScrollingRowIndex = Math.Max(0, current - offset);

スクロール量はoffsetの値に+-して調整
0996デフォルトの名無しさん (ワッチョイ 4791-t+3N)2016/12/27(火) 16:50:37.42ID:DjR8onEe0
>>995
なるほどオフセットと現在の位置で動かすのですか
思い通りにできましたありがとうございます
0997デフォルトの名無しさん (ワッチョイ bf4c-hHku)2016/12/27(火) 17:06:23.75ID:8I0GRdm60
うめ
0998デフォルトの名無しさん (ワッチョイ 8f7b-YyGO)2016/12/27(火) 23:13:31.51ID:YmRmCI2N0
梅
0999デフォルトの名無しさん (ワッチョイ 4f17-YQ1g)2016/12/27(火) 23:58:49.99ID:tR2ogx270
う
1000デフォルトの名無しさん (ワッチョイ 379d-i5Qz)2016/12/28(水) 00:23:32.44ID:gZZUj22C0
1000ならWinForms大復活、2017以降は主力になる
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 80日 2時間 50分 6秒
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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