16/10/08 21:33:26.22 KfBpvv2w0.net
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part124
スレリンク(tech板)
■関連スレ
C#, C♯, C#相談室 Part91
スレリンク(tech板)
■コードを貼る場合は↓を使いましょう。
URLリンク(ideone.com)
URLリンク(dotnetfiddle.net)
■情報源
URLリンク(msdn.microsoft.com)
URLリンク(referencesource.microsoft.com)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2:デフォルトの名無しさん (ワッチョイ fc5e-lsIp)
16/10/09 09:01:10.77 G17UML8q0.net
>>1
スレたて乙
5レスくらい埋めないと落ちるかも
3:デフォルトの名無しさん (アウアウ Sac5-Nuoi)
16/10/09 09:28:56.72 tkPBsJC6a.net
>>1乙
いつもROM専ですが
4:デフォルトの名無しさん (ワッチョイ c3c0-lsIp)
16/10/09 09:30:27.17 2uWzXVZF0.net
>>1乙
.NET2.0のフォームアプリをメンテナンスすることになったんだが、最近のOSだと.NET3.5入れないと動かないんだな
.NET3.5と4.5.2の並行路線は何時まで続くんだろ・・・
5:デフォルトの名無しさん (アウアウ Sac5-pu+C)
16/10/09 09:39:03.76 rlAqgPo1a.net
ほす
6:デフォルトの名無しさん (ワッチョイ 21dc-6leU)
16/10/09 09:41:15.48 r1p0JkFt0.net
マニフェスト弄れば動くよ
基本的に100%の互換性があることになってるけど、デフォルトで動かないのは
ユーザーが勝手に4系で動かして万一重大障害発生でお前らがDOGEZAする羽目にならないように
ちゃんとテストしろよというMSの良心
7:デフォルトの名無しさん (ワッチョイ fc5e-lsIp)
16/10/09 10:06:32.54 G17UML8q0.net
>>4>>6
これかな
URLリンク(msdn.microsoft.com)
メモの
>useLegacyV2RuntimeActivationPolicy 属性を true に設定する必要があります
の部分がよくわからんけど
>>4
Windows8以降は4.0以降のランタイムしか入ってないからな
8:デフォルトの名無しさん (ワッチョイ 98d4-lsIp)
16/10/09 16:48:44.58 XK4sDCWo0.net
前スレで、StringにAppendLineという拡張目そっと゛を追加したい云々の質問した者です
C#だと代替できるものないということで。
んで次なんですが、関数の中で Static してる変数があるんですけど、これはC#だとどうしますか。
Public Sub Hoge()
Static First As Boolean = True
If First Then
First = False
初期化っぽい処理
End If
End Sub
関数の外に出すと他の関数から見えてしまうので
9:デフォルトの名無しさん (ワッチョイ ab49-LThL)
16/10/09 17:03:09.61 rPrC2GUx0.net
>>8
同じクラスのprivateな変数にする。
外から見えるとかは関数単位ではなくクラス単位で考える。
同じクラス内の他の関数から見えるのは気にしない。
10:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/09 18:36:02.08 ciDgbIwP0.net
この★印の機能は何ですか?これもラムダ式?
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();
}
}
11:デフォルトの名無しさん (ワッチョイ 21dc-xaNP)
16/10/09 18:43:54.99 r1p0JkFt0.net
>>10
expression bodied properties
C#6の新機能
12:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/09 19:55:16.81 ciDgbIwP0.net
なるほど
13:デフォルトの名無しさん (ワッチョイ 34c9-VEeh)
16/10/09 20:12:19.64 SNsM+1tN0.net
getterだけなら使えるみたいな機能は入れなくていいよ
混じってるとみっともない
14:デフォルトの名無しさん (ワッチョイ 34c9-VEeh)
16/10/09 20:17:23.67 SNsM+1tN0.net
みっともないって言葉は曖昧なので止める
getterだけのプロパティをexpression-bodiedで書いて
getterとsetterのプロパティを通常の記法で書いてると統一性に欠ける
15:デフォルトの名無しさん (ワッチョイ c3c0-lsIp)
16/10/09 20:24:50.85 2uWzXVZF0.net
これはGetterだけでいいような
16:デフォルトの名無しさん (ワッチョイ 21dc-xaNP)
16/10/09 20:26:06.97 r1p0JkFt0.net
イミュータブルなクラスを書きやすいようにするための機能だからそもそもsetなんか要らないんだよ
メソッドも式で書けるようになったからその意味では一貫性がある
正しいかどうかはともかく、C#は関数型へ進み続けている
それを受け入れられないならC#から脱落するしかない
17:デフォルトの名無しさん (ワッチョイ 353c-xaNP)
16/10/09 20:34:20.60 ufk0aci50.net
>>16
いや、マルチパラダイムだろ
18:デフォルトの名無しさん (オッペケ Sr4d-/Z78)
16/10/09 21:10:17.77 sqq+yTnGr.net
C#7.0では、setterでも書けるようになったりする。
19:デフォルトの名無しさん (ワッチョイ 353c-lsIp)
16/10/10 00:16:17.24 LNPO30qQ0.net
while (true){
string text = Console.ReadLine();
//受け取った文字で処理
}
すごい久しぶりにC#やるのですが、
上記を呼び出したプログラムがいつの間にか不慮の事故で死んでいた場合、
自殺する方法があったような気がしたのですが、分からなくなりました。
これは他のexeファイルから呼び出されて標準入出力でやり取りします。
20:デフォルトの名無しさん (ワッチョイ 97dd-xaNP)
16/10/10 05:15:45.69 ht+Pv9Q40.net
ハートビート飛ばして返事無ければブレイク
21:デフォルトの名無しさん (ワッチョイ 5b00-BQsb)
16/10/10 07:04:48.42 ScYkQPFE0.net
>>19
URLリンク(msdn.microsoft.com)(VS.85).aspx
親プロセスに子プロセスをjob objectと登録しておくと、親が死んだ時に
子供をOSが自動的に殺してくれるそうです。
22:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/10 07:44:38.15 UXASE0xK0.net
親が殺し屋に自分が死んだら子を殺せと依頼するようなもの?
23:デフォルトの名無しさん (ワッチョイ c63c-xaNP)
16/10/10 11:34:40.27 Rkc5P+nq0.net
>>19
> これは他のexeファイルから呼び出されて標準入出力でやり取りします。
パイプ使ってるってこと?
なら親が死んだら eof で ReadLine が null を返すんじゃね?
24:デフォルトの名無しさん (アウアウ Sa43-TInN)
16/10/10 12:54:12.01 V7Z0NZf3a.net
UWPアプリでTextBlockにハイパーリンクを追加し、ClickイベントでそのURLを取得して色々処理したいのですが、
↓のxamlだとClick時にHyperlink_Clickは呼ばれるのですが、その後標準のブラウザで強制的に開かれてしまいます。
NavigateUriを消せば標準のブラウザで開かれることはないですが、URLを埋め込めません。
何かいい方法はないでしょうか。
<TextBlock>
<Hyperlink Click="Hyperlink_Click" NavigateUri="URLリンク(yahoo.co.jp">)ヤフー</Hyperlink>
</TextBlock>
25:デフォルトの名無しさん (ワッチョイ 353c-lsIp)
16/10/10 18:45:27.25 LNPO30qQ0.net
>>23
そうなの?
今試せないんだけど、改行が来なくても大丈夫系?
26:デフォルトの名無しさん (ワッチョイ 353c-lsIp)
16/10/10 20:37:17.51 LNPO30qQ0.net
>>23今仕事に区切りがついたんで試したけど駄目でした
27:デフォルトの名無しさん (ワッチョイ 7666-MJqz)
16/10/10 21:40:27.98 /jPfSdO10.net
>>24
これでどや!
<Button Click="Button_Click">
<TextBlock Foreground="Blue">
<Underline>URLリンク(www.msn.com)
</TextBlock>
</Button>
28:デフォルトの名無しさん (ワッチョイ 7666-MJqz)
16/10/10 21:41:18.62 /jPfSdO10.net
ちょっと違うか
29:デフォルトの名無しさん (ワッチョイ 21dc-+EyG)
16/10/10 22:04:07.58 ly4XaJJN0.net
どうでもいいけどXAMLでUnderlineやらBorderやらタグで書くのってイケてないよなあ
やっぱりCSS的なレイヤは必要だった
30:デフォルトの名無しさん (ワッチョイ 353c-yd9a)
16/10/10 22:15:45.81 uc840M750.net
えー
CSSが生まれたのって、
「HTMLは文書の意味や構造を定義付ける為の物であって、見た目を定義付ける為の物ではない」
的な思想があっての事でしょ
HTMLとXAMLとでは存在目的が違うんだから、いらねーっすよ
31:デフォルトの名無しさん (ワッチョイ 1030-VEeh)
16/10/10 22:17:45.98 NThcQOle0.net
前景色はStyleで指定できるがUnderlineは駄目って言われるとハンパな感はある
32:デフォルトの名無しさん (ワッチョイ 1030-VEeh)
16/10/10 22:20:54.95 NThcQOle0.net
いや嘘だ
Control.TextDecorationsがある
33:デフォルトの名無しさん (ワッチョイ c37b-jLml)
16/10/10 23:34:54.76 MUAfL18F0.net
UWPだとe.Handledは使えないんだったっけ?
値を埋め込みたいだけならNavigateUriの代わりに添付プロパティ使うとか
34:デフォルトの名無しさん (アウアウ Sa43-TInN)
16/10/11 11:19:41.87 n7KkGtdUa.net
>>33
添付プロパティでいけました、ありがとうございます
35:デフォルトの名無しさん (ワッチョイ 707b-lsIp)
16/10/11 14:48:44.44 mnCEYNvQ0.net
本に付属してるサンプルでの質問で申し訳ないのですが、
Analyze()関数にあるwhile(sf[ppos] != 13)とif(sf[ppos] >= 32)の部分なんですが、
なぜ13と32で判断させてるのかわかりません。
本書のサンプルをうpしましたので、わかる方いましたら、教えていただけないでしょうか?。
URLリンク(www.dotup.org)
36:デフォルトの名無しさん (ワッチョイ c3e2-IG4E)
16/10/11 15:18:08.90 NhNhMU+W0.net
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);
37:デフォルトの名無しさん (ワッチョイ 9e4c-xaNP)
16/10/11 16:25:38.21 lBkVHEla0.net
>>30
ちょっとちゃうな。
マークアップを管理する為、別層があった方がええよってだけなんじゃね
38:デフォルトの名無しさん (ワッチョイ d919-hgF0)
16/10/11 17:06:07.06 yDjM8vhd0.net
>>35
sfがstringであることぐらいは質問文の中に欲しいなー
stringに対して [index] でアクセスするとchar型、つまりUTF-16の文字コードが取得できる
それぞれの文字コードが指す文字は
13: CR(=\r)つまり改行文字
32: (いわゆる半角の)空白文字
CRが見つかるまでループしてるのはコメント通り1行分を読み込んでるから
空白文字の方はちょっと特殊だけど、文字コード0~31は制御コードって言う
「文字ならざるもの」を入れておく領域になっているんで、
つまり文字として有効かどうかをチェックしてる
39:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/11 17:36:19.27 5nhn+XnWa.net
マジックナンバー使うような人の書いた本って読む価値あるかねw
40:デフォルトの名無しさん (ワッチョイ d919-hgF0)
16/10/11 17:47:59.14 yDjM8vhd0.net
>>36
pinvoke.netのDllImport定義使ってる?
なんでかFindFirstUrlCacheEntryだけEntryPoint書いてるけどなぜかそれが
FindFirstUrlCacheEntryAを明示してるからそっちはANSIでNextのほうはUnicode呼び出しになる
EntryPoint消して、stringへの変換はMarshal.PtrToStringAuto使うようにする
あとFindNextUrlCacheEntryは返値見て失敗したらMarshal.GetLastError呼び出し
バッファ不足か列挙終了か確認する必要がある
そもそも最初に呼び出したFindFirstUrlCacheEntryで得られたバッファサイズはFindNextUrlCacheEntryでさらに拡張される可能性があるし
もし拡張されたらまたFindFirstUrlCacheEntryから呼び出し直しだから
はじめっから65536とか適当に大きいバッファ確保しておいて
FindNextUrlCacheEntryに渡すbufferSizeは毎回入れ直しておいた方がいい
41:デフォルトの名無しさん (ブーイモ MMa8-pu+C)
16/10/11 20:46:16.35 nLx97S41M.net
マジックナンバーやめろ定数にしろっていうけどオブジェクト指向でシンボリック定数使うのも大概だよな
42:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/11 21:06:54.61 k359FhBZa.net
>>41
オブジェクト指向関係あるの?w
43:デフォルトの名無しさん (ワッチョイ 353c-yd9a)
16/10/11 21:27:18.88 oZVsanbB0.net
シンボリック定数使えなんて誰も言ってなくね?
(まあC#はマルチパラダイム言語だが)
改行文字を判別するならエスケープシーケンス使えよと思うし
制御文字を判別するならIsControl使えよと思う場面だな、>>35は
44:デフォルトの名無しさん (ワッチョイ c37b-jLml)
16/10/11 22:06:20.93 iuxGk4et0.net
まあそもそも1行ずつ読むならTextReader使えという場面だな
45:デフォルトの名無しさん (ワッチョイ d273-lsIp)
16/10/11 22:56:13.62 z6hY1vfh0.net
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; }
}
}
46:デフォルトの名無しさん (ワッチョイ d273-lsIp)
16/10/11 22:59:05.10 z6hY1vfh0.net
>>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();
でいけると思うのですが
47:デフォルトの名無しさん (ワッチョイ d273-lsIp)
16/10/11 22:59:36.45 z6hY1vfh0.net
>>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
48:デフォルトの名無しさん (ワッチョイ 21dc-+EyG)
16/10/11 23:43:53.68 aUckxkie0.net
手軽に読み書きしたいならSystem.Xml.Linq
49:デフォルトの名無しさん (ワッチョイ d273-lsIp)
16/10/12 00:02:48.25 vhGHJWtL0.net
調べてみます。ありがとうございます。
50:デフォルトの名無しさん (ワッチョイ 707b-lsIp)
16/10/12 12:22:41.59 rlMzapAH0.net
>>38
説明不足ですみませんでした。
やはり、13は改行コードなんですね。下のコメントに10と13は改行コードと書いてたので、これじゃないかと思ってたのですが・・。
でも、32は書いてなかったので、質問しないとわかりませんでしたが。
丁寧な解説で、馬鹿な自分でもよくわかりました。
レス&解説ありがとうございました。
>>39
.NETでゲームを作る本は3冊(どれも古い)しかなくて、自分的には貴重だと思うんですよね。
51:デフォルトの名無しさん (ワッチョイ 9ee1-xaNP)
16/10/12 12:27:22.50 hi5pDFH90.net
>>50
Unity使えよ・・・
WinFormsとかWPFはものにもよるけどゲームには向いてないぞ
52:デフォルトの名無しさん (ワッチョイ ab0d-yd9a)
16/10/12 15:37:01.20 dzycFkoT0.net
質問です。
入力されたパスワードをファイルに暗号化して保存するのですが、
暗号化に用いた鍵はどのように保存すればいいでしょうか?
C#は逆コンパイルが簡単なので、単にプログラムの中に埋め込むだけでは危険だと想います。
インターネットに繋がっていなくても実行可能なよい方法を教えてください。
53:デフォルトの名無しさん (ワッチョイ d919-hgF0)
16/10/12 15:55:30.36 ZPnQqXwN0.net
ローカルに置く限りはどうとでもなる
安全な置き場所なんて無いからプログラム埋め込みでも別にいいよ
54:デフォルトの名無しさん (スフッ Sda8-xaNP)
16/10/12 16:41:55.83 DOlHpAMed.net
>>52
プログラム埋め込みしたうえでアセンブリ難読化でいいんじゃないですか
55:デフォルトの名無しさん (ワッチョイ 21dc-xaNP)
16/10/12 16:57:13.83 9oDwxE2X0.net
アプリ自体にパスワード認証を入れるってこと?
それならパスワードは例え暗号化された形であっても一切保管しないのがセオリー
疑似コードで説明するとこんな感じ
void パスワード設定(パスワード) {
ファイルに保存("認証情報.txt", ハッシュ関数(パスワード))
}
bool パスワード認証(パスワード) {
return ハッシュ関数(パスワード) == ファイル読込("認証情報.txt"))
}
ハッシュ関数はSHA256あたり使えばいい
こうするとHDDの内容が流出しようがパスワードが漏れることはない
さらに辞書攻撃対策として、パスワードに適当に決まった文字列(ソルト)を付加してやるとより強固になる
56:デフォルトの名無しさん (ワッチョイ 0dd9-VEeh)
16/10/12 16:59:10.98 McueY18J0.net
chromeは、今もそうかは知らないが
パスワードを平文で保存してたよ
曰わく、わざわざ暗号化して保存することで無知なユーザーに偽りの安心感を与えるのは却って害だ
とのこと
57:デフォルトの名無しさん (ワッチョイ 353c-yd9a)
16/10/12 17:08:00.81 ENho6ZSf0.net
>ローカルに置く限りはどうとでもなる
まーこれだね
スタンドアロンで動作させるのが要件なら
鍵を複数に分割してバラバラの場所に埋め込むとかで、復号を面倒にするくらいが関の山じゃないか
58:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/12 17:13:10.57 istexQmRa.net
パスワード保存するってことは結局第三者であってもそのプログラムを経由したら
パスワードを知ってるのと同じことになるってことだから、よく考えればそれならそもそも別に
平文で保存したって大差ないような気もする。
まあそうは言っても体面もあるから、言い訳程度に暗号化しとけば十分なのでは
59:デフォルトの名無しさん (ワッチョイ ab0d-yd9a)
16/10/12 17:47:32.16 dzycFkoT0.net
みなさんありがとうございます
すべて参考にさせて頂き熟考します
60:デフォルトの名無しさん (ワッチョイ ab49-LThL)
16/10/12 18:49:52.25 BdIUeyBr0.net
っキーコンテナ
61:デフォルトの名無しさん (ワッチョイ fc42-lsIp)
16/10/12 18:51:17.74 S29qi1Dw0.net
Win10 のエクスプローラでひとつの jpg ファイルを選択して開きたいのですが
初めて開くフォルダでは選択されません (png なんかもなるようです)
こちらと同じ
URLリンク(dobon.net)
上のリンクでは SHOpenFolderAndSelectItems で解決とあるものの
jpg が 1 万枚とか大量にあるとやはり初回は選択されません
初回のもたつきが選択の処理を阻害している感じです
二度実行すれば大丈夫なようですがもっとスマートな策はないものでしょうか
良い方法を教えてください
62:デフォルトの名無しさん (ワッチョイ c37b-jLml)
16/10/12 19:12:24.70 XzbrdxqH0.net
Process.Startで関連づけで開いたら駄目?
63:61 (ワッチョイ fc42-lsIp)
16/10/12 20:24:14.25 S29qi1Dw0.net
>>62
ありがとうございます
関連づけ、というのがよくわかりませんが当方の環境でそのまま指定すると
jpg のビューアとクイックアクセスでエクスプローラが起動します
もし可能であっても関連付けなど環境を変えることはできないですねスミマセン
何か勘違いしていましたらご指摘ください
ちなみに Process.Start("explorer.exe", "/select,***") だとまったくダメで
(C# からでなく直接コマンド打っても同じです)
SHOpenFolderAndSelectItems だとマシになるといった感じです
64:デフォルトの名無しさん (ワッチョイ c37b-jLml)
16/10/12 20:28:54.30 XzbrdxqH0.net
Process.Start("hoge.jpg");
ってやることなんだけど
65:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/12 21:01:48.75 istexQmRa.net
VBScriptだと、既に開いてるExploreのウィンドウを捕まえて
操作できるみたいだから、同じことがC#でも出来れば必要なら何度か
リトライできそうだけど、どうやるんだろうねえ。
URLリンク(www.tek-tips.com)
66:デフォルトの名無しさん (ワッチョイ 5c7b-pu+C)
16/10/12 21:18:27.66 8upkYudZ0.net
>上のリンクでは SHOpenFolderAndSelectItems で解決とあるものの
よくある「ファイルの場所をエクスプローラで開く」ってこと?
そのdobonの記事内にある
URLリンク(stackoverflow.com)
のコード使ってファイル6000個程度で試したけど手元の環境ではもたついても最終的には正確に選択されたが
フォルダまたいでも選択されることに驚いた
67:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/12 21:41:21.77 y0Sdxi7M0.net
Func<int> func = () => 3;
var i = func.Invoke();
このInvokeとは何ぞや?
動き的にはfuncを実行してるんだなってわかるけど。
Invokeを右クリックして定義に移動しても出てこないし。
68:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/12 21:52:34.16 istexQmRa.net
>>67
URLリンク(msdn.microsoft.com)
69:デフォルトの名無しさん (アウアウ Sac5-xaNP)
16/10/12 21:58:33.95 5VjkdN+Ga.net
書いてる通りSystem.Delegateのメンバで、ただ実行するだけのメソッド
70:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/12 22:18:37.21 y0Sdxi7M0.net
DynamicInvokeメソッドはあるけどInvokeメソッドがないよ?
71:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/12 22:20:42.72 istexQmRa.net
>>70
だから>>68にちゃんと説明があるよ
72:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/12 22:23:02.23 y0Sdxi7M0.net
これ?意味不明。
>共通言語ランタイムが提供する Invoke デリゲートと同じシグネチャを持つ各デリゲート型の方法です。
>コンパイラは、それを自動的に呼び出すために、このメソッドは、c#、Visual Basic または Visual C から明示的に呼び出す必要はありません。
>Invoke メソッドは リフレクション 、デリゲートのシグネチャを検索する場合。
73:デフォルトの名無しさん (ワッチョイ 21dc-+EyG)
16/10/12 22:23:25.00 9oDwxE2X0.net
InvokeはSystem.Delegateクラスではなく「デリゲート型」に定義されている
デリゲート型っていうのは delegate T Func<T>(); のようにdelegateキーワードで定義される型のことね
で、通常のデリゲート呼び出しの構文 func() は func.Invoke() のシンタックスシュガー
74:デフォルトの名無しさん (ワッチョイ 7694-MJqz)
16/10/12 22:27:44.44 y0Sdxi7M0.net
なるほど
75:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/12 22:31:04.83 istexQmRa.net
>>72
機械翻訳が意味不明だから、古いバージョンのドキュメントを読んだ方がいいかもね
76:デフォルトの名無しさん (アウアウ Sa76-juU9)
16/10/12 22:32:26.53 istexQmRa.net
>>73
おいおい本当かよそれw
77:デフォルトの名無しさん (ワッチョイ d91e-xaNP)
16/10/12 22:52:16.65 x6Yo9Mwa0.net
一応張っておくぜ
URLリンク(stackoverflow.com)
78:デフォルトの名無しさん (ワッチョイ f93a-xaNP)
16/10/12 23:07:59.70 GJ+oagFT0.net
null条件演算子が出来てから、Invoke()の出番が増えたなぁ
79:デフォルトの名無しさん (アウアウ Sac5-xaNP)
16/10/12 23:44:05.17 44xB4wBga.net
ほんとに最近C#の勉強始めた者です。
Visual Studioの使い方がよくわからなくて……「新しいプロジェクト」から「空のプロジェクト」で、プログラムを書くのが良かったのですが、いつの間にかこの項目が消えて選べなくなりました。他はアプリを作るようなモードなので使いづらいです。。どうしてですか?
80:デフォルトの名無しさん (ワッチョイ 877b-nzJn)
16/10/13 00:52:36.58 aniHJH6t0.net
そもそも、空のプロジェクトの意味がわからない
画面を持つなら、Form だし、ライブラリを作るなら、DLL だろ。
それ以外にあるのか?
81:デフォルトの名無しさん (スフッ Sd4f-Oa01)
16/10/13 01:42:20.09 HIdK+zqJd.net
>>80
Visual C++のところに空のプロジェクトがあるだろ
82:デフォルトの名無しさん (ワッチョイ 1b9f-c7dp)
16/10/13 03:33:19.33 eeNekR2j0.net
左のインストール済み→テンプレート→Visual C#→Windowsデスクトップの中
83:デフォルトの名無しさん (ワッチョイ 8331-8qPS)
16/10/13 05:13:31.24 XSmxsz+k0.net
デスクトップアプリなんですが、
プログラム起動時にユーザーログインとテキストファイルの読み込みを行っています
で、それらの情報をいつでもアクセス出来るようStaticクラスに持たせているのですが
このような方法は特に問題ないでしょうか?
もっといい方法や推奨される方法があれば教えてください
84:デフォルトの名無しさん (ブーイモ MM4f-DI90)
16/10/13 07:46:56.79 d/dyHEl/M.net
そういう作りは依存関係が暗黙化されてわかりにくくなるよ
そのクラスをインスタンスにして必要なクラスのコンストラクタで渡せばいい
85:デフォルトの名無しさん (ワッチョイ bbdc-Oa01)
16/10/13 08:06:32.92 U+TNkLbY0.net
別のクラスの処理がテキストファイル内のパラメータに依存してたりすると、
単体テストのときテストケースの数だけいちいちファイル用意しないといけなくて面倒
>>84のように外から渡した上でインターフェイス経由でアクセスするのが理想
インスタンスをシングルトンで保持しておくのは構わないけど、それに直接アクセスしていいのは呼び出し階層の一番上だけ
他は常にコンストラクタかプロパティで渡す
面倒ならDIコンテナを使ってシングルインスタンスを注入する手もある
86:デフォルトの名無しさん (ドコグロ MM97-Oa01)
16/10/13 08:43:31.40 CLiojDhVM.net
>>83
ごく少数
かつ
それが色々な場所で使われる
なら
ありだと思う
>>84-85 みたいな頭でっかちの一見正論は常に役に立つ訳じゃないから無視していい
87:61 (ワッチョイ 8742-8qPS)
16/10/13 10:18:41.87 T2aLctg20.net
皆様ありがとうございます
>>64
jpg に対するビューアで表示されますので難しいのかなと
>>62 で「ビューアとクイックアクセスでエクスプローラが」と言いましたがビューアだけでした
>>65
リンク先のスクリプト当方ではなぜかうまく動きませんね
今のところこれを C# で実現する技量も持ってないです
表示させたエクスプローラを操作してというアプローチも検討していましたが
素人にはキツそうで他の安易な手法を模索中です
>>66
確かに 6,000 であれば選択しますね!これは知りませんでした
しかし 10,000 になると当方の環境ではほぼ選択されません
これまで single item のコードを元に実行していましたが
複数可のほうのコードで同じファイル名を重複して指定すると
10,000 で�
88:れば選択されることが分かりました ただ 20,000 などもっと増えるとダメなようです 二重実行だと 20,000 でも選択されるのでやはりこれで手を打つべき?
89:デフォルトの名無しさん (アウアウ Saff-+9sP)
16/10/13 11:10:13.49 D/S7S9qga.net
>>83
本当に共通の情報を複数から参照する必要があるのであればそれを一つのクラスにまとめてもいいけど、
単に永続化が必要な情報であるという理由だけで一つにまとめている(各々そのクラスにアクセスするのは
共通の情報ではなくそれぞれ別の情報)のであれば明らかに間違ってるな。
明確に理由は説明できないけど、staticなインスタンスではなくstaticクラスを使うのも
個人的にはちょっと違う気がする。
90:デフォルトの名無しさん (ワッチョイ d77b-8qPS)
16/10/13 12:55:57.73 QpGu+ou60.net
>>51
.NETで基礎を磨きたくて、ゲーム作りならモチベも下がらずにやれるかなと思ってこの本にしたんです。
参考書も購入済みなので、本格的なゲームを作る時はUnityを使いますよ。
91:デフォルトの名無しさん (ワッチョイ d77b-8qPS)
16/10/13 13:09:35.62 QpGu+ou60.net
>>79
Blend for visualstudioを選んでませんか?
これだと空のプロジェクトの項目はないので、visualstudio20xx(xxは自分がDLしたバージョン)を起動してください。
visualstudio20xxを起動させているなら、新規作成 > プロジェクト > visualC# > Windows > クラシックデスクトップにすれば出てきますよ。
92:デフォルトの名無しさん (アウアウ Sa97-Oa01)
16/10/13 13:44:34.25 OsInCkTea.net
>>90
いろいろ調べて、Express for Desktopというのをインストールしたところうまくいきました。ありがとうございます。
93:デフォルトの名無しさん (ワッチョイ 877b-8qPS)
16/10/13 16:59:59.60 Yv6P+Iys0.net
正規表現使ってファイルパスの一部を置き換え(消去)したいんですが、
パターンを書いてみたのですが、うまくいきませんでした
"C:\Users\PCname\test\file.xlsx"
このファイルパスを表す文字列のfile.xlsx部分だけを消去したいです
94:デフォルトの名無しさん (スプッッ Sdcf-Oa01)
16/10/13 17:10:05.54 mZgNLhHCd.net
>>92
正規表現にこだわらないなら、Pathクラス使った方が簡単じゃないか?
Path.GetDirectoryName メソッド
URLリンク(msdn.microsoft.com)
95:デフォルトの名無しさん (ワッチョイ 877b-8qPS)
16/10/13 17:17:53.92 Yv6P+Iys0.net
>>93
こんな便利なメソッドがあったんですね
回答ありがとうございました、無事にできました。
96:デフォルトの名無しさん (ブーイモ MM4f-DI90)
16/10/13 20:02:29.09 HwCkNWajM.net
>>86
またまたご冗談を
いろいろな場所で使われる静的なインフラクラスとかただの悪夢じゃないですか
97:デフォルトの名無しさん (スフッ Sd4f-Oa01)
16/10/13 23:29:34.82 tcMW2ABkd.net
>>86
賛成です
98:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/14 11:32:00.91 5Y7KbdSJr.net
wpf使わなくてもVisualStudioやPhotoshopみたいなブラック基調のFormデザインって作れる?
99:デフォルトの名無しさん (ワッチョイ bbdc-Oa01)
16/10/14 11:46:46.23 xv7XrH2t0.net
簡単にというなら不可能
そもそもWPFやWebブラウザは何もないところにGUI部品っぽいものを独自に描画してるわけで、
WPFやElectronで作る場合の100倍の工数かけてそれと同じようにスクラッチすれば可能
100:デフォルトの名無しさん (ワッチョイ 4f4c-Oa01)
16/10/14 12:10:54.76 SyTitZMd0.net
Designing XAML in Visual Studioからみてけば
101:デフォルトの名無しさん (ワッチョイ 9f23-8qPS)
16/10/14 13:39:00.09 D2RLd37K0.net
>>98
たしかに面倒だが、100倍も掛かるわけでもないよ
部品をフラットにして、スライダーみたいな複雑なのを諦めるとか
工夫次第でなんとかなる
102:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/14 14:05:32.92 5Y7KbdSJr.net
ありがと!
面倒だからやめた
103:デフォルトの名無しさん (ラクラッペ MMf7-8qPS)
16/10/14 16:58:20.50 WrhxhBRqM.net
dataSetの最大行数や最大列数なら取得できるのですが、指定した行の列数を取得する方法がわかりません。
どう書けば指定した行の列数を取得できるようになるでしょうか?。
最大行数の取得
dataSet.Tables["DataTable"].Rows.Count;
最大列数の取得
dataSet.Tables["DataTable"].Columns.Count;
104:デフォルトの名無しさん (ワッチョイ bb94-NvRm)
16/10/14 18:29:38.87 xiSagSQl0.net
列数って行ごとに違ったりする?
105:デフォルトの名無しさん (ラクラッペ MMf7-XnCm)
16/10/14 20:28:29.33 O8TwfpESM.net
はい。行ごとに列数は変わります。
例えば、0行目は1列しかなくて、1行目は5列あり、2行目は3列しかなかったりします。
ちなみに、列の最大数より少ない行の列(使われてない列)には、空欄になってます。(dataGridViewやxmlファイルで見ると)
106:デフォルトの名無しさん (ワッチョイ 83c0-8qPS)
16/10/14 20:35:37.38 XcyjZEXI0.net
>>104
それ値にnullが入っているだけで列そのものは存在しているよ
107:デフォルトの名無しさん (ラクラッペ MMf7-XnCm)
16/10/14 20:55:06.25 O8TwfpESM.net
ということは、最大数と同じですか・・・。
行の列数ごとに処理をしたかったのですが、別の方法を考えたほうがよさそうですね。
レスありがとうございました。
108:デフォルトの名無しさん (ワッチョイ 83c0-8qPS)
16/10/14 22:05:45.82 XcyjZEXI0.net
>>106
i行目のnull以外が入っている列の数が欲しいってのなら
dataSet.Tables["DataTable"].Rows[i].ItemArrayで行の値取得してから、ループ回してnull以外の数を数える方法もあるけど
行の列数毎に処理をするという時点で何か違う気もするけど
109:デフォルトの名無しさん (ワッチョイ 2349-ciRE)
16/10/14 22:15:24.28 naHK2HuB0.net
>>107
やってることは変わらないけど、LINQですっきり。
dataSet.Tables["DataTable"].Rows[i].ItemArray.Count( x => x != null );
110:デフォルトの名無しさん (ラクラッペ MMf7-XnCm)
16/10/14 22:16:02.67 O8TwfpESM.net
>>107
なるほど、そんな手もあるんですか。
処理といっても難しいものではなく、○行目の○列目が空なら次の行へいくというような処理です。
それを最
111:後の行までやる単純な処理です。
112:デフォルトの名無しさん (ワッチョイ 877b-8qPS)
16/10/15 03:32:09.91 zqId9pk40.net
c#を勉強中なのですが、WEBサイトにログインし、そのクッキーを取得する部分で躓いてしまいました。
語学も勉強中ですので、ja.forvo.comにアクセスするツールを勉強がてらに作ってみようと思ったのですが、
アクセスパラメタはlogin passeordの2種類しかないように見えるのですが、どこが間違っているかわかりません。
ContentLength>0 または SendChunked==true を設定する場合には要求本体を指定する必要があります。
と出てくるので、パラメタ関連だと思うのですが、どこか見落としているんでしょうか?
URLリンク(dotnetfiddle.net)
113:デフォルトの名無しさん (ワッチョイ 1b9f-c7dp)
16/10/15 04:14:59.65 Rly0bTEF0.net
>>110
GetResponseする前ににパラメータを送信してない
using (Stream requestStream = Request.GetRequestStream()) {
requestStream.Write(data, 0, data.Length);
}
114:デフォルトの名無しさん (ワッチョイ 877b-8qPS)
16/10/15 04:24:50.76 zqId9pk40.net
>>111
本当ですね、なんという凡ミス・・・
POSTを実行し忘れていました
回答ありがとうございました、無事にできました。
115:デフォルトの名無しさん (ワッチョイ 8b3c-8qPS)
16/10/15 07:58:43.10 aLbial8Z0.net
言語面は大変でも構わないがGUIが楽に出来る事、
windowsでさえ動けばそれで良い、
コンパイラは無料であること、
言語の情報収集が書籍に頼らずとも、検索したら日本語でいっぱい出てくること。
って条件を提示したらC#って言われたんだよね。
ここまで合ってる?
で、ちょっとやってみたんだけど、CUIはすぐに満足行く程度に出来ました。(ハノイの塔や乱数生成など)。
でもウィンドウの表示とか描画はかなり意味が良く分かりませんでした。
GUIは楽ではないのでしょうか?
あと、検索方法やサイトがよく分かりませんでしたので、GUIを学ぶのに良さそうなサイト教えてください。
ちなみにCやC++やRubyはできますが、GUIは一度もやったことありません。
116:デフォルトの名無しさん (ワッチョイ bbdc-Oa01)
16/10/15 09:25:22.99 k370RUkX0.net
そりゃお前がGUIに慣れてないだけだろ
C#のGUIフレームワークはVB.NETと共通
頭の弱いVBer連中にできてお前にできないなんてありえないから安心しろ
117:デフォルトの名無しさん (ブーイモ MMf7-DI90)
16/10/15 10:07:17.04 4a8N/lhaM.net
>>113
デザイナ開いてコントロール並べてイベントハンドラにやりたい処理を書くだけ
118:デフォルトの名無しさん (ワッチョイ 8742-b88/)
16/10/15 10:56:08.68 Ep2P5HuE0.net
>>113
>って条件を提示したらC#って言われたんだよね。
>ここまで合ってる?
合ってる
CUIよりGUIのほうが複雑だからGUI初心者にとって難しく楽ではないのは仕方ない
それでもC#はGUIの作業がかなり簡単になってる
頑張って覚えるしかない。”C# GUI”でググれば色々出てくるからそこから選べばいいんじゃないかな
119:デフォルトの名無しさん (アウアウ Saff-+9sP)
16/10/15 13:07:47.01 VsUz8hA6a.net
考えてみたら、WPFはともかくWindows Formも意外と
web上にはまとまったチュートリアルなかった気がするね。
どうやって覚えたんだったかな。
まあWindows Formなら触ってるうちにだんだん分かるとは思う。
GDI+は本格的にやるなら古いペゾルドの本でも買った方がいいかもしれない
120:デフォルトの名無しさん (ワッチョイ 4b79-8qPS)
16/10/15 15:39:03.38 keBjPhCw0.net
HTMLが分かるならWPFの方が良い
FormはGUIで組み立てていけるから楽だけど
121:デフォルトの名無しさん (ワッチョイ 877b-nzJn)
16/10/15 15:41:04.11 CMu4YX8d0.net
ボタンなどのコントロールを並べるだけなら、HTMLのformと同じだろ
線・円・四角形などを描画するなら、HTML5のCanvas 相当の知識がいる
122:デフォルトの名無しさん (ワッチョイ 875e-8qPS)
16/10/15 15:55:54.34 Y5UYqbC90.net
>>113
URLリンク(dobon.net)
URLリンク(www.atmarkit.co.jp)
WinFormsならデザイナに適当に並べてイベントをクリックしたらイベントハンドラ自動で配置されるんだからチュートリアルとかいらない気もする
123:113 (ワッチョイ 233c-8qPS)
16/10/15 17:38:54.02 gUMRUJva0.net
みなさんありがとう。
GUIの実現方法にもいろいろあるようで。(?)
まぁよく分かってないのですが、しばらく頑張ってみます。
124:デフォルトの名無しさん (ブーイモ MMf7-DI90)
16/10/15 17:43:06.42 pMgLYSqAM.net
>>120
悩むところなんてないのにね
素人の新人でも1日あればBMI計算画面程度のものは作れるようになる
125:113 (ワッチョイ 233c-8qPS)
16/10/15 17:45:41.99 gUMRUJva0.net
悩んでると言うよりGUIの仕組み自体が良く分からないって感じ
ようするに全部分からん。
126:デフォルトの名無しさん (ワッチョイ ff02-GF32)
16/10/15 18:36:15.94 i1h9IwSg0.net
とりあえず、WindowsFormsとWPFとの大きな二つのやり方がある事を理解する必要がある
127:デフォルトの名無しさん (ワッチョイ 67ce-dAUv)
16/10/15 18:44:07.15 6v+uOgk10.net
WindowsのGUIはWebや質問で集めた断片的な情報だけじゃVB使いにも劣る半端な物しか作れない
C#や.NETについてはペゾルド本とか定番の書籍とか沢山あるから通読を薦める
128:デフォルトの名無しさん (オッペケ Srd7-310H)
16/10/15 19:34:08.33 UDl7k1b2r.net
>>120
WPFでも、それと同じ作り方出来るよん。
メリットがあまり無いから、その方法でやる人がいないだけで。
129:デフォルトの名無しさん (ワッチョイ 83c0-Lzu8)
16/10/15 19:48:29.68 0Lh6WVUg0.net
>>126
バインディング考えるとWPFの方が楽でいいけど、ListViewの罫線引くのにも一苦労なのがな
130:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/15 21:45:59.61 auQgHyKEr.net
今のwinformってdpi変えてもレイアウト崩れないの?
131:デフォルトの名無しさん (ワッチョイ bbdc-x3Zw)
16/10/15 23:01:02.76 k370RUkX0.net
今のも糞もWinFormsは2.0を最後に一切更新されてないよ
132:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/15 23:13:33.54 auQgHyKEr.net
そーなんだ
てことはコントロール並べただけだとdpi変えたら崩れるのか
みんなどう対処してるの?
133:デフォルトの名無しさん (ワッチョイ 837b-n555)
16/10/15 23:14:29.34 Q3fCLt+y0.net
一応4でChartが導入されたよ(小声
外部ライブラリ取り込んだだけだけど
134:デフォルトの名無しさん (ワッチョイ 2349-ciRE)
16/10/15 23:25:23.56 vyO0bokn0.net
>>129-130
コントロール毎だけど、高DPI対応されてるぞ。(要app.config編集)
EnableWindowsFormsHighDpiAutoResizingとかで調べると出てくる。
135:デフォルトの名無しさん (ワッチョイ 6f66-8qPS)
16/10/16 17:31:11.11 SS2oz+Dc0.net
DataGridにバインドした場合通常
[日付][出荷][入荷][在庫]
[10/1][1000][ 0][ 0]
とバインドされますが、これをそのまま
日付 10/1|10/2|10/3|…
出荷 1000| 0| 1000|…
入荷 0|1000| 0|…
在庫 0|1000| 0|…
と横向きに表示したいのですが方法がわかりりません。
何か良い方法があれば教えてください。
136:デフォルトの名無しさん (ワッチョイ 3bcb-Oa01)
16/10/16 19:05:12.86 +xc9QiVj0.net
Datagrid 行と列 入れ替え
ってググって出なかったら俺ならあきらめる
137:デフォルトの名無しさん (ワッチョイ 877b-8qPS)
16/10/17 11:43:58.15 t0+3o69f0.net
Aというクラスの変数をBというクラスで変更したいのですが、
グローバル変数って極力使わないほうがいいんですよね?
その場合、どうやって変更すればいいんでしょうか?
138:デフォルトの名無しさん (アウアウ Sa97-DI90)
16/10/17 12:30:24.66 0QqIT/eXa.net
アクセサで変更する
139:デフォルトの名無しさん (ワッチョイ 834f-dAUv)
16/10/17 16:57:58.75 ka6apGFK0.net
>>133
「C# list 行 列 入れ替え」でググると、いくつか出て来るな
DataGridViewだと出来ないっぽいので、文字列配列でやるしか無さそう
140:デフォルトの名無しさん (ドコグロ MM37-Oa01)
16/10/17 19:17:50.46 XnOIml5dM.net
ちゅーかrowヘッダーでええんでは?
141:デフォルトの名無しさん (ワッチョイ bbdc-x3Zw)
16/10/17 21:43:52.24 8eStTtOD0.net
>>135
そもそも本当に外から変更する必要があるのかよく考えた方がいい
安易にプロパティ(アクセサ)を使うのはお勧めしない
Aの内部に深く依存した処理ならそれはA自身のインスタンスメソッドにするのが自然
142:デフォルトの名無しさん (オッペケ Srd7-310H)
16/10/17 22:08:48.29 J1512ejnr.net
>>135
普通はBにdelegateを持たせてAがRegister
143:デフォルトの名無しさん (ワッチョイ 9f23-8qPS)
16/10/18 00:15:54.00 5HYuZfg90.net
BがAを生成するなら特別問題となることはないが、それ以外の場合だと一筋縄ではいかんよね
static classよりprism.unityのようなDIコンテナを検討すると良いかもしれん
144:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/18 01:07:54.24 z7NEdDzIr.net
作ったアプリのインストーラーって自分で作るの?
145:デフォルトの名無しさん (ワッチョイ 877b-8qPS)
16/10/18 01:27:03.65 GSTk/GYq0.net
>>136
こういう方法があったんですね、無事にできました。
ありがとうございました。
>>139
なぜプロパティを使わないほうがいいのでしょうか?
>>140
delegateを使う方法も調べて勉強してみます、ありがとうございました。
146:デフォルトの名無しさん (アウアウ Saff-+9sP)
16/10/18 01:50:59.73 ZWaQacsZa.net
>>143
>>139は別にプロパティを使うなとは言ってないと思うよ
>>135みたいな質問をするレベルの初心者は、本来そのクラスの外部からアクセスさせる必要がない
値まで外部に対して公開してしまいがち。
だからBからAの値を変更したいがどうしたら...以前に、そもそも本当にBからAの値を
変更する必要があるのか、まずそれを再考した方がいいと言ってるだけ恐らく。
147:デフォルトの名無しさん (スププ Sd4f-Oa01)
16/10/18 02:23:54.86 yFGfvYQ8d.net
>>142
外注に出してもいいよ
148:デフォルトの名無しさん (フォォーッ MM47-8qPS)
16/10/18 17:04:32.16 FLRDVYGCM.net
DataTable.Select メソッドですが、条件に変数やtextBox.Textを入れて判定させることはできないのでしょうか?
もし、できるのであれば、やり方を教えていただけないでしょうか。
149:デフォルトの名無しさん (ワッチョイ 7bd6-8qPS)
16/10/18 19:22:23.19 t0O03s4a0.net
var hoge = dt.Select("id = " + textBox.Text);
じゃあかんの?
150:デフォルトの名無しさん (オイコラミネオ MM2f-tncL)
16/10/18 19:42:09.04 kZJdOEPWM.net
式を文字列で作ったらいいんじゃないかな
151:デフォルトの名無しさん (ワッチョイ 9f23-8qPS)
16/10/18 21:32:22.49 5HYuZfg90.net
幾らなんでもSQLインジェクション対策ぐらい考えて作るものでしょ
152:デフォルトの名無しさん (ワッチョイ 2349-ciRE)
16/10/19 00:35:49.06 D3jR0Y/10.net
使えるなら、LINQ to DataSet使った方が楽
153:デフォルトの名無しさん (アウアウ Sa3f-Oa01)
16/10/19 12:21:20.79 uDAkjBGca.net
アプリの組み込みDBでsqliteを使っているが、別のアプリからそのDBに接続するのは可能?
154:デフォルトの名無しさん (ワッチョイ 9b19-K4Kb)
16/10/19 13:14:54.61 az2iZHKt0.net
DBファイルにアクセスさえできるならもちろん
個人的にFirefoxの履歴とか他の自作ツールで見てる
155:デフォルトの名無しさん (ワッチョイ fbeb-pg89)
16/10/19 16:14:49.10 lVxjSt550.net
DataGridViewを使ってアプリケーションを作成していますが、
行を追加していくと当然メモリを消費しますが、
行を削除してもメモリが解放されません。
(RemoveAt、Clearなどで削除)
頻繁に行を追加したり削除するプログラムを作成していまして、
そのうちメモリが上限になってしまうのですが、
行を削除したときにメモリを解放するには
どのようにすればよいのでしょうか。
(VS2012です)
156:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/19 16:23:08.57 sakBD/O3r.net
c#は勝手にメモリ解放するから気にしなくていいんじゃない?
157:デフォルトの名無しさん (ワッチョイ fbeb-pg89)
16/10/19 16:33:39.48 lVxjSt550.net
>>154
レスありがとうございます。
私もその認識でいたのですが、
使用メモリが搭載上限(4G)まで行っても解放されないので、
(ガベージコレクタメソッドを使っても)
困っています。
158:デフォルトの名無しさん (ブーイモ MM4f-DI90)
16/10/19 17:24:56.64 arYWyhLnM.net
メモリダンプして解析ツールに投げてインスタンス掴んでる犯人を特定して適当に対処すればいいよ
159:デフォルトの名無しさん (ワッチョイ 834f-dAUv)
16/10/19 17:34:39.90 4Wr5Akus0.net
どれだけデカいデータを入れてるんだろ?
全然違うとこでメモリを溜め込んでいるのかもしれんし
160:デフォルトの名無しさん (ワッチョイ 1b9f-c7dp)
16/10/19 19:10:01.37 JZ054bhP0.net
めんどくさいけどVirtualMode使った方がいいかもね
161:デフォルトの名無しさん (ワッチョイ 875e-8qPS)
16/10/19 19:51:08.60 8L2TKUho0.net
DataGridViewに大きなデータを読み込む
→Rows.Clear()とColumns.Clear()とGC.Collect()する
→メモリの消費量変化せず
次に別の小さいデータを読み込む
→Rows.Clear()とColumns.Clear()とGC.Collect()する
→メモリの消費量が減る
どういう仕組みになっているんだろうなw
BitmapとかだとDispose()してnull入れてGC.Collect()するとすぐに反映されるんだが
DatagridViewにnull入れれないしな
見かけ上変わってないだけで実際には他に影響しない可能性もあるし
162:デフォルトの名無しさん (オッペケ Srd7-Oa01)
16/10/19 21:18:49.28 sakBD/O3r.net
>>159
大きなデータってなに?
163:133 (ワッチョイ 3e66-9S67)
16/10/20 06:52:10.99 kVktOnSP0.net
>>134
>>137
諦めてTextBoxを並べてそれっぽく見えるようにしました。
返信ありがとうございました。
164:デフォルトの名無しさん (フォォーッ MM5f-DrBp)
16/10/20 14:42:52.91 j15LCTLjM.net
>>147
その方法でできました。
ありがとうございました。
>>148
そのまま記述すると、列で判定されたりしてわからなかったんですよー。
>>150
そのやり方のほうが、処理が早いみたいですね!。
ちょっと勉強したいと思います。
回答してくださった方、ありがとうございました。
165:デフォルトの名無しさん (ワッチョイ 8e94-aczQ)
16/10/21 06:03:28.62 UXfZS+K/0.net
モジモジ君大作戦って事か
166:デフォルトの名無しさん (ワッチョイ e03c-AIfR)
16/10/22 22:16:30.80 v7gcb7o50.net
プログラムに関しては初心者です。
最近仕事でC#プログラムを作りました。
ある測定装置を制御するプログラムです。
質問です。
データ収集の時、多少時間がかかるので、
「今処理しているんだぞ」という表示をしたく考えています。
今現在はフォーム上に置いたラベルに「データ収集中です」とだけ
表示しています。
何かこれに動き(テキストのバックの色が変わるとか)が付ければ
いいぁと思っているんですが、「処理中に表記する」事に関して
参考になるようなサイト等あれば紹介していただきたいのですが・・・
宜しくお願いします。
167:デフォルトの名無しさん (ワッチョイ 1c5e-AIfR)
16/10/22 22:21:59.07 kIxm0CI90.net
>>164
ほかにもあるだろうけどBackgroundWorkerを使う例なら↓
URLリンク(dobon.net)
このページではProgressBarを使っているけどReportProgressメソッドに数値を渡せるから後は工夫次第
168:デフォルトの名無しさん (ワッチョイ df49-PUkO)
16/10/22 23:08:53.61 +hICpl7f0.net
BackgroundWorkerとか過去の遺物。今から覚えるならIProgress<T>。
URLリンク(www.atmarkit.co.jp)
169:デフォルトの名無しさん (ワッチョイ 213c-YT5Q)
16/10/22 23:23:07.21 NG/YSHI20.net
>>165
おじいちゃんかな?
170:デフォルトの名無しさん (アウアウ Sa76-48Mz)
16/10/22 23:36:06.64 hnOr+aGfa.net
>>166
BackgroundWorkerって一度も使ったことないけど、
正直、それってEAPより分かりづらくなってないか?
171:デフォルトの名無しさん (ワッチョイ 177b-+OdZ)
16/10/22 23:36:58.50 Hz0V4lr80.net
単に実行中ですよハングアップしてるわけじゃないですよって示すだけなら
Style=MarqueeなProgressBarを使う
172:デフォルトの名無しさん (ワッチョイ df49-PUkO)
16/10/23 00:06:56.07 rBqtbPOF0.net
>>164
ラベルの背景色を変更するのは簡単だよ。
label.BackColor = Color.Red;
とかで良い。
進捗報告が要らないなら、IProgressとかも使わずにこんな感じ。
(ラベルとプログレスバー)
URLリンク(ideone.com)
173:デフォルトの名無しさん (ワッチョイ 5bdd-YT5Q)
16/10/23 02:45:59.94 h7gARNSs0.net
>>164
プログレスバーの出番や
174:デフォルトの名無しさん (ワッチョイ e03c-9S67)
16/10/23 07:23:09.66 0dR84IuA0.net
164です。
皆さんいろいろありがとうございます。
>>170
プログラム見て、動きがすぐ読み取れればいいのですが、
いかんせん、初心者でして・・・すみません。
試してみますが、これは表記中になにか動きがあるのですか?
現在はフォーム上のラベルの背景色は変えていて
「データ受信中」
とだけ大きめに表示しています。
いかんせん、データ受信に時間がかかるので、
「データ受信中」のラベル表記に加えて、何か動きをつけて
「動いてまっせ」感を出したいと思っています。
一番いいのは「データ受信中」にラベルが一定間隔で点滅しているようにみえる
ようになればいいと思っていますね。
175:デフォルトの名無しさん (ワッチョイ 8e94-aczQ)
16/10/23 22:02:41.53 8jE4iVd50.net
label.Text = "動いてまっせ";
176:デフォルトの名無しさん (ワッチョイ df49-PUkO)
16/10/23 23:06:14.69 rBqtbPOF0.net
>>172
>>170はプログレスバーがアニメーションしてる。
ラベルを点滅させたりする機能はないので、やるならタイマー使って自分で実装。
ラベルの背景を点滅させるだけにした例
URLリンク(ideone.com)
上のコードにはタイマーの設定が無いけど、タイマーのプロパティーのIntervalを点滅間隔(msec)に設定して、
Tickイベントをダブルクリックすれば、timer1_Tick()の雛型が出来るよ。
いずれにしろ、時間のかかる処理を実行する場合は、タスク等で非同期処理にする必要がある。
そうしないとGUIが固まるので、動きのある効果を出せない。
177:デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)
16/10/24 23:19:31.36 zmhV7cki0.net
配列Aに1,4,6,2,3,5に
配列Bに6,5,3,1,2,4とあるとして、配列Aと同じ順番に配列Bをソートしたいと思っているんですが、
forの2重にしてひとつひとつ比較して並べ替えるしか方法って無いんでしょうか?
178:デフォルトの名無しさん (ワッチョイ 9ddc-A7+C)
16/10/24 23:32:54.72 b4iOClrl0.net
var bdict = 配列B.ToDictionary(b => b);
var sorted = from a in 配列A where bdict.ContainsKey(a) select bdict[a];
179:デフォルトの名無しさん (ワッチョイ dfc0-9S67)
16/10/24 23:34:24.42 +Pg3OEGx0.net
クエリ式がどうも好きになれないのはなんでなんだろうな
180:デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)
16/10/25 00:03:13.22 guF/luut0.net
>>176
ありがとうございました。
>>177
自分もクエリ式勉強中なのですが、どうも慣れていないせいか
しっくりこないです・・・
181:デフォルトの名無しさん (ワッチョイ 9ddc-A7+C)
16/10/25 00:16:44.02 ZSR0a5K90.net
宣言的すぎるからじゃね
メソッド形式は高度に抽象化されてるとはいえ内部の手続きはまだなんとか透けて見える
ML系の本格的な関数型言語を学ぶとクエリ式の方が自然に感じられるようになる
182:デフォルトの名無しさん (アウアウ Sa76-48Mz)
16/10/25 00:22:06.79 vHFAVaN6a.net
同じ順番にソートってそれコピーと同じじゃないのかって気がするんだけど...
183:デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)
16/10/25 00:41:40.24 guF/luut0.net
>>180
あ・・・・・
そりゃそうですよねw
184:デフォルトの名無しさん (ワッチョイ 1c7b-AIfR)
16/10/25 01:28:34.91 guF/luut0.net
連投失礼します。
>>180
コピーのような気がしたんですが、自分がやりたかったことでいうと、
xlsxの中に画像ファイル名、画像説明を順不同で入っている
画像名と説明をジャグ配列に格納(配列A)
画像ファイルのパスを配列Bに格納
配列Bを配列Aのファイル名順にソート
ということがしたかったので、やはり上で教えていただいたとおりにしたほうがコードがすっきりしました。
185:デフォルトの名無しさん (アウアウ Sa27-YT5Q)
16/10/25 02:09:08.09 RwrgdaWZa.net
>>182
画像名と説明とパスを持つオブジェクト作って、その配列を持っとけばいいんでないの?
比較のインターフェイスの実装でファイル名を比較するようにすれば、なんとでもなるような。
別の配列に従ってソートとか、関係無いものでソートしているようで気持ち悪いし、おいおい困りそう。
186:デフォルトの名無しさん (ワッチョイ 9ddc-YT5Q)
16/10/25 06:43:34.05 ZSR0a5K90.net
俺も好きではないが、ソートキーと値が別の配列ってのはそんなに珍しい状況ではないだろ
実際、そのものズバリなメソッドがある
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
187:デフォルトの名無しさん (ブーイモ MM6d-vevC)
16/10/25 06:59:06.17 NvEtdSjAM.net
データ配列とその各要素へのアドレスを格納した配列を用意してアドレスだけ並べ換えるとか昔はよくやったものだ
188:デフォルトの名無しさん (スププ Sdb8-YT5Q)
16/10/25 12:26:17.11 74VODe2Id.net
>>184
おー、これは勉強になる。ありがとう。
>>185
ポインタの配列と聞かれると確かに納得感あるな。
189:デフォルトの名無しさん (ワッチョイ ed87-l6JH)
16/10/25 13:05:36.36 uBRc/ViR0.net
>>156-159
先日はレスありがとうございました。
アプリケーションの使われ方で根本的な問題があって、一旦棚上げしております。
次にお聞きしたいことがありまして、
DataGridViewの通常モード(not仮想モード)で、
画面に表示されているときだけ、決まったセルに画像を表示し、
スクロールされて画面外に出たときはその画像を削除する方法はありますでしょうか。
仮想モードを使えない理由は、DataGridViewのテーブルを動的に作成しており、
インプットデータとDataGridViewのあるセルの数値を見て、
新規行を追加するかしないかを判定してるため、予め最終的な行数がわからないためです。
190:デフォルトの名無しさん (ワッチョイ ed87-l6JH)
16/10/25 15:51:31.59 uBRc/ViR0.net
>>187ですがとりあえず自己解決しました。
ですが、フォームのサイズを変更されると、
現在見えてる行数が変わるのですが、
それが取得出来なくて、表示処理に苦心しております。
最終手段はDataGridViewのサイズから行の高さで割り返して
求めるしかないとかと思っていますが、
他にスマートな方法などありますでしょうか。
191:デフォルトの名無しさん (ワッチョイ 5d94-iDGi)
16/10/25 16:25:22.37 7TH0YyHm0.net
Rows.GetRowCount(DataGridViewElementStates.Displayed)
ではうまくいかない?
192:デフォルトの名無しさん (ワッチョイ ed87-l6JH)
16/10/25 16:31:54.92 uBRc/ViR0.net
>>189
ありがとうございます!
見事取得することが出来ました!
感謝です!
193:デフォルトの名無しさん (ワッチョイ e03c-9S67)
16/10/25 20:52:27.11 c343kGsU0.net
>>174
ありがとうございます。
参考にします。
194:デフォルトの名無しさん (ワッチョイ fb0d-JJ20)
16/10/27 09:31:19.17 z/oC4hLu0.net
サードパーティのHogeという名前空間のDLLがあり、
それを自身のMy.Hogeという名前空間上で利用するにはどうしたらいいでしょうか?
using Hoge;
namespace My.Hoge {
...
//Hogeは自身(My.Hoge)の方が参照されてしまいエラーになる
var fuga = new Hoge.Fuga();
195:デフォルトの名無しさん (ワッチョイ 0319-xC4o)
16/10/27 09:47:56.97 6XhIQECk0.net
global::Hoge
196:デフォルトの名無しさん (ワッチョイ fb0d-JJ20)
16/10/27 09:58:13.92 z/oC4hLu0.net
>>193
できました!ありがとうございます!!
197:デフォルトの名無しさん (ワッチョイ a387-corf)
16/10/27 14:25:21.93 wen2xrAS0.net
度々の質問で申し訳ありませんが、
DataGridViewで、特定の列のセルが選択されているかどうかを簡単に判定する方法はありますでしょうか。
具体的な例ですと、1列目のセル(どこの行でも良い)が選択されていればtrue、
どこのセルも選択されていないか、他の列のセルが選択されている場合はfalseを得たいと思っています。
なお、選択されているセルが複数列に及んでいる場合、1列目が含まれていればtrueで良いです。
198:デフォルトの名無しさん (JP 0H7f-WjTj)
16/10/27 14:42:40.44 0JCOu095H.net
自分なりに調べとるか?
199:デフォルトの名無しさん (ワッチョイ a387-corf)
16/10/27 14:53:51.07 wen2xrAS0.net
>>196
レスありがとうございます。
今朝からずっと調べているのですが、
行全体が選択されているときなどは取得する方法はわかったのですが、
セルだけ選択されているときの判定がわからないでいます。
選択されているセルの位置を個別に判定すればもちろんわかるのですが、
すっきりした方法がないかと思い質問させていただきました。
200:デフォルトの名無しさん (ワッチョイ a387-corf)
16/10/27 17:51:25.17 wen2xrAS0.net
>>197ですが、
結局個別のセルの列番号を判定して処理することにしました。
ありがとうございました。
201:デフォルトの名無しさん (ワッチョイ 875b-ftE3)
16/10/30 07:47:13.97 x2/G0x4G0.net
.NET Native
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
202:デフォルトの名無しさん (ワッチョイ e7ed-lCKD)
16/10/30 10:33:24.81 FLgXsJlx0.net
EdgeってまだWebBrowserコンポーネントとして
使えないのでしょうか?
203:デフォルトの名無しさん (ワッチョイ e3dc-ijxz)
16/10/30 20:15:29.09 payAbzEM0.net
永久に使えないと思うよ
.NETの一番の用途は業務アプリなんだから、
Edgeが更新されて動かへんようになったやないかどないしてくれんねん客の業務止まってんねんぞボケェ!
となるのはMSも嫌だろう
204:デフォルトの名無しさん (ワッチョイ d3a1-O9pn)
16/10/30 20:52:10.17 MO+ginbx0.net
UWP(WinRT)以外にedgeが出張って来ることはまず無いと思う
205:デフォルトの名無しさん (ワッチョイ 3f13-Jz20)
16/10/30 21:22:13.26 qBBSmv5i0.net
WebブラウザーのコンポーネントがないとWindows10 mobileでハイブリッドアプリ作れないんじゃないの?
206:デフォルトの名無しさん (ワッチョイ 0323-0DI1)
16/10/30 22:04:35.41 jy83/5Dm0.net
edge以前に、何もしないとIE7 互換ってのはちょっとな
207:デフォルトの名無しさん (ワッチョイ 9b7b-nx48)
16/10/31 01:27:08.66 y972gnmv0.net
>>203
WebViewはStoreAppでもUWPでも用意されてるぞ
なんのエンジン使ってるのかは知らんけど
208:デフォルトの名無しさん (オッペケ Sr7f-Jz20)
16/11/02 13:52:56.07 QQnK2Nx3r.net
winformアプリ作くるんだけど、データベースって何使うのがいいの?
別サーバー用意するんじゃなくアプリ単体で解決したいんだ
前にsqLite使ったことあるんだけど
頻繁にロックかかるしファイル丸見えだからあまり現実的じゃないと思った
ちなみにデータベースエンジンとデータベースそのものの区別はわかっとるつもり
209:デフォルトの名無しさん (ワッチョイ 8f4c-Jz20)
16/11/02 14:07:13.78 g1lvpi1B0.net
それでもやっぱSQLiteかなー
ファイルベースで解決できるし
210:デフォルトの名無しさん (オッペケ Sr7f-Jz20)
16/11/02 14:11:59.91 QQnK2Nx3r.net
>>207
使いやすさでいえばSQLiteなんだけどね
何かの拍子にロックかかったらデータベースファイルをコピーしたファイルを使うしかロック回避できないんだよなあ
まあアクセスできなくなったらコピってそっちにアクセス、でいいんだけど…
あと機密情報とか簡単に見れてしまうのはどうしようもないよね
211:デフォルトの名無しさん (JP 0H7f-WjTj)
16/11/02 14:16:26.97 008SucRsH.net
暗号化しとけばいいんでないの
212:デフォルトの名無しさん (オッペケ Sr7f-Jz20)
16/11/02 14:32:24.63 QQnK2Nx3r.net
暗号化できるのか…知らんかった
213:デフォルトの名無しさん (ワッチョイ 8723-0DI1)
16/11/02 16:28:36.49 Rf/eTlDT0.net
ローカルならmdbと、未だに生き残っているSqlServerCompact4.0てのもあるな
ef6でもサポートしているし、何故かMSが捨てきれていない
214:デフォルトの名無しさん (ワッチョイ 8390-lCKD)
16/11/02 22:52:02.30 WjbdorWW0.net
HttpWebRequestとHttpWebResponseを内包したラッパークラス的なものを使っているんですがどうもしっくりきません
呼び出ししてhttpレスポンスコードをによって処理を変えたいときなどかなり不便です
URLリンク(ideone.com)
どんなふうに実装すればいいかアドバイスがほ
215:しいです
216:デフォルトの名無しさん (ワッチョイ e3dc-ijxz)
16/11/02 23:55:15.23 pD2pdTer0.net
バカなことしてないでSystem.Net.HttpClientを使いなさい
217:デフォルトの名無しさん (ワッチョイ e990-7tG6)
16/11/03 13:15:37.09 UTe4MGM80.net
HttpClientでCookieやUserAgent弄れないと思うんですが・・・
どうにかして自分で自作ラッパー的なものを作りたいです
218:デフォルトの名無しさん (アウアウカー Sab5-DGmA)
16/11/03 13:17:40.60 ISr+08kWa.net
十分ラップされてるものをさらにラップしなくてもよくね?
219:デフォルトの名無しさん (ワッチョイ 7b49-XA/h)
16/11/03 13:23:23.18 5mG4/m370.net
>>214
どこのガセネタだ。
220:デフォルトの名無しさん (ワッチョイ e990-7tG6)
16/11/03 14:04:43.28 UTe4MGM80.net
後学のためにラッパークラスを作りたいというのはダメなのでしょうか?
221:デフォルトの名無しさん (アウアウカー Sab5-DGmA)
16/11/03 14:08:58.34 ISr+08kWa.net
それならソケットをラップしたほうが楽しい
222:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 15:05:14.53 qQ11y2tH0.net
string型を返す関数を使う時って、nullを返す場合を考慮すべきですか?
なんで空文字列""を返してくれないんですか
223:デフォルトの名無しさん (ワッチョイ 7bc0-Xqtn)
16/11/03 15:29:38.41 k4niuvLf0.net
string期待するときはIsNullOrEmptyやsNullOrWhiteSpace使うからその辺はあまりこだわってないわ
224:デフォルトの名無しさん (ワッチョイ e93a-DGmA)
16/11/03 16:26:25.12 ojzMDh+/0.net
?? ""
225:デフォルトの名無しさん (ワッチョイ 137b-A9qr)
16/11/03 17:52:26.46 ZHf7iZNF0.net
XMLのとある要素のテキストを持ってくるメソッドを書くとして、
要素がないのと空要素があるのは区別したいじゃん?
要素がないのは異常、なら例外でも良いけど要素がないのを認めるケースもあるじゃん?
226:デフォルトの名無しさん (ワッチョイ 9694-F00D)
16/11/03 19:07:59.15 9RMeDev80.net
パラッパラッパー
227:デフォルトの名無しさん (ワッチョイ bd91-DGmA)
16/11/03 21:26:17.75 pfzagnMt0.net
ちなみにnull許容型でシリアライズしたらXMLどうなるん
228:デフォルトの名無しさん (ワッチョイ 01d6-8n5s)
16/11/03 21:58:25.17 n66bP8+L0.net
数分で試せるだろ
229:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:24:56.14 qQ11y2tH0.net
沢山ある文字列処理の中に異物のnullが混ざる可能性があるなんて困るよ
作った人頭悪いの?
230:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:30:21.05 qQ11y2tH0.net
属性かなんか1行でstring型にnullが入る可能性を除去したいんだけどできないかなー
231:デフォルトの名無しさん (ワッチョイ 5194-rqdB)
16/11/03 22:33:10.42 Z2ns8N+e0.net
>>221 じゃ駄目なの
232:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:39:48.45 qQ11y2tH0.net
>>228
一見して何してるか判らんのはダメなんですよ
>IsNullOrEmpty
こんなの後付けするぐらい無計画に作ったん?
233:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/03 22:42:14.95 Zn5aPZIfa.net
>>226-227
たぶん頭が悪くて勘違いしてるのは君の方だと思うよw
もちろんメソッドの仕様が不適切な可能性も否定できないが、
空文字とnullを区別するのはむしろ当たり前だし、空文字とは別にnullを
返すことでしか満たせない要件があるのは一般的なことで、
それだけで直ちに間違ってるとは言えない。
234:デフォルトの名無しさん (ブーイモ MM31-m5qj)
16/11/03 22:43:40.66 sUyi6SurM.net
??はよく使う演算子だから一見してわからないなら勉強不足だろう
235:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:44:00.61 qQ11y2tH0.net
DBだと定義の段階でNULL含めるかどうかって決められるじゃん
ああいう風にできないの?
string型扱う度にいちいちnull判定なんてしてられないよ
236:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/03 22:44:10.88 tnVEjylW0.net
このやりとり前に見たよ
237:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:49:08.44 qQ11y2tH0.net
>>230
お前が話の論点理解できないほど相当頭悪いのは判った
238:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/03 22:50:02.92 Zn5aPZIfa.net
絵に描いたようなダメグラマだなこりゃ。
チ~ン。終わってる
239:デフォルトの名無しさん (ブーイモ MM31-m5qj)
16/11/03 22:50:47.42 sUyi6SurM.net
荒らしか
240:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:50:51.90 qQ11y2tH0.net
>>231
そもそも??なんていう意味不明な記号を演算子にする理由がわからない
これならIsNullOrEmptyでも使った方がマシってもんだよ
241:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/03 22:51:34.18 tnVEjylW0.net
>>232
現状はできないので↓にFeature requestを書いてくればいい
URLリンク(github.com)
素晴らしいアイデアならC#9あたりで導入されるだろう
ここで愚痴ったところで100年経っても導入されないから行動したまえ
単に愚痴が言いたいだけなら、ここでなく観葉植物にでも聞いて貰いたまえ
242:デフォルトの名無しさん (ワッチョイ 137b-A9qr)
16/11/03 22:53:06.27 ZHf7iZNF0.net
>>232
できないよ
nullがいやならC#は無理だね
他の言語に行こう
243:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:56:10.34 qQ11y2tH0.net
いやリフレや属性とかややこしい仕組み用意してる割にそういう事って本当にできないの?って確かめたかったんだけど
やっぱC#ってダメなの?
244:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/03 22:56:39.43 Zn5aPZIfa.net
っていうか、ID:qQ11y2tH0みたいな発想のプログラマってVBerに多いね。
俗にいう「例外を握りつぶす」ようなことをする困ったちゃんね。
nullを返さない仕様のはずのメソッドがnullを返すことがあればそれはバグだってことがわからないのな。
245:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 22:59:22.69 qQ11y2tH0.net
>>241
そりゃVB使いに失礼だろ
>>233によると俺以外にも疑問に思ってる奴はいたらしいし
246:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/03 23:00:46.73 Zn5aPZIfa.net
他にもいることは馬鹿でダメで困ったちゃんでない理由にはならないけどね
247:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/03 23:00:48.11 tnVEjylW0.net
またお前かって暗に言ったつもりだったよ
248:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/03 23:01:59.57 tnVEjylW0.net
まあ、別人なのは本当らしい
向こうは物わかり良かったし
249:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 23:06:23.47 qQ11y2tH0.net
颯爽とこうすりゃいいだよ!って素晴らしい解決法は出てこないんですか?
ここは無能ばかりですかー
250:デフォルトの名無しさん (ワッチョイ 01d6-8n5s)
16/11/03 23:06:45.61 n66bP8+L0.net
nullを完全に排除できるDBって存在するの?
251:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/03 23:06:55.78 K939jIpn0.net
んー?でもnullが来るときって定義できるよな?
そのケースはどういう対応をする予定なんだ?
仕様にヌケがある問題をコーディングの問題にすり替わってね?
252:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/03 23:07:58.07 tnVEjylW0.net
>>246
いいだよ!ってどこぞの田舎貴族か?
現状はできないので↓にFeature requestを書いてくればいい
URLリンク(github.com)
素晴らしいアイデアならC#9あたりで導入されるだろう
ここで愚痴ったところで100年経っても導入されないから行動したまえ
単に愚痴が言いたいだけなら、ここでなく観葉植物にでも聞いて貰いたまえ
253:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/03 23:10:56.52 Zn5aPZIfa.net
>>249
彼の言ってることは全然素晴らしくない
何か盛大に勘違いしてるだけ
勘違いしてる奴を増長させて他人に迷惑掛けるようなこと言わないのw
254:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 23:11:43.68 qQ11y2tH0.net
たぶん胡坐をかいてる君らも将来この変な仕様に苦しめられる日が必ず来る
そのときは俺の書き込みを思い出して欲しい
255:デフォルトの名無しさん (ワッチョイ 5194-rqdB)
16/11/03 23:14:09.69 Z2ns8N+e0.net
null合体演算子を使ってnull値をあっさりと処理するたびに「一見して判らない」とゴネてた子がいたなーとは思い出すかも
256:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/03 23:14:28.83 NjbREez30.net
>>232
そういうクラスを作ればいいだけ
誰が作るかって?
当然必要としてる人だよね?
257:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 23:15:20.85 qQ11y2tH0.net
そしてここに書き込むんだよお
またお前かって煽られながらな!
>>249
今のC#の仕様でできないかって主旨だからねえ
将来のC#がどうなろうが興味ないんで
258:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/03 23:16:58.79 NjbREez30.net
>>247
フィールドの not null 属性の話でしょ
259:デフォルトの名無しさん (ワッチョイ 91b6-m5qj)
16/11/03 23:22:32.46 kHdtgxJa0.net
プロパティ使ってSet時にnullだったら空文字に変換するとか?
260:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/03 23:25:14.82 K939jIpn0.net
つーかxmlて最近使う機会が多くなったけど
何がいいのかぶっちゃけわからない
プログラムで扱うならCSVのが遙かに楽だし
客に編集させるならiniファイルのが絶対にいい
100行以上あってネストもそれなりなxmlなんて編集できないだろパンピーじゃ
261:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/03 23:31:06.42 qQ11y2tH0.net
>そういうクラス
>null合体演算子
仮にそういうクラスや演算子使うとしてもさー
文字列処理する度にあちこちに埋め込むつもりなの君たち?
どうせ書き忘れてぬるぽするだけだろ
262:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/03 23:37:31.91 NjbREez30.net
>>258
> 文字列処理する度にあちこちに埋め込むつもりなの君たち?
意味わからん
263:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/03 23:50:23.32 HfUe3JFnd.net
nullと空文字列を区別できるのは便利だよな
264:デフォルトの名無しさん (ワッチョイ bd76-8Y51)
16/11/03 23:53:37.53 q/VeKpe70.net
>>257
もともとパンピーの利用を想定してないと思う。
DTDとか定義して厳密データ交換とかXPath/XSLTでの二次利用想定してたけど
あまりにも面倒なのでJSONとかYAMLに取って代わられてしまったな
HTML4の次を策定したときにXHTMLが主流になれなかった時に終わったと思う
>>258
nullが来ない前提で書いてぬるぽはテストで潰し切るけどなあ。
nullで問題あるなら突っ込んだ時点でNGなんだから
DB絡みならDBの型を全部NOT NULLにしておけばそう発生しないし
全部NOT NULLで定義できないなら結局nullable型(または判定処理)は必要ってことだし
265:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:12:02.56 j7dIV/6vd.net
>>257
CSVは階層構造に出来ないから扱いにくい
266:デフォルトの名無しさん (ワッチョイ 34ce-uTye)
16/11/04 00:16:43.73 0ODaAY820.net
階層構造は必要ない
267:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:22:15.02 j7dIV/6vd.net
必要ある
268:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 00:25:49.04 S7YCyC790.net
>>262
階層にする意味ねーし
269:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:30:11.38 j7dIV/6vd.net
意味あるよ
270:デフォルトの名無しさん (ワッチョイ fd4a-DGmA)
16/11/04 00:31:18.26 t9kfIjwC0.net
struct のフィールドにする。
271:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 00:33:20.91 S7YCyC790.net
最終的にはどうしたってDBに突っ込む将来が予想できるなら
階層構造なんて取っ払っておいたほうがいい
272:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:35:34.02 j7dIV/6vd.net
DBに突っ込む予定のデータの話なんかしてません
273:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 00:38:47.72 S7YCyC790.net
>>269
でもね
世の中そーなってんの
なのでツリーを積極的に作る奴はそれだけで無能
まあ、一度xmlで書いてみれば本当に必要だった構造が見えていいかも新内
274:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 00:41:52.66 j7dIV/6vd.net
今時XMLやJSON使わないなんて変わった人だねえ
275:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 01:07:31.20 S7YCyC790.net
部品Pを扱う建屋A,C,D,Eとか考えるともうツリーとか邪魔になる
276:デフォルトの名無しさん (ワッチョイ 653c-DGmA)
16/11/04 01:18:45.12 l35mknxG0.net
>>272
じゃあとりあえず、適当なcsprojをCSVで書いてごらん
277:デフォルトの名無しさん (ワッチョイ 3ee1-umBA)
16/11/04 01:36:14.39 9ZtkjL7R0.net
>>219
みんな頓珍漢なこと言ってるけど、nullを返さないことを保証するのは需要もあるし、すでに標準ライブラリには導入されてる。
もちろん、空文字を返すよりもnullを返すほうが合理的なこともあるから常にnullを返さないわけではないけど
契約プログラミング(Code Contract)
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
例えば、String.Concatのソースを見ると
URLリンク(referencesource.microsoft.com)
に以下のような契約が書いてある
Contract.Ensures(Contract.Result<String>() != null);
これは、戻り値がnullではないと保証する、ということ。
逆に、これがない場合はnullを返す可能性を考慮したほうがよい
現状言語仕様レベルでは契約プログラミングは組み込まれていないので、静的な処理をコンパイラの外で行う必要がある
もちろん言語仕様に組み込む要望は出てるが、やることが多すぎて手が回ってないのでまだ入りそうにはない
URLリンク(github.com)
Swiftみたいに新しい言語ではnullを許容しない型とかもあるんだけど、なんせC#は15年前の仕様を破壊するわけにいかないので
278:デフォルトの名無しさん (ワッチョイ 3ee1-umBA)
16/11/04 01:43:43.03 9ZtkjL7R0.net
あ、
>空文字を返すよりもnullを返すほうが合理的なこともあるから常にnullを返さないわけではないけど
っていうのは、非null契約が無いメソッドではってことね
非null契約があれば絶対にnullは返さない
非null契約に違反してnullを返そうとすると、静的処理でエラーになるとか、実行時に例外や強制終了になるはず(自分の認識では)
279:デフォルトの名無しさん (ワッチョイ 7213-DGmA)
16/11/04 01:44:56.97 fGBbyDJX0.net
XMLやJSONを使わせないとか老害もいいとこだな
280:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 08:12:03.85 S7YCyC790.net
>>276
データをDBに移しますね
の一言でend
そしてそれはあるあるNo1
281:デフォルトの名無しさん (スフッ Sd28-DGmA)
16/11/04 08:13:58.66 eeRk3Y1vd.net
DBに入れるならDBnullなんでは?
282:デフォルトの名無しさん (スフッ Sd28-DGmA)
16/11/04 08:15:29.14 eeRk3Y1vd.net
あ、言葉足らずだったな。
DBnullに相当する値か状態を表現したクラスしかないのでは?って。
重いとは思うが、それをXMLにあてればいいと思うけど。
283:デフォルトの名無しさん (ワッチョイ b0da-uTye)
16/11/04 08:19:28.81 Oa4odGBb0.net
複数の少数があります
1.5, 3.25, 6.75, 3.375 ....
これら全てが整数になる共通の値を見つけたいのですが、何かいい方法はないでしょうか?
単純に小数点以下が一番長い物に合わせて、1000倍などにしてもいいのかもしれませんが、
できるだけ最小の値にしたいと考えています
284:デフォルトの名無しさん (ワッチョイ b0da-uTye)
16/11/04 08:22:04.24 Oa4odGBb0.net
あ、↑は小数を乗算して整数になる、共通で最小の値という意味です
乗算について抜けていましたすみません
285:デフォルトの名無しさん (ワッチョイ 91dc-dKGq)
16/11/04 08:37:27.49 Fu63hJgb0.net
10^n倍して全部整数にしてから最大公約数で割れば
286:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/04 08:40:47.32 sU8qFob40.net
>>268
リレーションがなんのためにあると思ってるんだ? w
287:デフォルトの名無しさん (ワッチョイ 3223-8n5s)
16/11/04 08:41:56.32 Nv4A79J/0.net
>>281
小数点以下を分数に変換して最小公約数を求めたら良いんじゃないの?
288:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/04 08:53:29.87 S7YCyC790.net
>>283
それでいいんだよ
xmlで階層にすると悲劇が始まる
idかkey置いて階層は作らないのが正解
289:デフォルトの名無しさん (スップ Sd78-DGmA)
16/11/04 08:56:20.60 jjNRFD+ud.net
>>285
>>273
290:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/04 08:59:28.30 cFPdUXQMp.net
>>280
単純に10のn乗をかけると循環小数で詰むので分数化するに一票
291:デフォルトの名無しさん (ワッチョイ 7213-DGmA)
16/11/04 09:01:06.22 fGBbyDJX0.net
環境設定ファイルとかクラスをシリアライズするだけで済むのにわざわざDB化するとか馬鹿馬鹿しいわ
292:デフォルトの名無しさん (スフッ Sd28-DGmA)
16/11/04 10:48:32.91 eeRk3Y1vd.net
120120掛けて、それでもだめなら17掛けて、あとは2から割っていくと良いのでは?
それで端数が出たら、素数で割ってけば良いよ。
だいたい23くらいまで持ってたらきれいな数字になる。
分数化は面倒だろ。
293:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/04 12:29:37.50 whUy0fqsa.net
>>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
でいいような気がする。
厳密な証明は知らん
294:デフォルトの名無しさん (ドコグロ MMde-DGmA)
16/11/04 14:08:33.75 T6Zzc5iHM.net
>>285
お前は Excel 使っとけ w
295:デフォルトの名無しさん (ドコグロ MMde-DGmA)
16/11/04 14:10:31.34 T6Zzc5iHM.net
>>287
単純に分数にすると無理数で詰むので...
296:デフォルトの名無しさん (ワッチョイ d30d-uTye)
16/11/04 14:56:57.15 al1IuUx20.net
WPF、MVVMで
ファイルやフォルダの一覧を階層構造のTreeViewで表示したいのですが
EnumerateFileSystemEntries を使って実装する方法を教えてください
参考になるサイトやサンプルでも構いません
自分で探してみても単に取得する処理だけのもの(Viewへの適用などが無い)などしか見当たらず困っています
297:デフォルトの名無しさん (アウアウカー Sab5-DGmA)
16/11/04 15:41:50.56 zqM+jrKca.net
>>292
数学的に無理数の範囲でこの問題って解けるのか?
有理数じゃないと無理な気がするけど
298:デフォルトの名無しさん (アウアウカー Sab5-DGmA)
16/11/04 15:47:46.77 zqM+jrKca.net
解けないっていうか、特殊な場合を除きほとんど場合解なしが解になると思う
299:デフォルトの名無しさん (ワッチョイ bcdc-dKGq)
16/11/04 16:23:04.07 V0keAHui0.net
>>293
オブジェクトツリーが作れたらItemsSourceに放り込んでHierarchicalDataTemplateを定義するだけ
300:デフォルトの名無しさん (ワッチョイ 8a02-2mfK)
16/11/04 21:51:02.32 tYyOp6nC0.net
>>294-295
そもそも求める数が整数とか有理数に限るとはどこにも書いてないがな
301:デフォルトの名無しさん (ワッチョイ 3223-8n5s)
16/11/04 22:23:15.39 Nv4A79J/0.net
分数の上下桁数を2桁とか3桁程度の実用的な範囲にして、近似値で分数に変換すれば問題ないでしょ
求めたいものが何であるかによるけどね
302:デフォルトの名無しさん (ワッチョイ bcdc-DGmA)
16/11/05 00:26:17.96 u9ZZUUBm0.net
>>298
当てずっぽうでやるんならわざわざ分数化しなくても
最初から試しに乗算してみて整数っぽくなったらOKでいいだろw
303:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/05 09:41:59.67 OZKlek+X0.net
ストレージの評価のため、ファイルを同時書き込みするメソッドを
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());
}
304:デフォルトの名無しさん (ワッチョイ bcdc-dKGq)
16/11/05 09:56:26.86 u9ZZUUBm0.net
async(というかTask)はデフォルトではスレッドプールを使うから
同時に使用されるスレッド数には限りがあり、残りのタスクはキューに溜まるだけ
普通にnew Threadしたら
305:デフォルトの名無しさん (ワッチョイ e63c-DGmA)
16/11/05 10:06:58.71 6wNzhQFs0.net
>>297
> そもそも求める数が整数とか有理数に限るとはどこにも書いてないがな
えっ?
>>280
> これら全てが整数になる共通の値を見つけたい
306:301 (ワッチョイ bcdc-dKGq)
16/11/05 10:09:53.89 u9ZZUUBm0.net
>>300
いやそもそもasyncの使い方がおかしいな 戻り値voidの場合、awaitが無いとasyncキーワードは全く何の意味も持たない
ワーニング出てるだろ?
(意図とは違うだろうけど)TestMは普通に同期で順番に実行されてるはずだから、
単にswやtwを閉じてないために出力されてないだけじゃないか?
あとasync void使うな
307:デフォルトの名無しさん (ワッチョイ 5194-rqdB)
16/11/05 10:38:43.04 9mC8a8qM0.net
>>300
>>303の言うとおり非同期実行ではなく順番に一個ずつ書き込んでいってるはずだから
Mainのforループがエラーなく最後まで回っているかを確認してみたら
308:300 (ワッチョイ 7220-8n5s)
16/11/05 19:19:50.22 OZKlek+X0.net
根本的に非同期処理のやり方が間違っていただけなんですね
精進します
309:デフォルトの名無しさん (ワッチョイ 0117-7tG6)
16/11/05 20:30:25.56 ds+C0ndM0.net
まあネットで調べただけだと勘違いしやすいよね。
そういう風にしか書かれてないとこ多いもん。
310:デフォルトの名無しさん (ワッチョイ 1541-nJsM)
16/11/05 21:34:08.85 q4/6QuN40.net
書き散らしてるクソブログ多いもんなぁ
分かったフリして書く
↓
それを読んで分かった気になる
以下ループ
311:デフォルトの名無しさん (ワッチョイ 9030-Tcji)
16/11/05 21:42:26.72 BoxZvYjG0.net
最近だとQiitaの「自分用メモ」がひでえ
お前用のゴミを公開するな
非公開で保存できるんだから
312:デフォルトの名無しさん (ワッチョイ 71cb-DGmA)
16/11/05 22:52:00.60 iEc26fmZ0.net
昔は公開しておくといちいち指摘してくれてそれで正しい情報になっていったが
いまブログ書いてるやつがどういうつもりかわからんし触りにくいってのあるよなぁ
お節介やいてストーキングまでされたらたまらんし
殴り合い上等でブログやってる人ならいいが
最近打た
313:れ弱いくせに公開するアホ増えたからなぁ
314:デフォルトの名無しさん (ワッチョイ 21c8-umBA)
16/11/06 17:53:34.18 RAhQzM620.net
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 の仕様として仕方が無いのでしょうか。
315:デフォルトの名無しさん (ワッチョイ 01d6-8n5s)
16/11/06 19:37:13.87 jO0QNoEc0.net
仕方ない
氏名と名字、名前でも同じだしね
316:デフォルトの名無しさん (ワッチョイ 137b-A9qr)
16/11/06 20:19:58.80 A8MT+yST0.net
どうしてもってなら自分自身のPropertyChangedにイベント引っかけて
Valueが変更されてたらValue2のPropertyChanged起こすとかできるけど
同一クラス内でそんなの別に気にする必要もないんじゃね?
317:310 (ワッチョイ 21c8-umBA)
16/11/06 20:34:01.49 RAhQzM620.net
>>311 >>312
ありがとうございます。そのままの実装で作ってみます。
318:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 16:48:49.99 oxea6kUxr.net
>>252
コードレビューで散々ごねて書き直しさせた人がいましたww
319:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 16:51:52.12 oxea6kUxr.net
>>274
こんな事まで勉強してる人は滅多にいないかな。
それを言って理解出来る人も極めた少数派。
320:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 16:55:30.10 oxea6kUxr.net
>>307
あるあるww
321:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/07 17:15:04.36 RVVbQ4DBa.net
>>315
悪いけど、その程度のことは知ったうえでその質問者を批判してる人の方が多いと思うよw
322:デフォルトの名無しさん (ワッチョイ 9823-KjJO)
16/11/07 19:06:22.15 JC+EsK6v0.net
うん…言葉尻を捉えるようだがContractで極めたは言い過ぎだな
実装が気になればReferenceSourceを見るのは普通だし
解説としてメジャーなufcpp.netでも触れられている
言語の詳細に興味がない、学ぶ気概がない人はそもそも…
323:デフォルトの名無しさん (オッペケ Srbd-DGmA)
16/11/07 19:10:13.37 Msy9mjY5r.net
変数名規則どうしてる?
フィールド
publicなのは大文字開始でいいけど
privateなのをどうするか悩む
m_Hogeまたはm_hoge
f_Hogeまたはf_hoge
_Hogeまたは_hoge
324:デフォルトの名無しさん (ワッチョイ e9dc-DGmA)
16/11/07 19:52:43.99 07KTk/ms0.net
一番人気はJavaのスタイルに合わせてhoge
10馬身差で_hogeとm_hogeじゃないか
325:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/07 19:53:21.45 RVVbQ4DBa.net
バッキングフィールドは_hoge
それ以外のフィールドはmHoge
326:デフォルトの名無しさん (ワッチョイ 45bd-bOSl)
16/11/07 20:47:02.70 PlwpY0UQ0.net
Qiitaですげえイラッとする内容で、
ライブラリやツールつかって、やたら「簡単にできる」みたいなことを押す論調で、
紹介している奴。
「簡単にできる」 = 「自分自身で何やってるか、何が変わったかよくわからなく
なる」ということであって、
どうなるかの仕組みを考察したり解説したりするならいいが、
その盲点を無視して、
「ね?猿でもこんなこと簡単にできるでしょ?」
「使わなきゃ損でしょ?」とかはしゃいでいるガキには、物事を説明する
資格はない。そんな有害な記事はネットに上げるな。
327:デフォルトの名無しさん (アウアウオー Sade-MAch)
16/11/07 21:36:50.71 RVVbQ4DBa.net
誰と戦ってるおつもりなのかねw
ばっかじゃなかろうか
328:デフォルトの名無しさん (オッペケ Srbd-X2H6)
16/11/07 22:21:11.52 JoerH3dAr.net
>>318
ごめんなさい。
極めて少数派
の打ち間違いです。
329:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/07 23:00:37.04 geFZXkbd0.net
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() で次々書けたら良いなと思うのですが
よろしくお願いします
330:デフォルトの名無しさん (ワッチョイ e9dc-dKGq)
16/11/07 23:09:18.73 07KTk/ms0.net
>>325
本題の前に、
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
> Json.NET should be used serialization and deserialization.
とMS様もぶっちゃけてる通り、.NETでJSONを使うならJavaScriptSerializerではなく
デファクトスタンダードであるJson.NETを使いましょう
でJson.NETについて言うと、普通にList<T>をシリアライズすればJSONの配列になる。
事前に配列にしたいならToArrayすればいい。
331:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/07 23:15:49.87 geFZXkbd0.net
根本的にJavaScriptSerializerは推奨されない技術だったのですね
Json.NETを検討してみます
ありがとうございます
332:デフォルトの名無しさん (ドコグロ MMde-DGmA)
16/11/08 07:59:18.34 kkRkk3iCM.net
>>322
お前もQiitaとやらで
超難しい!超時間掛かる!
簡単とか言ってるやついるけどぶっちゃけ難解!
人類には早すぎた!
って記事かけや
333:デフォルトの名無しさん (ワッチョイ 7b49-XA/h)
16/11/08 21:00:12.94 360M0HJP0.net
>>301
TaskCreationOptions.LongRunningオプション付けてTaskを生成すれば専用のThreadになるから、生のThreadを使う必要ないよ。
それかスレッドプールの同時実行数をチューニングする方法もある。
334:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/08 21:46:12.39 xSnQLWcm0.net
昨日、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はキーバリューの形が一般的で
配列でどう表現するのか解りませんでした
よろしくお願いします
335:デフォルトの名無しさん (ワッチョイ e9dc-dKGq)
16/11/08 22:10:11.42 ic1oOtKi0.net
だからList<T>使えよ
JSON云々以前の問題
336:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/08 23:23:57.86 xSnQLWcm0.net
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]]]となってしまい
詰まっております
根本的に考え方が間違っているのでしょうか?
337:デフォルトの名無しさん (ワッチョイ 653c-m5qj)
16/11/08 23:35:34.26 qV47zIVg0.net
だからなぜ配列使うのかと…
338:デフォルトの名無しさん (ワッチョイ 7220-8n5s)
16/11/08 23:55:21.12 xSnQLWcm0.net
すみません
経験不足で、配列以外でやる方法が
想像つきません
どういうイメージでやれば良いのか
教えて頂きたいです
339:デフォルトの名無しさん (ワッチョイ 0117-7tG6)
16/11/09 00:02:28.77 hsAPe+Q00.net
そこは置いとくとして。これで解決したりしてな。(試してない)
解決なら変数の内容というか意味を考えるべきだな。
var list2 = (new List<int[][]>());
list2.Add( list.ToArray() );
// list2 をシリアライズ
340:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/09 03:15:10.85 qcMduGDNp.net
JSONの形だけでいいならこんなのでもいい
List<int[]>[] list3= {list};
int[][][] list4= {list.ToArray()};
341:デフォルトの名無しさん (ワッチョイ e93a-DGmA)
16/11/09 03:33:35.81 KnEUpDo20.net
>>332
List<List<List<int>>>
342:デフォルトの名無しさん (ワッチョイ 517b-8n5s)
16/11/09 05:25:22.53 moqMbmIT0.net
>>332
とりあえずその部分に納得したいならこうやれば形になるよw
var list = new[] { new List<int[]>() };
list[0].Add(new[] { 1, 2 });
list[0].Add(new[] { 2, 3 });
343:デフォルトの名無しさん (ササクッテロレ Spbd-m5qj)
16/11/09 14:02:25.71 qcMduGDNp.net
多分これ>>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は、右辺で型が明らかな場合コンパイラが型を推定して補完してくれる。コンパイル時に展開されるので省略せずに型を書くのと等価になる