X



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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part134
http://mevius.5ch.net/test/read.cgi/tech/1511951038/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0002デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/04(日) 22:10:08.05ID:HudK1GnQ0
>他のスレッドでは書き込めないような低レベルな質問、

public class cdata
{
public double Ampea ;
public double Volt ;
public double Temp ;
public double Activity ;
public double Flow ;
}

cdata cdt;
double[] ddt;
cdt.Temp をddt[2]としても扱いたいのだが、どういうように定義したらいい?
0010デフォルトの名無しさん (アウアウエー Sadf-Og17)垢版2018/02/04(日) 23:04:11.15ID:rXp7+rpAa
>>7
しょうもないことで絡む奴。アホか
君がべき論と現実の区別がつかないだけ。

例えば政府の勧告に従えば破綻は「破たん」と書かなければならないが、
現実には新聞とTVの字幕以外のほとんどのメディアでは相変わらず破綻と表記される。

>>5も同じこと
0016デフォルトの名無しさん (アウアウエー Sadf-Og17)垢版2018/02/04(日) 23:35:04.27ID:rXp7+rpAa
しかし、人を無知だと思い込まないと死ぬ病の奴、
いちいち他人に絡まないと死ぬ病の奴って何なの

こっちが>>5みたいな動きがあったことを意地でも知らなかったと思いたいらしいけど、
むしろ知ってるから>>3みたいな疑問が出てくるんであって、
知らなきゃよくあるカタカナ用語の表記の揺れかなで終わり。
0023愛恥人垢版2018/02/05(月) 00:33:45.47
これは>>7が悪い
0028デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:22:45.29ID:GlpP/XMd0
enum enDispNum { min = 2, max = 5 };

int[] dispno = new int[] {(int)enDispNum.min , (int)enDispNum.max }; //エラー
int[] dispno = new int[] {2,5}; //OK
int aa = (int)enDispNum.max; //OK

enumの挙動がわからん。なんで?
0029デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:26:30.78ID:GlpP/XMd0
enum enDispNum {dumy, min = 2, max = 5 };
ダミーいれたら動いた。w 笑かす。
0031デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:31:57.15ID:GlpP/XMd0
enum enDispNum:int {dumy, min = 2, max = 5 };
宣言で int 明示してもcastしないとエラーする。 Dumyがないとエラーするし
キャストしないと駄目だし、なんか使いにくいな。
0032デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:35:37.13ID:GlpP/XMd0
>30
エラー 1 型 'elRemoteControl.enDispNum' を 'int' に暗黙的に変換できません。
明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
0033デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:40:51.97ID:GlpP/XMd0
>30
同じように2,5で数値していをしてごらん。きっと笑えると思う。

dumyがなくても min=0なら動作するんだろう。おそらく。
例文みたらどれもこれも、数値していがないか、0は一つある。この場合は
dumy=0が暗黙定義されると見た。
0035デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:47:43.95ID:GlpP/XMd0
それだとdummyがなくても動く。不思議な、、、
0037デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 12:55:22.36ID:GlpP/XMd0
そうか。再現する物もあれば、しないものもある。()でくくるといけるものもある。
しかしenumを使う時は
1. dummyを入れる。
2.宣言でキャストしても 個別に必ずキャストすること。
というのを守った方がいいかも。
0039デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 13:02:01.82ID:GlpP/XMd0
「dummy を入れたらコンパイルエラーが止まる。正常にコンパイルされて
動作も正常に動作する。」
この理由を説明してごらんよ。
dummyを入れる以外にはなにも変更していない。
0040デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 13:08:04.86ID:GlpP/XMd0
やっぱ想像したとおりだ。min=0にしたら

enum enDispNum:int {min = 0, max = 5 };
これなら
int[] dispno = new int[] {(int)enDispNum.min , (int)enDispNum.max }; //OK
これでもOKだ。コンパイルエラーしない。
0041デフォルトの名無しさん (ワキゲー MMdf-lmiZ)垢版2018/02/05(月) 13:40:21.31ID:Bh+ceQwrM
まあ特殊なコンパイラ使っててそれがバグってるんだろう
とりあえず.NET Framework向けのMS製csc.exeは
> エラー 1 型 'elRemoteControl.enDispNum' を 'int' に暗黙的に変換できません。
このエラーが出た場合「エラー 1」じゃなくて「error CS0266」って出すし
0042デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 14:18:42.87ID:GlpP/XMd0
VS2013(Pro)だよ。Update5 .NETは4.7
因みにエラー1は一覧の番号だろ。一覧をコピペしただけだから。最初のエラーって意味だ。
2番目のエラーはない。
0044デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 14:25:03.58ID:GlpP/XMd0
どういう意味、VSで別のコンパイラーを動かすってこと? そんな高度なこと知りません。
標準のWindowsFormアプリケーションだよ。
0045デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 14:25:56.59ID:GlpP/XMd0
       List<List<Label>> ccValueSetLabel = new List<List<Label>>();
      private void DataRefresh(List<List<double>> datasc)
       {
           int colcount = 0;
           foreach (var dev in ccValueSetLabel)
           {
               var datas = datasc[colcount++];
               List<string> strdt = new List<string> ();
               int count=0;
               par.GetInstance().ElDataList.ForEach(x => strdt.Add(string_format(x.format, datas[count++])));
               count = 0; dev.ForEach(x => x.Text = strdt[count++]);
           }
       }
こういう場合に折角foreachを使っているのに、countを使うのはなんだかなーと思う。foreachを2重かするとか
addみたいにドンドンgetできる方法ってないの?
0047デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 14:41:33.37ID:GlpP/XMd0
もうEnumはいいよ。原因はわかったし、そんなものだろ。
0048愛恥人垢版2018/02/05(月) 14:42:47.42
俺も見たいからうpして(>_<)
0049デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 15:04:28.59ID:GlpP/XMd0
エラー 1 型 'elRemoteControl.enDispNum' を 'int' に暗黙的に変換できません。
明示的な変換が存在します。(cast が不足していないかどうかを確認してください)

これだよ。だから41が言ってたerror番号だよ。エラー一覧をコピペしたけど
出力一覧の方にはエラー番号がでてた。
0050デフォルトの名無しさん (ワッチョイ 9fd2-UzD8)垢版2018/02/05(月) 16:39:11.49ID:3nUubkW+0
こちらでは再現しないので、そのエラーが本当に出ると信じられない
本当なら今後のために原因をきちんと把握しておきたいので、とりあえず件のコードとエラーのスクリーンショットを提示してほしい
0051デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 17:19:51.66ID:GlpP/XMd0
 一寸聞きたいんだがキャストをかませないとエラーする件もそちらでは、出てないの?
 キャストなしでも動く? とすると俺のpCがおかしいな。 
でもキャストがいるとかDumyがいるとかだとやっぱり笑ってこらえる不具合含みでしょ。
俺のPCはDELLのディスクトップだからそこそこ早いやつだよ。(ゲーム用じゃないけど)
0052愛恥人垢版2018/02/05(月) 17:23:06.32
キャストをかませないとエラーとは?
0053デフォルトの名無しさん (アウアウエー Sadf-Og17)垢版2018/02/05(月) 17:25:57.56ID:GhnQpqxTa
意地悪だなあw
こんなの確認するまでもないでしょ

まず間違いなく、この質問者さんは、問題に遭遇したのとは
別のコードをここに書いてる。

要するに、彼の問題の原因は彼が思い込んでいるのとは別のところにある。

こんなところに書き込んでる時間があるなら
その間に彼の仮設を検証する最小限のコードを書いて確認すりゃいいのにと思うんだけど、
なぜかそれをしないんだよねこういうあわてんぼうさんは。
0054デフォルトの名無しさん (ワッチョイ 1714-lmiZ)垢版2018/02/05(月) 17:28:42.66ID:XmQ50b1K0
列挙型を数値型に代入するには明示的なキャストが必要なのは言語仕様
int[]の初期化子で全部intへ明示的にキャストしてるのにエラーが出るのはおかしい
まあそんなgdgdはいいからスクリーンショットはよ
0056デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 17:35:14.81ID:GlpP/XMd0
enum enDispNum { min = 2, max = 5 };
int[] dispno = new int[] {(int)enDispNum.min , (int)enDispNum.max }; //エラー
int[] dispno = new int[] {(int)(enDispNum.min) , (int)(enDispNum.max) }; //OK
int[] dispno = new int[] {(enDispNum.min) , (enDispNum.max) }; //エラー
int[] dispno = new int[] {enDispNum.min , enDispNum.max }; //エラー
int[] dispno = new int[] {2,5}; //OK
int aa = (int)enDispNum.max; //OK

enum enDispNum { min = 0, max = 5 };
int[] dispno = new int[] {(int)enDispNum.min , (int)enDispNum.max }; //OK
int[] dispno = new int[] {(int)(enDispNum.min) , (int)(enDispNum.max) }; //OK
int[] dispno = new int[] {(enDispNum.min) , (enDispNum.max) }; //エラー
int[] dispno = new int[] {enDispNum.min , enDispNum.max }; //エラー

enum enDispNum { dummy, min = 2, max = 5 }; これもmin=0にするのと同じ
(int)キャストなしは全部エラー
0057デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 17:39:57.27ID:GlpP/XMd0
上の状況は明示的に enum xxx:int{} やっても同じ。
enumで午前中潰してウンザリ。
0058デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 17:46:56.70ID:GlpP/XMd0
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/enum
この列挙型では、要素の並びは 1 からではなく、 0から開始します。 ただし、列挙型には
値が 0 となる定数を含めておくことをお勧めします。 詳細については、列挙型を参照してください。
0061愛恥人垢版2018/02/05(月) 18:03:46.69
ちな女
0062デフォルトの名無しさん (ワッチョイ ff9a-wbgk)垢版2018/02/05(月) 18:12:19.52ID:ny8aWquH0
idやワッチョイ隠す人は相手にしない方がいい
>>56
上のEnumの場合enDispNumのメンバーが数値だと推論できないんだろうな
理由は多分自分で貼った>>58
enDispNum.minなどのくくりにすると数値が定義済みだからキャストできる
キャストする対象をきちんとかっこで括らないとだめ
0064愛恥人垢版2018/02/05(月) 18:19:46.11
知ったかが偉そうなこというなよ(>_<)
0065デフォルトの名無しさん (アウアウエー Sadf-Og17)垢版2018/02/05(月) 18:22:49.67ID:GhnQpqxTa
>>62
全然理由になってないw
っていうか、質問者が言ってる現象が本当に再現できるか、自分で試してみました?w

あと、キャスト演算子の優先順位はドット演算子より高いはずなので、
キャスト演算子の後を()で括るかどうかで式の値は変わらないはず。

要するに、>>56はデタラメw
0070デフォルトの名無しさん (ドコグロ MM8b-mP5N)垢版2018/02/05(月) 18:46:50.79ID:dQZdP/WRM
こんな変な挙動になる環境って言うのも考えにくいので、質問者が壮大に勘違いしてるか単なるネタの疑念が拭いきれない
ソースとエラーになってる画面のスクショがででくるまでは傍観するわ
0071デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 19:12:13.02ID:GlpP/XMd0
色々想像できる名前が入ってるからスクリーンショットはだめだな。それにスクリーンショットみても
何も変わらんよ。エラーが一行でてるだけだから。

そもそもEnumて数値を設定して使わないから気が付かないだけだろ。それにもう
今月一杯で2013はやめて2017に変更するし。
0073デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/05(月) 19:44:13.45ID:GlpP/XMd0
List<string> strdt = new List<string> ();

count = 0; dev.ForEach(x => x.Text = strdt[count++]);
この部分は
dev.Zip(strdt,(x,y) => x.Text = y);
これで動くと思ったが動作しないがなぜ?
0075愛恥人垢版2018/02/05(月) 20:21:57.80
Zipに与えられたラムダ式は遅延実行されるから。
ZipしてからForEachしようぜ
0076愛恥人垢版2018/02/05(月) 20:23:04.21
devとstrdtをマージしたものにForEach
0078愛恥人垢版2018/02/05(月) 22:32:29.56
using System.Text.RegularExpressions;

var text = "dejdo8月dksk12月diwk";
text = Regex.Replace(text, @"\d+月", "");
0080愛恥人垢版2018/02/05(月) 23:54:36.42
using System.Text.RegularExpressions;

var monthPattern = new Regex(@"(\d+)月([^火水木金土日])");
var monthRemover = new MatchEvaluator(mc => Enumerable.Range(1, 12).Contains(int.Parse(mc.Groups[1].Value)) ? mc.Groups[2].Value : mc.Value);
var inputText = "kok3月rq12月12461123456789月火水木金土";
var monthRemovedText = monthRegex.Replace(inputText, monthRemover);
0081愛恥人垢版2018/02/05(月) 23:56:41.11
間違えた(>_<)
0082愛恥人垢版2018/02/06(火) 00:14:56.39
2箇所(>_<)
0084デフォルトの名無しさん (ワッチョイ 9775-uWnk)垢版2018/02/06(火) 01:41:51.19ID:XGJpv/sv0
9999999月火水木金
0089デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 08:01:18.07ID:eVD8eHcS0
var list_hoge = new List<Data_hoge>() {
new Data_hoge(){Key="1",Value=22 ,Flag=true},
new Data_hoge(){Key="2",Value=23 ,Flag=true},
new Data_hoge(){Key="3",Value=24 ,Flag=false},
new Data_hoge(){Key="4",Value=23 ,Flag=true},
};

この様なデータがあったときKeyに相当する引数(int=1〜4)を入れると
Flagがtrueのものの中でvalueが最大値を取るならtrueを返すメソッドを作りたいのですが
どうすればいいでしょうか?
LINQだと嬉しいです
0090デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 08:08:20.72ID:eVD8eHcS0
public bool saidaichidesu(int x)
{
var list_hoge = new List<Data_hoge>() {
new Data_hoge(){Key="1",Value=22 ,Flag=true},
new Data_hoge(){Key="2",Value=23 ,Flag=true},
new Data_hoge(){Key="3",Value=24 ,Flag=false},
new Data_hoge(){Key="4",Value=23 ,Flag=true},
};

var flaggedList_hoge = list_hoge.Where(data => data.Flag);
if (flaggedList_hoge.Count() > 0)
{
var maxValue = flaggedList_hoge.Max(data => data.Value);
この先どう書けばいいかわからない
}
return false;
}
0091恥人垢版2018/02/06(火) 08:23:21.72
Keyに相当する引数の役割は?
0092デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 08:26:12.74ID:eVD8eHcS0
位置、座標の様なものになります
0093恥人垢版2018/02/06(火) 08:32:59.69
最大値を持つ要素の中でKeyがxと一致するものを返したいということ?
0094デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 08:40:29.46ID:eVD8eHcS0
最大値をもっているもののkey(複数あり)がxと一致するかどうかを確認して、一致するならtrueを返したいです
keyがstringになっていますがこれをintにしても構いません
0096デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 10:10:37.94ID:vApM+tA70
寧ろ多くの人は解らんと思うが、、、先ずは質問の意味が正確に解るかどうかだな。
それが最大の問題だ。
「質問はすでにその中に解を含んでいる」、質問者が質問を正確に組み立てられないのは質問者の
責任として放置される性質のものではなくて、回答者の技量によって正確な質問に
組み立て直す。これは頭のいい回答者の責任になる。
でその役割りが君というわけだ。
0097デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 10:21:16.59ID:vApM+tA70
saidaichidesu(1)  −−> False
saidaichidesu(2)  −−> true
saidaichidesu(3)  −−> false
saidaichidesu(4)  −−> true
saidaichidesu(その他)  −−> false
上の例ではこういうリターンを期待してる? もしこうであれば簡単だよ。
0098デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 10:55:56.66ID:eVD8eHcS0
>>97
はい!それと同じです!
0099デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 11:26:06.22ID:vApM+tA70
           class Data_hoge{
               public            string Key;
               public            int Value;
               public            bool Flag;
           }
           public bool saidaichidesu(int x) 
           { 
                List<Data_hoge> list_hoge = new List<Data_hoge>() { 
                new Data_hoge(){Key="1",Value=22 ,Flag=true}, 
                new Data_hoge(){Key="2",Value=23 ,Flag=true}, 
                new Data_hoge(){Key="3",Value=24 ,Flag=false}, 
                new Data_hoge(){Key="4",Value=23 ,Flag=true}
                };

                var maxv = list_hoge.Where(dt => dt.Flag).ToList().Max(dt => dt.Value );
                var res = list_hoge.Where(dt => dt.Value == maxv).ToList();
                foreach (var dt in res)
                {
                    if (x == int.Parse(dt.Key))
                        return true;
                }
                return false;
           }     
0100デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 11:28:45.34ID:vApM+tA70
苦戦した。w 一行では難しいな。もっといい方法があると思う。
0101デフォルトの名無しさん (ワッチョイ 77d3-+DFt)垢版2018/02/06(火) 11:41:32.95ID:YagpYDjh0
たびたびお世話になります。
ラムダ式で作ったスレッドの優先度を変えるにはどのようにしたらよいのでしょうか。
Task sendTask = Task.Factory.StartNew(() => や
ThreadStart action = () =>
で作成したスレッドです。
0102デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 11:47:34.51ID:eVD8eHcS0
>>100
ありがとうございます!
0104デフォルトの名無しさん (ワッチョイ 77d3-+DFt)垢版2018/02/06(火) 11:58:32.99ID:YagpYDjh0
すみません、101ですが
Threadだけでも良いです。
Taskは優先度の概念?がなさそうですね。
0107デフォルトの名無しさん (オッペケ Srcb-ggKF)垢版2018/02/06(火) 12:28:10.60ID:v2bC5kd9r
>>105
ずっとそうだけど君を含めて
0108デフォルトの名無しさん (アウアウエー Sadf-Og17)垢版2018/02/06(火) 12:48:41.43ID:gO1cIWGHa
>>90
なんかよー分からんけど、

public bool IsMax(string key)
{
  var hogeList = new List<Data_hoge>()
  {
    new Data_hoge(){Key="1",Value=22 ,Flag=true},
    new Data_hoge(){Key="2",Value=23 ,Flag=true},
    new Data_hoge(){Key="3",Value=24 ,Flag=false},
    new Data_hoge(){Key="4",Value=23 ,Flag=true},
  };
  var max = hogeList.Max(x => x.Flag ? Value :Int32.MinValue);
  return hogeList.Any(x => x.Fkag && x.Key == key && x.Value == max);
}
試してないけどこんな感じでいける気が

しかし、>>89の日本語は酷すぎる
何を言ってるのかさっぱり分からない
0111愛恥人垢版2018/02/06(火) 13:48:39.64
// 指定したキーのデータが最大値を持つか
public bool hasMax(list<Data_hoge> list, int key)
{
// フラグが立っているデータの抽出
var flaggedList = list.Where(data => data.Flag == true);

// リストの最大値
var maxValue = flaggedList.Max(data => data.Value);

// 最大値を持つデータの抽出
var maxDataList = flaggedList.Where(data => data.Value == maxValue);

// 指定されたキーのデータが存在するか
var hasMaxValue = maxDataList.Any(data => data.Key == key);

return hasMaxValue;
}

これは悪いソースですか?それとも普通ですか?
0112デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 14:02:52.39ID:vApM+tA70
素晴らしい。よくわかる。良いソースリストの鏡。★★★★。
インデントがついていたらもひとつおまけした。
0113デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 14:08:14.50ID:vApM+tA70
★★★★
 var max = hogeList.Max(x => x.Flag ? Value :Int32.MinValue);
  return hogeList.Any(x => x.Fkag && x.Key == key && x.Value == max);

評:素晴らしい。1行目のMinValueの使い方がおもしろい。工夫があってなお且つ分かりやすくシンプル。
0114デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 17:02:57.89ID:vApM+tA70
★★★★
return list_hoge.Where(_hoge => _hoge.Flag).GroupBy(_hoge => _hoge.Value)
.OrderByDescending(_group => _group.Key).First()
.Any(_hoge => _hoge.Key == xKey.ToString ());
評:Keyでオーダーしたら絶対に動かないだろ。w と思ったが念のため試してみたら動いた。
 _group.KeyのKeyは実はValueをKeyにしてグループ分けしているのでKeyはHohgeのKeyではなくて
 HogeのValueと同じになる。初心者には難解過ぎるので★一つ減らす。
0116デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 17:51:59.65ID:vApM+tA70
//0〜9までの配列
var array = Enumerable.Range(0, 10).ToArray();

これと同じようにラベルのリストをつくりたいのだが、うまく行かない。どうしたらいい?
こんな感じだとおもうんだが。
List<Label> lblList = Enumerable .Range (0,10).Select (d => new Label (){ Text = d.ToString ()});
0119デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 18:29:23.79ID:vApM+tA70
>>116
自己解決!!
0120デフォルトの名無しさん (ワッチョイ f7f7-NsDz)垢版2018/02/06(火) 19:15:12.35ID:eVD8eHcS0
みなさんありがとうございます
全部参考にさせて頂きます
anyの使い方を知りませんでした
初心者的には>>111が一番わかりやすかったです
私の書いたコードを流用してくれているからだと思いますが
他の例の様にエレガントなコードを書けるように精進します
0121デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 20:28:32.37ID:vApM+tA70
private void test3()
{
    List<Label> dev=Enumerable.Range(0, 10).Select(d=>new Label() { Name="Label" + d.ToString() }).ToList();
    List<string> strdt=Enumerable.Range(0, 10).Select(d=>"--" + d.ToString() + "--" ).ToList();

    dev.Zip(strdt, (x, y)=> x.Text=y);
    Debug.Print("--------------------------------");
    foreach (var a in dev)
    {
        Debug.Print(a.Name + ":" + a.Text);
    }
}
これが動かない。同じ単純なアレイどおしなら問題なく動くと思うが、この場合は
色々やってみたがわからない。ZIPの後にForeachをかけるという
意見があったが、どうやって? マージした後にForeachかけるにはベクトルのコレクションを
返す必要がある。その方法が分からない。
0122デフォルトの名無しさん (アメ MMfb-xw+F)垢版2018/02/06(火) 20:32:12.84ID:wUppZDmPM
以下のコードを実行すると
array[index]へのアクセスで
out of range exceptionがでます
何故index==numItemsという状態が起こるのでしょうか?


for (var i = 0; i < numItems; i++)
{
task[i] = new Task(() =>
{
var index = i;
foreach ()
{
array[index]にアクセス
}
});
task[i].Start();
while((int)task[i].Status < (int)TaskStatus.Running)
{
Console.WriteLine(i+"\t"+task[i].Status);
}
Console.WriteLine(i + "\t" + task[i].Status);
}
0125デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 20:57:00.40ID:vApM+tA70
>動かないって言われてもエスパーじゃないんで...

int count = 0;
dev.ForEach(x => x.Text = strdt[count++]);

やりたいのはこれと同じこと。これは動作する。
0126デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 21:07:22.14ID:vApM+tA70
>>dev.Zip(strdt, (x, y)=> x.Text=y);
>ここのラムダ式の戻り値はyになるんだけど、これは意図してるのか勘違いなのか...

ここの意図はdevがLabelのコレクションだからxはそのラベルの一個を取り出す。
yはsrtdtがstringコレクションだからyはその一つの要素
x.Text=y
はラベルのテキストにストリングyを代入すること。
ラムダ式の戻り値はyになるんか? でもラベルにyをセットするのが目的だから戻り値は関係ないはず。

var retval = dev.Zip(strdt, (x, y) => x.Text = y);
Debug.Print("--------------------------------" + retval);
foreach (var a in dev)
{
Debug.Print(a.Name + ":" + a.Text);
}
戻り値をretvalに入れてプリントしたらこんなになってる。
--------------------------------System.Linq.Enumerable+<ZipIterator>d__61`3[System.Windows.Forms.Label,System.String,System.String]
Label0:
Label1:
Label2:
Label3:
Label4:
Label5:
Label6:
Label7:
Label8:
Label9:
0127デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 21:10:54.60ID:vApM+tA70
--------------------------------
Label0:--0--
Label1:--1--
Label2:--2--
Label3:--3--
Label4:--4--
Label5:--5--
Label6:--6--
Label7:--7--
Label8:--8--
Label9:--9--
これが期待値
0128デフォルトの名無しさん (アウアウエー Sadf-VW3n)垢版2018/02/06(火) 21:16:50.87ID:lO9x2Jqya
>>125
だったら最初からこれでいいのでは?知らんけど
List<Label> dev=Enumerable.Range(0, 10).Select(d=>new Label() {Name="Label" + d,Text = String.Format("--{0}--", d)}).ToList();

質問する前にもうちょっと自分で頭使って考えた方がいい気がするw
0134恥人垢版2018/02/06(火) 21:36:56.00
>>115
ネタじゃないです(>_<)
ダメな点を教えてください(>_<)
0136デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 21:44:25.92ID:vApM+tA70
>>128
ZIPの理解が目的なんでな。w
0137デフォルトの名無しさん (アウアウウー Sa5b-+DFt)垢版2018/02/06(火) 21:52:36.71ID:vvoO9Mxfa
>>134
横からだけど
いくつか気になるところがあるけど

とりあえず最後の二つの操作をよ〜く見て動作を考えてみたらいいのでは?

var maxDataList = flaggedList.Where(data => data.Value == maxValue);
var hasMaxValue = maxDataList.Any(data => data.Key == key);
0138愛恥人垢版2018/02/06(火) 21:53:01.64
>>121
自分が言ったのはこういうことです(>_<)
匿名クラスを使ってます
var marged = dev.Zip(strdt, (x, y) => {Label=x, Text=y});
marged.ForEach(item => item.Label.Text = item.Text);
0140愛恥人垢版2018/02/06(火) 21:58:11.36
>>137
意図した動作にならないという意味でしょうか、それともひとまとめにできるという意味でしょうか(>_<)
後者の場合は、一行づつで簡単な意味しか持たないほうが良いと思いすべて分離したのですがまとめまくったほうが良いのでしょうか(>_<)
0141デフォルトの名無しさん (アウアウエー Sadf-Og17)垢版2018/02/06(火) 22:12:46.39ID:ori7vw+Ya
>>134
ネタにしか思えんけどw

コメントも余分な一時変数も可読性に寄与しないどころか悪くしかしてないと思う。
好みの問題じゃないと思うけどな
こっちの方が読みやすいでしょ
public bool hasMax(list<Data_hoge> list, int key)
{
  var flaggedList = list.Where(data => data.Flag);
  var maxValue = flaggedList.Max(data => data.Value);
  return flaggedList.Any(x => x.Key == key && x.Value == maxValue);
}
0142愛恥人垢版2018/02/06(火) 22:13:47.78
>>141
ありがとうございます(>_<)
今後の基準にします(>_<)
0146愛恥人垢版2018/02/06(火) 22:21:37.74
>>144
一行づつで一つの意味しか持たないレベルに分解するのはやりすぎということでしょうか(>_<)
ありがとうございました。
0147愛恥人垢版2018/02/06(火) 22:22:53.83
>>145
確かにそうするべきでした(>_<)
ありがとうございます。
0149デフォルトの名無しさん (スップ Sd3f-qmJt)垢版2018/02/06(火) 22:26:05.95ID:T+4erG1sd
匿名関数なんてパインソのリスト内包表記とかでイメージつかまないとムズいよ?
それになぜそんなにリンクにこだわるのか
いまの時代にカッコつけてスーツに肩パッドいれてる人みたい
要するにカッコつけかたミスってるよ
0151デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 22:27:51.04ID:vApM+tA70
>>138
いい線行きました。!!!
  var marged = dev.Zip(strdt, (x, y) => new {lbl = x, txt = y} );
  foreach (var aa in marged ){
    aa.lbl.Text = aa.txt;
  }
これで動作してますが、Foreachはmargedにメソッドがでてこない。
0153デフォルトの名無しさん (ワッチョイ 179d-jn1r)垢版2018/02/06(火) 22:36:21.97ID:vApM+tA70
>>138
できました。解決。ありがとう。
0154愛恥人垢版2018/02/06(火) 22:40:30.16
>>149
LINQは手続き型(?)よりも簡単で良いと思っていたのですが勘違いだったのですね(>_<)
参考にします(>_<)

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

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

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

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

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

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

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

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

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

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

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

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

async await使ったことないのですが、
また調べてみます。 ところでそもそもの質問ですが、
>>122のコードでtask内からループカウンタを参照した時にnumItems以上になるのでしょうか?
0186恥人垢版2018/02/07(水) 20:49:50.30
スレチ
0189デフォルトの名無しさん (ワンミングク MM7f-NUVM)垢版2018/02/07(水) 21:31:07.99ID:QlGLhKOtM
既存のXMLを編集したい
編集したタグ以外の要素はテキスト表現を変えたくない

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

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

if (B > S)

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

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

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

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

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

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

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

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

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

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

逆にifなんて実態は機械語のJZ(Jump if Zero)で、要するに単に値を評価して分岐するだけ、
って考えると>>226みたいな書き方見るとなんじゃこりゃって思っちゃう
0250デフォルトの名無しさん (ワントンキン MM92-O/nr)垢版2018/02/09(金) 18:08:05.87ID:boHsluDEM
>>245
プログラマは考えてはいけない
どんなにおかしなプログラムになっても設計書の通りに書くことが大切
製品の品質より方法論や会社のルールを優先しよう
それがサラリーマンのあるべき姿だよ
0254デフォルトの名無しさん (ワッチョイ c223-g12m)垢版2018/02/09(金) 21:56:26.91ID:I0pHcAAD0
単純にa==trueって書くときa=trueっていうミスしたときに発見難しいけど
true==aって書くようにしてたらtrue=aってミスしてもコンパイル通らないから見つけやすいよねってだけじゃないの?
昔客先常駐でIT土方してた先輩はそう言ってた
0255恥人垢版2018/02/09(金) 21:57:48.11
アスペかよ
0258デフォルトの名無しさん (ワッチョイ 62e0-jA6l)垢版2018/02/10(土) 05:04:14.37ID:aLYixKao0
日経ソフトウェア買ったよ!
0259デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 08:55:01.53ID:agf4hW9w0
List<int> idata =new List<int> (){1,2,3,4,5,6};

foreach (var dt in idata)
{
dt = 0;
}
dt=0が代入できない。 idata[0]=0;は代入できる。これはどう考えたらいいんだ?
0261デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 10:58:14.53ID:agf4hW9w0
しかしLinqのForeachならセットできる。
0263デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 11:08:07.90ID:agf4hW9w0
List<Label> lbl = new List<Label>() { new Label(), new Label ()};
lbl.Add (new Label() );
foreach(var l in lbl) {
l.Text = "aaaa";
}
これはできるけど。
0264デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 11:14:08.02ID:agf4hW9w0
List<clsint> idata = new List<clsint>();
foreach (var i in idata)
{
i.val = 123;
} class clsint{ public int val;}
これもできるけど。
0265デフォルトの名無しさん (ブーイモ MM6d-nHV3)垢版2018/02/10(土) 11:15:02.53ID:h94azKRjM
dtが値型でも参照型でもコピー

参照型はアドレスがコピーされてるので
参照先のオブジェクトの書き換えが有効

値型は値自身がコピーされているので元の値に影響しない
0270デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 11:42:19.85ID:agf4hW9w0
>foreachで取ってきた要素はIEnumerator.Currentなので読み取り専用になる

参照型もIenumerator.Currentなのか?
なぜ読み取り専用でもライトできるのか?
0273デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 11:53:29.42ID:agf4hW9w0
>>271
なるほど!! 
0275恥人垢版2018/02/10(土) 12:07:40.93
>>272 >>274
グチグチうるせえな
0277デフォルトの名無しさん (ワッチョイ 3151-xK0a)垢版2018/02/10(土) 12:29:08.56ID:PglyRkoG0
読み取り専用の参照型の変数は参照は書き換えられないが、その参照を得ればそれが指し示す実体を読み書きできる
0278デフォルトの名無しさん (ブーイモ MM6d-nHV3)垢版2018/02/10(土) 12:35:19.58ID:h94azKRjM
Listは中に追加された値を保存してる

intとかの値型はその値自身を持ってる
クラスとかの参照型は対象になるクラスへの参照が入ってる

そのListの中にある参照先自体は変わってない

>>273
残念だけどその内容になるほどというとドツボにはまる
classじゃなくてstructにするとフィールドまで書き換えできないと気づく

フィールドに波及しないと言うのは誤った理解
0279デフォルトの名無しさん (ブーイモ MM6d-nHV3)垢版2018/02/10(土) 12:41:02.28ID:h94azKRjM
こんなところで怪しい回答に頼るより
しっかりした実績のある入門書に頼ったほうがいいよ

マジで

誰だってその時々で間違うし

本の時代は終わったなんていう奴がいるけど
webだけじゃ網羅的に勉強しづらい
0281デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:07:19.11ID:agf4hW9w0
foreach (var dt in idata)
{
dt = dt < min ? min : max < dt ? max : dt;
}
みたいなことができない。これはよくあるケースなので不便。
0282デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:11:16.15ID:agf4hW9w0
>しっかりした実績のある入門書に頼ったほうがいいよ

最近2冊ほど読んだけど、細かいところはやってみないとわからないよ。読んだだけでは無理。
なれが必要だ。で慣れるためにコードを書く。しかしサッパリ動かない。w
0283デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:15:58.33ID:agf4hW9w0
//パラメータをシングルトンで持たせたいのだが、Jsonで格納しようとするとstaticにできない。なので
referenceを返したいのだが、何かいい方法はない?

class Singleton
{
private Singleton(){}
public static Singleton getInstace() {
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder {
public static Singleton INSTANCE = new Singleton();
}

たとえば教科書にあるシングルトン。これに
class clsGrovalParam
{
public int value1;
public int value2;
public int value3;
}
public clsGrovalParam Param;
とやってParamを追加していたが、なんか動作がおかしい。W
と思ったらPublicにしていたので直接Paramを生成していてシングルトンになってなかった。

 .Param
こいつをStaticにできればいいのだが、Jsonで格納するときにスタティックにすると格納できない。
0285デフォルトの名無しさん (ブーイモ MMb6-sLQd)垢版2018/02/10(土) 13:30:10.75ID:S1subAI+M
>>283
そのレベルのことは一通り基礎を終えれば分かるから、今はソースに直にstaticで書いとけ
言っちゃ悪いけど、まだ設定の外部化なんか考えるようなレベルじゃない
シングルトンも忘れていい
0286デフォルトの名無しさん (ブーイモ MM6d-nHV3)垢版2018/02/10(土) 13:32:00.29ID:h94azKRjM
参照型と値型を区別できないと普通に困るよ
そのたびにここで質問するの?

俺はc#の仕様が面白かったので入門書みたいのを10回以上読んだ
delegateとかeventとか他にはなかったから刺激的だった
0287デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:37:02.28ID:agf4hW9w0
>シングルトンも忘れていい

グローバル変数を散らばらせるとなかなか大変になるので、ここは最初に抑えること。
別にシングルトンでなくてもいいが、、スタチックはJson.netに保存できないので仕方なしに
調べていたらシングルトン。ほんまにトンだよな。たったこれだけのことに頭を
悩ませないといかんとは。
0289デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:40:22.73ID:agf4hW9w0
>参照型と値型を区別できないと普通に困るよ そのたびにここで質問するの?

いままさにこれに困っている。そこでプロパティにしたらどうなの?って実験してみようと思っている。
private clsGrovalParam _Param = new clsGrovalParam() {value1 = 1};

public clsGrovalParam Param
{
get { return _Param; }
set { Param =_Param ;}
}
0290デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:41:47.03ID:agf4hW9w0
>>288
最初はそうでしょ。だれでも
0294デフォルトの名無しさん (アウアウウー Saa5-sLQd)垢版2018/02/10(土) 13:53:43.90ID:2bX56Vysa
>>287
>グローバル変数を散らばらせるとなかなか大変になるので、ここは最初に抑えること
それはそもそもグローバル変数が多いこと自体が問題。
まともな設計が身に着けば自然に減る。
シングルトンは基本的にアンチパターンであり、初心者が積極的に使うものではない。
0295デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 13:55:47.90ID:agf4hW9w0
>291
だめだよ。そういう覚え方は。最初は足と手の指を使って15までカウントする。
0296294 (アウアウウー Saa5-sLQd)垢版2018/02/10(土) 13:56:15.28ID:2bX56Vysa
初心者には紛らわしい物言いだったので補足
シングルトンはメンバも含めて実質すべてグローバル変数な
0303デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 14:16:21.43ID:agf4hW9w0
>295
細部はあまり関係ないと思う。
 ベテランはそういう細部をきにするが、要するにシングルトンで何をしたいのか? 
どう機能するものなのか?
それが大事なポイントじゃあるまいか。 名前の問題とか実装方法の問題じゃない。
別にシングルトンでなくてもいい。

ポイントはつまりアンチスパゲッティ。w

変数1,2、−−−100位は直ぐに散らばる。
これをまとめて一つにしておけば分かりやすい。まあ名前をまとめたところで参照は100か所に
なるから、どうしたって散らばるが、変更箇所は1か所にすることができる。それに括りの名前を付けて
おけばGrepできる。そういうメリットがある。ただそれだけのことだ。でもこれが大きい。
0304デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 14:20:22.95ID:agf4hW9w0
要するにインスタンスを一個しか持たないクラスにまとめたグローバル変数。

その割に実現がややこしい。w
0308デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 16:43:32.86ID:agf4hW9w0
class Singleton
{
private Singleton(){}

public static Singleton getInstace() {
return SingletonHolder.INSTANCE;
}
private static class SingletonHolder {
public static Singleton INSTANCE = new Singleton();
}
private clsGrovalParam _Param = new clsGrovalParam() {value1 = 1};
public clsGrovalParam Param
{
get { return _Param; }
set { Param =_Param ;}
}
}
class clsGrovalParam
{
public int value1;
public int value2;
public int value3;
}
このシングルトンは駄目だな。Getinstanceするたびに_Paramがnewされる。_Paramがシングルトンにならんだろ。w
ParamをStaticにしないでシングルトンを作るにはどうしたらいいんだ?
0309デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 16:45:37.25ID:agf4hW9w0
>設定データをシングルトンでって時点で何かがおかしい
アプリで共通に使うパラメータはシングルトンにする。
のがいいと思うのですが、、、、w
0310デフォルトの名無しさん (ブーイモ MM62-sLQd)垢版2018/02/10(土) 16:52:28.02ID:eFhUfahpM
>>309
単体テストが困難になるから避ける
大元のインスタンスはstaticでグローバルに共有してもいいけど、
そのグローバル変数に直接アクセスするのは最小限にしてコンストラクタなどで必要なものだけ受け取るようにするのが基本だよ
0312デフォルトの名無しさん (アウアウエー Sa4a-W6/A)垢版2018/02/10(土) 17:05:43.20ID:nWm1Yfxva
>>309
スレの流れを把握してないのでひょっとしたら話が噛み合ってないかもしれないけど、
そういうのは、例えばVSが吐き出すプロジェクトのスケルトンで言ったらProgramみたいな
クラスのstataicメンバーとして持てばいいだけの話で、むしろシングルトンで実装する必然性が分からない
0313デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:15:55.14ID:agf4hW9w0
Staticで持つとJson.Netが保存を拒否する。
0314デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:17:35.19ID:agf4hW9w0
string json = JsonConvert.SerializeObject(Param);
こんなの。
0315デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:18:43.93ID:agf4hW9w0
Staticでもってコピーすりゃいいだけか? そうだよな。w
0316デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:24:59.76ID:agf4hW9w0
あれっ、保存できた。しかしスタディックにしても値が初期化されてしまう。
なんか別のインスタンスを作ってる。
0318デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:43:18.71ID:agf4hW9w0
原因が分かった。
InitializeCompornent();がLoacalエリアをクリアしてる。
そんな馬鹿な。
Local変数でParamを宣言したときに
clsParam Param = clsParam.GetInstance ().Param ;
で値を代入してるのに。
コンストラクタのInitializeCompornent();がこのLoacalエリアをクリアしてる。そういうものか?
0320デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:52:03.67ID:agf4hW9w0
ごめん。ローカル変数。
0321デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 17:54:10.49ID:agf4hW9w0
でもやっぱり違う。ローカルを宣言して同時にGetInstanceで設定したら、その値が
入っている。 OK
次にInitializeCompornent();を実行する。
その次にもう一度このローカル変数にGetInstance()で代入したらクリアされてる。
おかしい。w
0323デフォルトの名無しさん (アウアウエー Sa4a-W6/A)垢版2018/02/10(土) 17:58:07.62ID:nWm1Yfxva
あ、この人数日前からしょうもない質問したり逆ギレしたりしてるお人かなw

正義(笑)をかさに着て人を追い出すようなことを言うのは好きじゃないけど、
それでも実況みたいなレスは自分で専用スレ立ててやった方がいいんじゃないの?
0324デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 18:07:33.04ID:agf4hW9w0
Gofとか興味ないの? デザインパターンの大先生だよ。それが全然動かない。w
たいそうな本出してる割には、、、、、とちょっと不信感が沸いてる。
0325デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 18:10:31.89ID:agf4hW9w0
思うにカッコつけた本でも具体例が提示できないとだめだな。
抽象的な説明はカッコいいが、具体的なサンプルで動かないとカッコばかりで駄目だな。
0327恥人垢版2018/02/10(土) 18:19:18.91
言うほど気になるか?
0330デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 19:19:01.09ID:agf4hW9w0
>>312
>クラスのstataicメンバーとして持てばいいだけの話で、むしろシングルトンで実装する必然性が分からない
Programの中に
static ublic int Aaaa;
って入れると このFieldにAaaaは割り当てられません。つにに規定値0を使用します。ってでるんだが、
0331デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/10(土) 19:39:15.98ID:agf4hW9w0
シングルトンやっと動いた。w

Programの中に書くってのもOKだな。Fieldワーニングがでるが。
0334デフォルトの名無しさん (ブーイモ MM85-sLQd)垢版2018/02/11(日) 13:06:10.79ID:v1VeVCTSM
>>332
イベントはメンバの一種、デリゲートは型の一種。
C#ではメソッドはオブジェクトではない。それを値として受け渡しするために、メソッドをオブジェクトとして包むための型がデリゲート。
イベントは、イベントに対してデリゲートを登録&削除するという一般的なパターンを簡単にかつ利用者に分かりやすく実装するための特殊なメンバ。
プロパティに相当する。実際、イベントの登録削除はプロパティのように独自に実装することもできる。
興味があるならイベントアクセサでググってみるといいよ。イベントを自分で実装してみれば完全に理解できるはず。
0342デフォルトの名無しさん (ワッチョイ c29f-IOan)垢版2018/02/11(日) 16:15:49.09ID:OiJFvi0/0
>>334
adderとremoverというのがあって、+=で繋いだときはadderが呼ばれ、-=で削除したときはremoverが呼ばれるんですね
ここが単なるデリゲートのマルチキャストとと違うところだと思いました
どうもありがとうございました
0343デフォルトの名無しさん (アウアウエー Sa4a-W6/A)垢版2018/02/11(日) 16:44:34.62ID:OIEAsiwva
>>342
っていうか、コールバックを実現したいからと単純にデリゲート変数をそのまま公開すると、

(1) 外部からnullを代入できてしまう
(2) 外部からInvokeできてしまう

こういった問題がある。
だからデリゲート変数とは別のイベントに存在意義があるんでしょう
0344デフォルトの名無しさん (ワッチョイ edbb-jA6l)垢版2018/02/11(日) 16:44:55.18ID:zggVxteM0
C# WPF
xaml上にキャンバス配置、その子にImageがあって、
このImageをタイマーで左に動かしたいのですが、Imageの座標の動かし方が分からないです。

Canvas.Letfや、Image.Leftと打っても「現在のコンテキストが存在しない」とエラーが返ってきます。
0347デフォルトの名無しさん (ワッチョイ edbb-jA6l)垢版2018/02/11(日) 17:04:07.30ID:zggVxteM0
ストーリーボードは使わず、タイマー+csのコードで出来る方法をお願いします。

image.Width ←OK
image.Height ←OK
image.Left ← 出来ない
image.Top ← 出来ない

canvasの子としてimageがあるから出来ないのかなとは思うのですが、
canvas.Left ←出来ない
canvas.Top ←出来ない

も出来ないからお手上げです。時間経過ごとに少しづつ画像を動かしたいだけなんですが・・・
0350デフォルトの名無しさん (ワッチョイ edbb-jA6l)垢版2018/02/11(日) 17:19:28.14ID:zggVxteM0
setleftも試してて何でだろうと思ったら、usingでsystem.windows.controlを設定していませんでした。
ありがとうございます。
添付プロパティというのも初耳なので勉強します。
0351デフォルトの名無しさん (ワッチョイ 99b3-jA6l)垢版2018/02/11(日) 18:04:06.76ID:eSM+gwdh0
大学のプログラミングの課題を家でもできるようにしたいです
大学ではemacsでcファイルを作りコンパイラー(名称不明)にかけてgnuplot上でプログラムを実行してます
↑をできるような環境を自分のノートPCに作るために何をインストールすれば足りるでしょうか?
使用PCは富士通LIFEBOOK、OSはwindows10です
0353デフォルトの名無しさん (ワッチョイ e175-xK0a)垢版2018/02/11(日) 18:07:22.85ID:/hLQhQLG0
C言語とC#は別だぞ〜
0358デフォルトの名無しさん (ワッチョイ e175-xK0a)垢版2018/02/11(日) 18:15:47.59ID:/hLQhQLG0
linuxにこだわるおまえに笑う
0360デフォルトの名無しさん (ワッチョイ e175-xK0a)垢版2018/02/11(日) 18:21:30.65ID:/hLQhQLG0
emacsにこだわるおまえに笑う
0363デフォルトの名無しさん (ワッチョイ e175-xK0a)垢版2018/02/11(日) 18:26:07.33ID:/hLQhQLG0
どう見てもこのシチュエーションでecmasは重要じゃないということが分からないおまえに笑う
0365デフォルトの名無しさん (ワッチョイ e175-xK0a)垢版2018/02/11(日) 18:29:45.08ID:/hLQhQLG0
コマンドでやればいいだけだろ(笑)
わざわざlinux入れる労力 w
0370恥人垢版2018/02/11(日) 18:50:27.31
うげぇ
英語ばっかで読む気失せる
0371デフォルトの名無しさん (ブーイモ MM6d-nHV3)垢版2018/02/11(日) 18:50:47.92ID:cqxb7NMTM
誰だって今だったらemacs何か使うなよって思うわ
vscodeとか使ったほうがいい
でもそれが条件なんだから仕方がない

winsowsにcygwinやMinGWやMSYS入れるのは環境が汚れるだけ
git for winとバッティングするし
0374デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 07:43:05.41ID:z/E2YHwX0
1) StudentName student1 = new StudentName("Craig", "Playstead");

2) StudentName student2 = new StudentName
{
FirstName = "Craig",
LastName = "Playstead",
};
1)、2)初期化方法だけど、これってどっちもインスタンスを二つ作ってるよな。
上の方はstudent1というインスタンスを作ってさらにnewでインスタンスを作ってコピーしてる。
C#って初期化するのにインスタンスをわざわざ余分に作らないと初期化できないわけ?
無駄って感じがするが、、
0376デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 08:07:58.06ID:z/E2YHwX0
class Program
{
static void Main(string[] args)
{
Person p1, p2;
p1 = new Person(); // 引数なしのコンストラクタ
p2 = new Person("太田隆", 29); // 引数ありのコンストラクタ
p1.Name = "斉藤花子";
p1.Age = 18;
p1.showDatas();
p2.showDatas();
}
}
こういう例でもさ、p1,p2って最初は空っぽでNew Person()で初めて実のあるものを作って渡すのかと思っていたら
P1、P1を宣言したときから実がはいってる。つまり実体ができている。それでnewでまた実を再度作って、代入してるんだね。
だとするとこのプログラムは酷い例だよな。p1.Name = "斉藤花子";をするためには p1 = new Person();これは意味がない。
Person p1;で既にコンストラクタは実行されてるんだろ。なんでp1=new Person();なんてやるんだよw
0377デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 08:12:23.91ID:z/E2YHwX0
>まずは入門書を一通り終えよう 話はそれからだ
 
間違いだらけの入門書。w
376をみてみなよ。
0378デフォルトの名無しさん (ワッチョイ 4d06-nHV3)垢版2018/02/12(月) 08:16:29.77ID:cgPx9lSf0
>>376
変数とnewで両方という意味ならインスタンスは片方でしか作っていない
参照型(クラス)の変数は実質ポインタなのでnewで作られた実体への参照が入る
値型(構造体)は変数を実体として(アドレスが参照され)newでコンストラクタを呼び出す
変数宣言だけでは参照型はnullだし、値型は領域確保だけでコンストラクタは呼び出されていない
0379デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 08:21:04.33ID:z/E2YHwX0
そんなことはないよ。
クラスPersonにpublic static int id =0;をいれて
Person(){ ++id;} のようにコンストラクタでインスタンス生成ごとにidをインクリメント
してみたら見事に2つインクリントしてる。だから君も勘ちがいしてる。
0380デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 08:32:41.72ID:z/E2YHwX0
ん? 俺の勘ちがいが勘ちがいだったのか?
0386デフォルトの名無しさん (ワッチョイ edd3-jA6l)垢版2018/02/12(月) 08:53:19.49ID:kFYq0atR0
なんだ今日もバカの日記帳か?

変数宣言の時点で中身があるなら値型である
しかし値型なら引数無しコンストラクタは定義できない

そもそも日記帳の中身が破綻しとるw
0387デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 08:58:38.18ID:z/E2YHwX0
>>378
public class Person
{
public static int id = 0;
public string name;
public int age;
public Person() { ++id; name = "non"; age = 100; Debug.Print("PersonIdcount =" + id.ToString()); }
}

Person aaa;
Person bbb = new Person ();
Person ccc = new Person {name = "bbb",age = 25};

めんごーー、いま確認してみたらインスタンスはこれで2つしかできてない。先生がただしい。入門書はまあ正しかった。w
0389デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 09:27:01.70ID:z/E2YHwX0
ん? 387のどこが頓珍漢なのだ? 君の説明よりもかなり説得力があると思うが、、、
というのもインスタンスが生成され、その個数をカウントして実際に確認できている。
そういう厳然とした証拠が添付されている。
しかも実際に実行できるコードが添付されている。w
0397デフォルトの名無しさん (ワッチョイ ddc3-saCW)垢版2018/02/12(月) 11:31:49.01ID:sATukCOa0
C#っていうのはC言語に何らかの拡張を加えた言語って認識であってる?
0415デフォルトの名無しさん (ワッチョイ c29f-IOan)垢版2018/02/12(月) 19:01:58.78ID:e2TKDGEW0
値型はとられる領域違うでしょ
なんのための参照型なのかわかってる?
null代入ってnullを指すだけでオブジェクトは残るよね?
GCが参照されなくなったオブジェクトと判断して回収するかはGCのアルゴリズムしだいだけど、基本は使わなくなった参照を指定して解放するよね?
0416デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 20:36:47.70ID:z/E2YHwX0
値型の代入でもコピーしない場合もあるみたいだね。コピー元が直ちに不要になる場合は
その参照をわたしてそのエリアをそのまま利用する。その方が合理的だから。
まあ単に想像だけど。
そして直ちに不要なのをおもいだして、値を渡したのを忘れて解放してしまう。どうもそういう
バグが偶に出るケースがある。特に初心者があれこれ考えられないような変なことを
やった後とかにそういう現象がでたりする。
0418デフォルトの名無しさん (ワッチョイ 319d-+g9t)垢版2018/02/12(月) 20:50:09.59ID:z/E2YHwX0
Enumがdummyを入れないと誤動作するとか、Staticインスタンスの中身が新しいForm2をNewしてForm_Loadの直後に
突如消えるとかそういう現象はまあビギナーズラックみたいなもので普通はそういう現象に出会えない。
コンパイルエラーがでないし正常に動作するのででPropetyの書き方を全部間違っていたのだが、それでも正常に動作していて
あとで書き方の間違いに気が付いて修正する。そういうことで段々と普通のプログラムになってくるとそういうエラーもいつ
の間にか再現しなくなる。
0428デフォルトの名無しさん (ワッチョイ 81b3-PCwM)垢版2018/02/13(火) 04:38:28.69ID:TnW8OQre0
初心者です。
MainWindow.xamlのtextbox name=“A” “B”を
MainWindow.xaml.csにて、配列に格納する場合
どう書けばいいですか?
0441デフォルトの名無しさん (ワッチョイ be9f-gWXE)垢版2018/02/13(火) 22:45:35.17ID:67cSYExB0
メモリリークや速度に問題がでたときはコードの美しさよりもカリカリに動く方が優先されるかな
どっちのがなんて気にしないでどっちもメリットって考える方が建設的だよ
0451デフォルトの名無しさん (ワッチョイ 62e0-jA6l)垢版2018/02/14(水) 12:42:24.63ID:pSHgdCSe0
猫でもわかるは?
0453デフォルトの名無しさん (ワッチョイ c29d-+g9t)垢版2018/02/14(水) 13:17:41.66ID:UFv5UzG30
>>445
キュウは意外と使われていないな。しかし本来連続処理をする場合はキューが必要になる。
例えばフィルターとか、通信処理ではなくてもメッセージの改行ごとの切り出しとか。キューを使うべきなのだが
つかってる例がない。
 そもそもこのQueueの仕様がだめなんだよな。まるでハードFIFOのまんまじゃないか。笑える。
折角オブジェクト指向で柔軟に作り込みできるのに、何の機能もついてない。ライトするときの型とリードするときの型を
変えられないと意味ないだろ。W
というわけで、
配列でライトして、バイトリードできる利口なキューReQueを作りたいんだが、どう定義したらいいんだ?
0455デフォルトの名無しさん (ワッチョイ c29d-+g9t)垢版2018/02/14(水) 13:38:10.36ID:UFv5UzG30
ReQue<int[], byte > qq;
とか
ReQue <strigng, LineString>pp;
とか
1.は array をライトしてByteでリード
2.はStringでライトして、CRLFの区切りで切り出し
こんなのはできないか?
0456デフォルトの名無しさん (ワッチョイ c29d-EuZI)垢版2018/02/14(水) 16:33:41.33ID:UFv5UzG30
 適当に言ってみただけだが、わりと簡単に作れそうだな。
C#って無茶苦茶強力だな。何でもできる。
0460デフォルトの名無しさん (ワッチョイ c29d-EuZI)垢版2018/02/14(水) 20:39:24.65ID:UFv5UzG30
楽しいC# 川保昌 が楽しい。
0466デフォルトの名無しさん (ワッチョイ 37d3-T3WU)垢版2018/02/16(金) 11:39:04.54ID:gNYDvrte0
Winformsは中途半端なHiDPIサポートが元々入っているせいで
注意深く組まないとネイティブアプリよりもむしろレイアウト崩れやすいレベルだぞ
4.7で追加されたHiDPIサポートとやらもWin10のCUからでないと有効にならない
0468デフォルトの名無しさん (ワッチョイ ff8a-F5uH)垢版2018/02/16(金) 21:43:20.45ID:Mt/w8W0Z0
テキスト編集ソフトを作ってるんですが、ユーザーが開いたテキストファイルの一覧を、
外部ファイルを使用せずにアプリ自身に保存するにはどうしたらいいでしょうか?
0475デフォルトの名無しさん (ワッチョイ ff81-OzgD)垢版2018/02/16(金) 22:12:01.91ID:PU4qYOCy0
C++で似たようなことをやったときは
exe起動→exeのコピーを作成して起動。オリジナルは終了→
メイン処理→オリジナルのexeを書き換えてPEのチェッサムを再計算
とやった
0490デフォルトの名無しさん (アウアウウー Sa9b-mhGK)垢版2018/02/17(土) 10:08:20.03ID:y9IWVG5ba
TypeScriptの型システムは完全なstructual subtypingで、そもそも型に対する考え方が大きく違う
「同名のメンバを一つでも持っていれば、共通する部分については同じ型と見做す」という、
高度で精密という表現からはかけ離れた大雑把な型システムだよ
インターフェイスの明示的実装なんかは原理的に不可能だし
0496デフォルトの名無しさん (ササクッテロロ Sp0b-SDIO)垢版2018/02/17(土) 14:34:56.50ID:FvBroJk9p
>>495
その通りなんだけど、そもそもやりたいことを実現するために機能が必要なことが多い

xamlに値を直接書きたくない→データバインド
webリクエストを投げてかえってきた結果をスクレイピングして使いたい→非同期処理
コレクションの処理を簡潔に記述したい→linq

全部使わなくても出来るとは思うけど、
どうせあとで書き換えることになるだろうし、
ちゃんと学んでおいた方が後の手戻りが少なくなると思う
0500デフォルトの名無しさん (アウアウウー Sa9b-qi38)垢版2018/02/17(土) 14:42:04.74ID:JhxlZtl8a
継続的に開発して変化に対応しやすいようにするならlinqは短いコードだけ
ちょっと複雑なのは普通にforやforeachがいい場合がある

linqは結局一つの列挙しか返さないから要素数が違ったりするものを組み合わせられない
0502デフォルトの名無しさん (ワンミングク MM7f-VCq2)垢版2018/02/17(土) 19:20:25.20ID:Q3QDcnMIM
>>500
たぶん設計が狂ってるんだろうな
複雑なループってトランザクションスクリプト的な汚いシステム特有の現象だよ
要素数が違うってことは異なるエンティティってことだからそれらを同時に列挙してる時点でなにかがズレてるんじゃないの
0506デフォルトの名無しさん (アウアウウー Sa9b-qi38)垢版2018/02/17(土) 20:10:45.35ID:JhxlZtl8a
理解力が低い自慢はいいよ

使いたい人はなんでもlinq使えばいい

linqは限られた用途で光るもの
上の方のレスにある属性がMaxの要素を取り出すにはlinqでは2回ループがいる
foreachやforでは1ループでいい
それがどうだと思う人は永遠に初心者のまま
0509デフォルトの名無しさん (ワッチョイ 3783-qi38)垢版2018/02/17(土) 20:38:57.31ID:cHSXrfCe0
10年前からLINQは糞で遅いから普及しないって言われてた。
0512デフォルトの名無しさん (ワッチョイ 3783-qi38)垢版2018/02/17(土) 20:44:25.26ID:cHSXrfCe0
関数型言語がなんで廃れてるかがよく分かる。KYなんだよ、彼らは。
0513デフォルトの名無しさん (ワッチョイ 17ed-1yoi)垢版2018/02/17(土) 20:51:25.85ID:2dhflQ+l0
「そうそう、アメリカは悪いーヤツなんだよね…」
「あ、俺、最近は洋楽聞いてるんだ…」
「関数型言語がなんで廃れてるかがよく分かる。KYなんだよ、彼らは…」
「コーヒー、砂糖入れなくていいからな…」
0515デフォルトの名無しさん (ワンミングク MM7f-VCq2)垢版2018/02/17(土) 21:23:13.78ID:Q3QDcnMIM
>>514
あのさ文脈少しは気にしたら?

複雑な処理をLinqでやるかループでやるかって比較してたんだろ
ならここでの複雑な処理っての複雑なループか複雑なLinqのどっちかなんだよ

このロジック君にはLinqより難しかったかな?
0516デフォルトの名無しさん (ワッチョイ 5710-brYG)垢版2018/02/17(土) 21:29:52.32ID:lDUnRFry0
jsonresultの使い方がよくわからないのですが、Ajaxとかでpostしたら結果を受けることができるって感じなんでしょうか
何故かあんまり解説落ちてない
0520デフォルトの名無しさん (ワッチョイ d775-7aOx)垢版2018/02/17(土) 22:30:36.59ID:YrEj1JRO0
[1]
var maxItem=null;
foreach(var item in list){
if(maxItem!=null&&item.Value>maxItem.Value)
maxItem=item;
}

[2]
var maxItem=list.OrderBy(item=>item.Value).Last();

[3]
var max=list.Max(item=>item.Value);
var maxItem=list.Select(item=>item.Value==max).First();
0528 ◆QZaw55cn4c (ワッチョイ 9f60-qi38)垢版2018/02/17(土) 23:22:34.74ID:I0BNlfaX0
最近書き直された独習C# ってどんなぐあいですか?
C#2.0 から知識は止まっているので、買ってみようと思うときもあるのですが
0533デフォルトの名無しさん (アウアウウー Sa9b-qi38)垢版2018/02/18(日) 00:07:37.02ID:9OPZsITra
今のはlistがIListならLastでもいい

しかし全部の内部の処理動作を覚えて
いちいちその違いを認識してコードを書くとは思えないので
どうしたらパッと見早く動くように見えるかロジカルに考える習慣をつけるべき
0537デフォルトの名無しさん (アウアウウー Sa9b-qi38)垢版2018/02/18(日) 00:33:58.85ID:9OPZsITra
書いたコードでその人が何を考えて書いたのかはわかるだろう
そして弱点があるならその人のレベルを疑うだろう

PGは無駄がなく速く動くコードを書きたいと願うもの

初心者はまだその域に達していないだけ
0542デフォルトの名無しさん (ワッチョイ 37e3-GlTH)垢版2018/02/18(日) 01:25:51.97ID:RhG0Chqj0
1,2,3を同じ結果が得られるコードだと思ってるなら不味いよ
っていうか普通にlinqわかりにくいから使ってる奴死のうねってコード
じゃあ、1の不具合修正版と全く同じ動作をする処理を
2と3の形式で書けよって言われるとあんまりlinq使う意味ないんだろ
捨てちゃえよコレ
0545デフォルトの名無しさん (ワッチョイ 7f9f-PxSw)垢版2018/02/18(日) 08:24:37.51ID:AO2fZqe80
要素数が多い場合はDBで処理すればいい
シーケンスの集合演算で容易に解けないようなレアケースは一度だけベタに書いてIEnumerable拡張としてライブラリ化して二度とベタに書いちゃいけない
DRYは基本中の基本
0546デフォルトの名無しさん (ブーイモ MMcf-qi38)垢版2018/02/18(日) 08:58:21.87ID:BzKV6Wa9M
オンメモリで処理できるものをDBみたいに糞遅いものに頼ることはないと思うけど
なんかちょいちょい変なやり方をこれがいいですよみたいな書き方はやめたほうがいいよ
0554デフォルトの名無しさん (ワッチョイ 57eb-7aOx)垢版2018/02/18(日) 12:34:55.86ID:xgCSzXkx0
デジタルネイティブならぬlinqネイティブな超初心者の俺には原始的なやり方を出来るだけ使わないやり方のほうが少ないワーキングメモリで理解できて楽なんだが、今まで地道な書き方してきた人はできるだけその書き方をしたいと思うのかね。
0555デフォルトの名無しさん (ワッチョイ 57eb-7aOx)垢版2018/02/18(日) 12:40:46.69ID:xgCSzXkx0
超初心者の多いPythonのスレだと関数型的な関数とか内包表記に対して誰も文句言わずに当たり前のように受け入れられてるしね。
俺からみたらこのスレのリンク拒絶反応民は言語学的にみても自然な流れなのにら抜き言葉を受け入れられない老人ってイメージ。
0560デフォルトの名無しさん (ワッチョイ 57eb-7aOx)垢版2018/02/18(日) 13:02:06.23ID:xgCSzXkx0
俺のような超初心者には、述語もなくて原始的であちこち飛びまくりで状態変数更新しまくりのコードを理解するのには、長いリンクコードと比較して3倍のストレスを感じてしまうな。
超初心者だから、デカいコレクションとかを効率的に裁かなければいけない状況にはほとんど出会わないけれど、古参のプロプログラマーは俺が普段扱うような大規模でないコレクションには出会わないのかね。
0561デフォルトの名無しさん (ワッチョイ 3783-qi38)垢版2018/02/18(日) 13:17:48.49ID:+tLYeZ1A0
保守性もなく糞遅いLINQでわさわざ書く理由が分からない。
もはや初心者スレでマウンティングすることぐらいしかできていないアホ機能。
0566デフォルトの名無しさん (ワッチョイ 37e3-GlTH)垢版2018/02/18(日) 13:56:57.83ID:RhG0Chqj0
大したモン作れないから
初心者スレで初心者が見慣れないコード貼って悦に入るゴミクズ
そうでないというなら友の会スレ新しく建ててそっち行けよ
前のはもう消えたけどなlinqなんて誰も使ってねーから
0567デフォルトの名無しさん (アウアウエー Sadf-5Tws)垢版2018/02/18(日) 14:09:38.35ID:PqnfJfooa
>>555
人語の場合は正しいかどうかの基準は合理性ではないのでその議論はナンセンス。
日本語にも英語にも不合理な文法なんかいくらでもある。

あと、どうせ言っても分からんと思うけど、世代論に限らず「〜ガー」っていうのは
他人からは言ってる本人の被害者意識や被害妄想を語るに落ちてるようにしか聞こえないことに
いい歳こいてるなら気が付いた方がいいと思うw

もちろん受け取る側の他人もいろいろだけどね
0573デフォルトの名無しさん (ワッチョイ 97b3-0BT5)垢版2018/02/18(日) 16:59:22.79ID:OJ07T80y0
C#の言語内機能でしかないシロモノで、単品で語る様な物じゃなかったからねえ
スレ自体は落ちて当然というか

むしろWPFスレとかよく残ってんなっていう
(まあそりゃ厳密にはC#以外でも使えるが)
0577デフォルトの名無しさん (ワッチョイ 3783-qi38)垢版2018/02/18(日) 17:21:43.47ID:+tLYeZ1A0
C#が失速したのはWPFのせいだと思う。
0578デフォルトの名無しさん (ワッチョイ 9fe0-T3WU)垢版2018/02/18(日) 17:26:42.00ID:XTUoNfC80
重くて遅いんでしょ
そりゃ誰も使わないよね
0579デフォルトの名無しさん (ワンミングク MM7f-VCq2)垢版2018/02/18(日) 17:29:44.35ID:JlUJeRggM
WPF食わず嫌いしてたけど使ってみるとすごく楽で良かった
ただレイヤー分割をしっかりできないと逆に使いにくいのかなとも思った
日本の開発の現場ではレイヤー分割の概念がまだ広まってないからそこで失敗して嫌になっちゃうのかもしれない
早すぎたんだろうな
0581デフォルトの名無しさん (ワンミングク MM7f-VCq2)垢版2018/02/18(日) 17:36:25.36ID:JlUJeRggM
馬の耳に念仏って実際かなりあるからなんとも言えんな
エヴァンジェリストやMVPの言ってるのとがレベル高すぎて理解できないだけかもしれん
完全に理解したうえで論理的に反論するならともかく
0584デフォルトの名無しさん (ワッチョイ 5716-7aOx)垢版2018/02/18(日) 18:04:51.87ID:4qWLRsuo0
プログラミングがどうしてもできない人もいればなんの不自由もなくできる人がいるように、リンクがどうしても難しい人がいるんだな w
リンク書けるのに原始的な書き方を書けない人は居ない
原始的な書き方はできるけどリンク書けない人は居ないとは限らない w
0590 ◆QZaw55cn4c (ワッチョイ 9f60-qi38)垢版2018/02/18(日) 18:36:49.68ID:AAhzNgFK0
「でぶでぶ」太る、とかいう人もいるから、その類じゃないかな
ちょっと変わった擬態語でインパクトを与える、というのは日本語ならではだと思います
0597デフォルトの名無しさん (ワッチョイ d775-7aOx)垢版2018/02/18(日) 18:46:08.76ID:sStJYnT/0
>>594
そそ。
結局
デカいリストの時とか変わったループ処理のときだけ原始的な書き方でやればいいんだろうな
ってこと w

リンク難民は簡単なリンク使っただけでも早さがどうのこうの、動作が理解できないだのブチブチ言うんだよな w
リンクを難しく感じる連中の意見なんて要らない w
0607デフォルトの名無しさん (ワッチョイ 9f06-qi38)垢版2018/02/18(日) 19:24:03.84ID:k1v/mjkP0
LINQなんぞ拡張メソッドとラムダ式に過ぎず、実装的には殆どがfor(each)+コールバック+yieldなのに
殊更に対比して語る事自体とても奇妙に思える、yieldは吐くコードが迂遠だから避けられる事はままあるし
0608デフォルトの名無しさん (ワッチョイ 9f9d-MriG)垢版2018/02/18(日) 19:36:35.18ID:X6jPePh+0
ところでLinqでシーケンスのあるものって取り出すのはむつかしいか?
例えばSTX、~ 、ETXみたいにSTXとETXに囲まれた〜を取り出す方法ってある?
0610デフォルトの名無しさん (ワッチョイ 9f9d-MriG)垢版2018/02/18(日) 19:47:32.81ID:X6jPePh+0
できそうにないな。なにか勘ちがいしてると思う。
0611デフォルトの名無しさん (ワッチョイ 9f9d-MriG)垢版2018/02/18(日) 19:48:43.88ID:X6jPePh+0
その二つの関数がなにかをチャンと明示してみな。できないことを証明してやる。
0615デフォルトの名無しさん (ワッチョイ 9f9d-MriG)垢版2018/02/18(日) 20:10:08.51ID:X6jPePh+0
質問はエスパーじゃなくてもパーでも解る。
しかし回答はピッタシだ。スペル見ただけで解った。
0617デフォルトの名無しさん (ワッチョイ 5763-bVi4)垢版2018/02/19(月) 15:53:42.66ID:HkGN0Yfm0
てs
0620デフォルトの名無しさん (ワッチョイ d775-bVi4)垢版2018/02/20(火) 15:36:22.39ID:rWzsbI8r0
死ね
0622デフォルトの名無しさん (ワッチョイ 5710-brYG)垢版2018/02/20(火) 16:08:03.85ID:8AxQ9YzH0
そんな悲しいこと言わないで
0623デフォルトの名無しさん (ワッチョイ d775-bVi4)垢版2018/02/20(火) 19:39:20.96ID:rWzsbI8r0
てs
0624デフォルトの名無しさん (ワッチョイ d775-bVi4)垢版2018/02/20(火) 19:40:27.94ID:rWzsbI8r0
てす
0625デフォルトの名無しさん (ワッチョイ d775-dsKU)垢版2018/02/20(火) 19:43:09.35ID:rWzsbI8r0
てs
0626デフォルトの名無しさん (ワッチョイ d775-dsKU)垢版2018/02/20(火) 19:48:16.69ID:rWzsbI8r0
てs
0627デフォルトの名無しさん (ワッチョイ d775-dsKU)垢版2018/02/20(火) 19:50:30.91ID:rWzsbI8r0
てs
0628デフォルトの名無しさん (ワッチョイ d775-dsKU)垢版2018/02/20(火) 19:50:48.48ID:rWzsbI8r0
てs
0629デフォルトの名無しさん (ワッチョイ bf76-HsKf)垢版2018/02/20(火) 20:18:51.99ID:u29zEFTf0
以下のようなコードで、"date"が同じ日付のオブジェクトの"no"を合算するGROUP BY的な処理をLINQで書く事は出来るでしょうか?よろしくお願いします。

class hoge
{
public DateTime date { get; set; }
public int no { get; set; }
}

class Program
{
static void Main(string[] args)
{
var test = new hoge[] {
new hoge { date = DateTime.Parse("2018/02/20"), no = 10 },
new hoge { date = DateTime.Parse("2018/02/20"), no = 20 }
};
//期待する結果 date = "2018/02/20", no = 30
}
}
0631デフォルトの名無しさん (ワッチョイ d775-dsKU)垢版2018/02/20(火) 20:38:37.21ID:rWzsbI8r0
test.GroupBy(x=>x.date).Select(xs=>new Hoge{date=xs.Key, no=xs.Source.Sum(x=>x.no)})

var key=0;
var grList=new List<IGrouping<int,Hoge>>();
foreach(var x in test){
0632デフォルトの名無しさん (ワッチョイ bf76-HsKf)垢版2018/02/20(火) 20:47:17.84ID:u29zEFTf0
教えたいただいたコードをちょっと変えて
var newtest = test.GroupBy(x => x.date).Select(xs => new hoge { date = xs.Key, no = xs.Sum(x => x.no) });
で期待する結果が出ました

LINQの書き方に慣れていないので参考になります
ありがとうございます
0633632 (ワッチョイ bf76-HsKf)垢版2018/02/20(火) 20:51:26.55ID:u29zEFTf0
>>631
ちなみにですが
xs.Source
部分はインテリセンスが候補として出して来ないので不要ですよね?
実は肝だったらと気になりまして
0634デフォルトの名無しさん (ワッチョイ d775-dsKU)垢版2018/02/20(火) 20:55:58.93ID:rWzsbI8r0
ごめん
そんなものなかった。
0636 ◆QZaw55cn4c (ワッチョイ 9f60-qi38)垢版2018/02/20(火) 22:09:32.25ID:SJPS4KKx0
>>635
昔から言われていることとは微妙に意味が変わってきているね

flag == false
は OK だが
flag == true
はやめろ!

ってやつじゃない?C では結構重要だ
0638デフォルトの名無しさん (ワッチョイ d7f2-T3WU)垢版2018/02/20(火) 22:26:59.92ID:7+Xxu/Ir0
BOOL(intのtypedef)の話だな。flag == true は冗長であることを除けば何の問題もない。
あと、BOOLをTRUEと比較しちゃならんってのもFALSE(0)以外が真とみなされる文脈でのことで、
本当にTRUE(1)を求めているのであればそれと比較することに問題があるはずもない。
0639デフォルトの名無しさん (ワッチョイ d775-bVi4)垢版2018/02/20(火) 22:37:10.96ID:rWzsbI8r0
亀レスワロタ
0641デフォルトの名無しさん (ワッチョイ 9f9d-MriG)垢版2018/02/20(火) 23:41:38.85ID:vzQfIoah0
if(min <= dt && dt <= max){
debug.print("left thing must be a minimum , right must be a maximum");
}
0643デフォルトの名無しさん (ワッチョイ 9f9d-MriG)垢版2018/02/21(水) 00:12:02.20ID:eNjhkesX0
//HACK: This is The Golden Rule of indentation.
if (~) {
 count++;
} else {
 count = 0;
}
//ass:
if (~)
{
}
0644デフォルトの名無しさん (ワッチョイ d7ea-QcxC)垢版2018/02/21(水) 11:59:42.26ID:VoejUmIV0
String flag = "true";
if(flag)
{
}

こんなのを見たことあるw
0651デフォルトの名無しさん (アウアウカー Sa6b-q/Ed)垢版2018/02/21(水) 23:23:33.56ID:0HngqlDxa
初歩的な質問ですみません
例外で例えば「FileNotFoundException」が発生した場合に、catch文で、「FileNotFoundException」を文字列として取得するにはどうしたらいいでしょうか
エラーログ取得用です
0652デフォルトの名無しさん (ワッチョイ 97b3-T3WU)垢版2018/02/21(水) 23:28:02.97ID:J5LO2Gvl0
[] [[[ [[ [] ][ [] [ ] [] ][]] [[[ [] }
0656デフォルトの名無しさん (アウアウカー Sa0a-V3L7)垢版2018/02/22(木) 08:04:35.65ID:WBY2nmtra
>>651です
今はToStringで出してるんですが、行数節約の為にと思いまして。>>653で試してみます。
ありがとうございました
0662デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/22(木) 19:50:23.58ID:c2upgmLY0
new{"hoge"}とは
0664デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/22(木) 20:44:44.31ID:c2upgmLY0
for, foreachも見にくい
0667デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/22(木) 21:23:11.48ID:c2upgmLY0
個人的にはラムダは抵抗なく読める
Pythonの内包表記は苦手
0671デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/23(金) 08:15:24.95ID:n9Q43L/40
リンク否定派==ラムダ式嫌悪厨
0672デフォルトの名無しさん (ワッチョイ fc83-MTlB)垢版2018/02/23(金) 11:21:56.45ID:xR1rHjlT0
ラムダは過去に一度滅んだ技術だからな。普及するわけがない。
0675デフォルトの名無しさん (ワッチョイ fd9e-POFq)垢版2018/02/23(金) 11:56:12.27ID:dqKzXa4r0
EFでList<string>のデータを保存するにはどうしたらいいの?
0676デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 13:43:16.80ID:HedUeMcC0
その前にEFってなにか説明してくれるか?
0678デフォルトの名無しさん (ワッチョイ fc83-MTlB)垢版2018/02/23(金) 14:31:57.61ID:xR1rHjlT0
>>677 ←今日最高の馬鹿。
0679デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/23(金) 15:28:51.28ID:n9Q43L/40
>>676
おまえ、初心者丸出しに気づいてないの恥ずかしいな
0681デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/23(金) 15:34:34.35ID:n9Q43L/40
ただラムダ式が苦手なだけな奴の見苦しい言い訳に構うなよ w
0683デフォルトの名無しさん (ワッチョイ fc83-MTlB)垢版2018/02/23(金) 16:10:34.36ID:xR1rHjlT0
>>680-682
スレチだからこっちでやってくれませんか。
過疎ってるからって初心者スレで暴れないでくださいよ、低脳馬鹿ラムダ厨さん。

λ ラムダ式は神 ラムダ式を崇めよ λ [無断転載禁止]©2ch.net
https://mevius.2ch.net/test/read.cgi/tech/1494867168/
0684デフォルトの名無しさん (ワッチョイ fc83-MTlB)垢版2018/02/23(金) 16:14:19.23ID:xR1rHjlT0
古典教師とラムダ厨と被るわ。

役に立たない古い知識で初心者スレでマウンティングとか。→ ID:n9Q43L/40 www
0685デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 16:14:40.70ID:n9Q43L/40
C#の例外処理スレを立てたらここはスレチになるのか w
ほんとラムダ式嫌悪厨は哀れだな w
0687デフォルトの名無しさん (ワッチョイ fc83-MTlB)垢版2018/02/23(金) 16:23:25.22ID:xR1rHjlT0
LINQスレあったよな。なぜそっちでやらないの?
あっ落ちたのかw 過疎りすぎて誰も次は立てる気がないようだw

だって10年でたった1スレすら消費できなかったからなwww 誰も興味ないかよほど嫌われてんだなw
0690デフォルトの名無しさん (ワッチョイ fc83-MTlB)垢版2018/02/23(金) 16:27:53.73ID:xR1rHjlT0
ID:n9Q43L/40 ←惨め杉www 初心者スレでマウンティングするしかないww

> リンク否定派==ラムダ式嫌悪厨
> ただラムダ式が苦手なだけな奴の見苦しい言い訳に構うなよ w
> おまえ、初心者丸出しに気づいてないの恥ずかしいな
> ほんとラムダ式嫌悪厨は哀れだな w

ほんとこいつ初心者スレで煽りとマウンティングしかしてねぇw
0691デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 16:27:53.99ID:n9Q43L/40
なにこいつ
0692デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 16:42:11.85ID:HedUeMcC0
byte[]buf = 1,2,3,4,5、ETX,7,8,9
AX=1,2,3,4,5 
BX=ETX,7,8,9
BufからAX,BXをわけて取り出ししたい。(ETXはAX側でもBX側でも構わない)
AX=buf..TakeWhile(x=>x!=ETX);
とすれば取り込めるが、BXはどうしたらいいのだろう?
0693デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 16:50:56.55ID:n9Q43L/40
SkipWhile
0694デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 16:56:26.65ID:HedUeMcC0
SkiPWhileは違う。ETXで分離するのが目的だからだ。
0695デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 16:56:39.74ID:HedUeMcC0
>おまえ、初心者丸出しに気づいてないの恥ずかしいな
初心者丸出しが恥ずかしいことか? 陳湖丸出しとは分けが違うがお前はそういう趣味でもあるのか?

>C# にラムダ式はあるのにどうしてスレ違いなんでしょうか?
主観の問題だ。しかし感受性の問題でもある。ひらたく言うとどこにも頭の悪いのはいる。

>古い?どうして古いのでしょうか?
主観の問題だ。少しズレた主観もある。

>C# に LINQ はがっちり含まれているのに、どうしてスレ違いなんでしょうか?
しつこい質問者だからあえてシツコク答えるが主観の問題だ。しかしシツコク追い求めるのはプログラマーの適正でもある。
0696デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 16:59:23.35ID:n9Q43L/40
なにこいつ
自演かよ w
0698デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 17:07:21.06ID:HedUeMcC0
>>696 
オブラートで包むと意味が解らないか? 解るようにハッキリ言うと荒れるしな。
困ったものだ。
SkiPWhileじゃだめってのはわかるか?
0704デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 17:17:31.24ID:n9Q43L/40
試しにC#非同期スレ立ててみようぜ w
どうせ伸びないから w
みんな使ってないもんな w
0705デフォルトの名無しさん (ワッチョイ 0a80-IMbs)垢版2018/02/23(金) 17:18:24.48ID:uDoJo6b+0
# 先頭文字で、配列の要素をグルーピング
animals = ["cat", "bat", "bear", "camel", "alpaca"]

p animals.group_by {|item| item[0].chr }
{"a"=>["alpaca"], "b"=>["bat", "bear"], "c"=>["cat", "camel"]}


Ruby では、group_by で、配列の要素をグルーピングできる。
ブロックの戻り値が同じ要素で、グルーピングする

他にも、partition で、要素を2つの配列に分けられる
0707デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 17:20:15.65ID:n9Q43L/40
C#でもできる
partionはないが多分GroupByで代用できる
0708デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 17:30:54.68ID:HedUeMcC0
じゃあGroupBy使って
byte[]buf = 1,2,3,4,5、ETX,7,8,9
をETXの前後で分解してみて。
0709デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 17:31:48.42ID:n9Q43L/40
使用法が明らかに間違ってる
0710デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 17:37:08.15ID:HedUeMcC0
でも分解する場合には他に適当な方法がないのでは? GroupByとIndexを併用すれば
なんとかならないか?
0711デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 17:38:45.30ID:n9Q43L/40
明らかにそんなやり方よりTakeWhile, SkipWhileを使うやり方のほうが真っ当
0712デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 17:48:52.71ID:HedUeMcC0
>明らかにそんなやり方よりTakeWhile, SkipWhileを使うやり方のほうが真っ当

不味いんじゃないだろうか?
要するにループを頭から2回まわすことになるだろ。
Ax=  buf.TakeWhile(〜)
Bx= buf.SkipWHile(~)

それならForeachの方がいいとおもう。
AX= ETXを見つけるまでこっちに入れる。
BX=ETXを見つけた以後はこっちに入れる。
0713デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 17:50:19.68ID:n9Q43L/40
効率が問題になるほど大規模なリストなら原始的な書き方をする。
そうでないならLinqでいい
0719デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 18:46:00.97ID:HedUeMcC0
>>718
いいね!いいね! そのヒント。 君が一番頭いい。
0722デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/23(金) 19:01:32.01ID:n9Q43L/40
Spanとかもあるよな
使えるのか知らないけど
0723705 (ワッチョイ 0a80-IMbs)垢版2018/02/23(金) 19:03:45.51ID:uDoJo6b+0
scores = %w[1 2 3 4 5 ETX 7 8 9]

numbers = scores.each_with_object({}) do | num, h |
# 配列の初期化
h[:before] = [] unless h[:before]
h[:after] = [] unless h[:after]

if h[:ETX]
h[:after].push num
else
if num == "ETX"
h[:ETX] = true
else
h[:before].push num
end
end
end

p numbers
{:before=>["1", "2", "3", "4", "5"], :after=>["7", "8", "9"], :ETX=>true}

Ruby の、each_with_index メソッドは、引数に蓄積器を指定して、繰り返し処理する。
空のハッシュ { }に、結果を蓄積していく。
"ETX"があったかどうかの状態を記憶して、処理を分岐する
0724デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/23(金) 19:05:18.26ID:n9Q43L/40
よく分からんけどaggregateでできそう
0725705 (ワッチョイ 0a80-IMbs)垢版2018/02/23(金) 19:06:59.32ID:uDoJo6b+0
>>723
修正

>Ruby の、each_with_index メソッドは、引数に蓄積器を指定して、繰り返し処理する

each_with_index ではなく、each_with_object
0727デフォルトの名無しさん (ワッチョイ 709d-POFq)垢版2018/02/23(金) 19:41:12.35ID:HedUeMcC0
flag = x < etx
これってETX以前はTrueになる? たぶんそういう意図だろうけど
xはindexだろけど、etxと比較しても駄目って思うが、、、
0732デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/23(金) 20:12:36.02ID:n9Q43L/40
レス乞食かよ
0734デフォルトの名無しさん (ワンミングク MM0e-2hJC)垢版2018/02/23(金) 21:00:10.84ID:RXlM4aNHM
イテレーター書くだけだから逆に移植しやすくなる
抽象化レイヤーがないと全てのループ処理について移植できるかどうか
移植するにはどうすればいいか
例外ケースはないかなど悩まなくてはならない
0737デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)垢版2018/02/23(金) 21:47:11.90ID:HTtnUDjj0
日曜大工プログラマーなんだけど、実際Linq使わないってなるとプロの方はどういうことを基本としてるの?
プロの方々なら当然Linqも理解して手段の一つとして持ってると思うけど
あえてそれは使わないってなると、同じこと実現するのに何が基本となるのかまじめに教えてください
0739デフォルトの名無しさん (アウアウカー Sa0a-V3L7)垢版2018/02/23(金) 22:02:51.89ID:I1cwUeCia
>>737
察してw
0741デフォルトの名無しさん (ワッチョイ e206-MTlB)垢版2018/02/23(金) 22:51:27.85ID:xGnoN5r+0
LINQなんて銘打たれてても只のパターンだからねぇ
デリゲートがインライン展開されるならまだしも
switchまみれのIEnumerator<T>とかは草生える

どうせコントロール追加もAddよりAddRangeの方が良いし
概ねArrayやList<T>のメソッドで済む事が多いな
あと拡張メソッド多すぎでIntelliSenseの邪魔、フィルタが面倒
0742デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/23(金) 22:57:32.27ID:n9Q43L/40
効率はすでに言った通りだからともかくとして、このスレのlinqの質問のほとんどはarrayやlistのメソッドでは事足りないだろう
0745デフォルトの名無しさん (ワッチョイ 0ac9-x4Or)垢版2018/02/24(土) 09:13:57.78ID:Pu6BYc+K0
LINQとか表記は割りとどうでも良いからユニットテストがきちんと書けるソースコードにして欲しいと、200行超えの他人のクソメソッドをメンテしてて思った
リファクタリング楽しいです(^q^)
0746デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/24(土) 09:20:58.48ID:QPTXris90
スレチ
0747デフォルトの名無しさん (ワッチョイ 709d-saxG)垢版2018/02/24(土) 19:03:52.84ID:53z7t7hD0
Span実験してみたい。しかしSystem.Memoryインストールに失敗する。何でだろう?
0749デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)垢版2018/02/24(土) 20:04:36.63ID:+6d6qq1k0
素人ながらに四苦八苦しながら小規模の業務アプリを作っているのですが
Program.csに、アプリケーションに保持させておきたい情報をまとめた自作クラスを
staticで保持させておいて、全フォーム通してそれを読み出せるのかと考えたのですが
愚行でしょうか?
0751デフォルトの名無しさん (アウアウエー Sa6a-Xk4Z)垢版2018/02/24(土) 20:14:50.00ID:S6y2USoia
>>749
本当にその必要があるならその方法でグローバルな情報を持ってOKだと思う。
前に同じ質問で「そんなものコンストラクタの引数で渡せ」と書いてた人がいたが、
むしろそっちの方が不適切。

でも、本当にそれが必要なのかは再考した方がいいかもね。
グローバルなデータなんて普通はそんなにいらないよ

>>750
だからそれを聞いてるんでしょw
っていうかヘッダファイルって意味不明だよww
0754デフォルトの名無しさん (アウアウカー Sa0a-V3L7)垢版2018/02/24(土) 21:28:23.83ID:kaoxpwmua
質問よろしいでしょうか
ある複数のパラメータを持ったクラスを他のクラスのメンバに代入すると、そのパラメータが変更されたら代入先のメンバも書き変わってしまいますよね?
一度代入した時点から勝手に書き変わられたくない場合、パラメータを持ったクラスがクローンを返すような実装をするのがいいんでしょうか。他に定石等あれば教えて頂きたいです
0756デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/24(土) 21:53:04.14ID:QPTXris90
ApplicationSettingsは自作クラスじゃなくてVSのきのうだよ
0757デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)垢版2018/02/24(土) 21:54:11.29ID:+6d6qq1k0
>>753
端末のIPやらMacアドレスのほか、データベースへの接続文字列を実行中に随時切り替えて接続させてるのですが
そのためのList<string>とかです
あとはNotifyIconをおいて、アプリの動作状況によって各Form上からも通知アイコンの画像を変更させてます
0763デフォルトの名無しさん (ワッチョイ a49f-QP7I)垢版2018/02/25(日) 07:52:39.23ID:JzRpHb2B0
>>755
そのファイルにクラスおいた方が楽って感覚がわからないな
1クラス1ファイルが基本だし別のファイルおいた方が色々楽だと思うけど
まさかないと思うけどpublicなインナークラスにするのはよくないから気をつけてね
0764デフォルトの名無しさん (ワッチョイ 8b8a-YGTY)垢版2018/02/25(日) 08:09:40.74ID:zTlznGKg0
>>761
拠点毎のデータベースと、全拠点と端末を管理したり共通の設定情報を保持するデータベースとわけてるので
必要な情報に応じて動的につないでSQL文を実行させてます
>>763
全体を管理するデータベースの情報を元に端末毎に動作する権限や機能を割り当てるようにしてるので
起動するフォームを異なります
なので、初回フォームが起動する前に端末情報をProgram.csに保持させたいということと
異なる役割の端末(Form)からでも共通の設定値を利用したかったからです

>まさかないと思うけどpublicなインナークラスにするのはよくないから気をつけてね
この辺の理解がだめです・・・(書籍を読んで独学で一人でやってます)
外部クラスなりにProgram.csにおいたStaticな自作クラスにアクセスさせてはだめってことなのかと理解しましたが
具体的にどうだめなのかがさっぱりで・・・
0765デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)垢版2018/02/25(日) 09:12:28.17ID:2NYrBiBT0
Listで中にclassをaddしていって
中のclassが解放されて歯抜けになって状態でaddした場合
nullの配列にaddされるか
歯抜けになったのをソートして埋めることって出来ない?
0767デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)垢版2018/02/25(日) 09:17:08.24ID:2NYrBiBT0
Listで型をclassにしてaddしていって
格納したclassがいくつか解放されて歯抜けになった状態でaddしたときに
歯抜けになった配列を埋めるようにaddされるか
歯抜けになったのをソートして埋めることって出来ない?
0769デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)垢版2018/02/25(日) 09:19:46.70ID:2NYrBiBT0
>>766
いくつかaddして
listとは関係なく外部でclassを解放した場合
歯抜けになるでしょ
0772デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)垢版2018/02/25(日) 09:22:46.35ID:2NYrBiBT0
>>768
解放したいんじゃなくて
解放されて歯抜けになったとこにaddするか
ソートして歯抜けを埋めたいんだって
0775デフォルトの名無しさん (ワッチョイ 30d2-Oqyw)垢版2018/02/25(日) 09:43:15.18ID:2NYrBiBT0
まじかよ
listが無限にふくらんでいくじゃん
0778デフォルトの名無しさん (ワッチョイ a49f-QP7I)垢版2018/02/25(日) 10:22:48.34ID:JzRpHb2B0
>>764
何を言ってるのかよく分からないけど、
Program.csにProgramクラスとTestクラスを作るのと、Program.csにProgramクラスTest.csにTestクラスを作るのは同じ
どっちでもいいけど普通は後者かな

ただ、以下のようなインナークラスにはするなってこと
static class Program{
...
public static class Test{}
}
0780デフォルトの名無しさん (ワッチョイ e206-MTlB)垢版2018/02/25(日) 10:37:08.47ID:vhA3QBh60
>>769
classがオブジェクト参照を意図するなら、Listが持っている時点でインスタンスは解放されない
Dispose()はアンマネージリソースといった“メンバーの解放”でインスタンス自体を解放はできない
GCは強参照されていないインスタンスしか解放しないので、明示的に代入しない限りnullに成りようがない

ひょっとしてやりたいのはこういう事か?(※機械翻訳のようで日本語が不自由
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/weak-references
IDisposableに処分済みインターフェイスは無く、ObjectDisposedExceptionを投げるクラスは独自の内部フラグ
0781デフォルトの名無しさん (ワンミングク MM0e-2hJC)垢版2018/02/25(日) 11:05:57.21ID:Ydc/tL+DM
>>779
関係ないクラスを一緒くたに管理しないほうがいいってこと
マシン設定ならマシン設定
データベース設定ならデータベース設定
権限管理なら権限管理
アイコン管理ならアイコン管理
プログラムは1つ1つ関心ごとに分けて後で組み合わせるのが基本
設定項目も一緒くたにしないで個別に設定クラスを作る
0782デフォルトの名無しさん (ワッチョイ 709d-saxG)垢版2018/02/25(日) 11:08:26.61ID:D3C+bdq60
それはインナークラスとどう関係あるって?
0784デフォルトの名無しさん (ワッチョイ a49f-QP7I)垢版2018/02/25(日) 11:14:15.87ID:JzRpHb2B0
>>779
Programのデフォルトの公開範囲がprivateだから

って思ったんだけどクラスって省略されるとinternalなんだね
じゃあ別にやってもいいかな
ただ、各フォームから起動元であるprogramクラスにアクセスするのは違和感があるからインナークラスは推奨しない
よく言われるグローバル変数にせず、フォームの起動時に引数で渡せばいいと同じレベルの話だから余り気にしなくていいかも
0785デフォルトの名無しさん (ワッチョイ 709d-saxG)垢版2018/02/25(日) 11:24:18.30ID:D3C+bdq60
>普通はVSのフォームデザインでプロパティからApplicationSettingにてPropertyBindingを行う
これはどういう意味や?
バインディングってのはデータソースがコロコロ変わる時に便利なだけだろ。何でグローバル変数みたいな
変わらんものに「普通は、、、、使う」なんて言いきれるんだ。
意味わからん。
0786デフォルトの名無しさん (ワッチョイ 509f-z29z)垢版2018/02/25(日) 11:43:52.16ID:/V/K592r0
グローバル変数(static変数)なんて難しすぎる機能は初心者には扱いきれないでしょう
普通にコンストラクタやメソッドに必要なものを渡していけば確実、安全、簡単だよ

var loginForm = new LoginForm();
loginForm.ShowDialog();
var loginUser = loginForm.LoginUser;

var loginService = new LoginService();
loginService.Login(loginUser);

var systemInfo = SystemInfo.Read();
var databaseModule = new DatabaseModule(loginUser, systemInfo);
var authModule = new AuthModule(databaseModule, loginUser, systemInfo);
var domainService = new DomainService(databaseModule, authModule);
var iconManager = new IconManager("url://to/icon/resource/base");
var formFactory = new FormFactory(databaseModule, authModule, domainService, iconManager, loginUser, systemInfo);

Application.Run(formFactory.CreateMainForm());

loginService.Logout(loginUser);
0787デフォルトの名無しさん (ドコグロ MM85-o9L9)垢版2018/02/25(日) 12:40:23.67ID:wniuxD5kM
設定値と処理を密にすると
設定値集Aと設定値集Bとか異なる設定で動かさなきゃいけないときにウザいよ

それを消そうとするとグローバル変数は消えるけど
仕様でそういったもんが別にいいなら問題は起きない
環境変数みたいにインストール時に固定なんだよ的な
0788デフォルトの名無しさん (ワッチョイ 709d-saxG)垢版2018/02/25(日) 14:52:23.69ID:D3C+bdq60
>グローバル変数(static変数)なんて難しすぎる機能は初心者には扱いきれないでしょう

何を根拠に難し過ぎるというのか意味不明だ。
 複雑だからか? どう複雑なんだ? 複雑なわけない。w
 他に難しい理由があるのか? 誤動作するからか? するわけない。w

 ちゃんと理由を上げて説明してみろよ。
0789デフォルトの名無しさん (アウアウカー Sa0a-msg2)垢版2018/02/25(日) 19:09:25.59ID:xxKEYzcHa
>>758-760>>762
ありがとうございます
参考になりました。頂いた内容で再検討してみます
0791デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/25(日) 21:04:14.02ID:ky9/2g4Z0
ググったら
selecteditem.tostring()でやってるのが多いけどそれだとどうなの?
0792デフォルトの名無しさん (ワッチョイ 539f-CyJp)垢版2018/02/25(日) 21:29:08.12ID:vwrCxs9l0
>>791
こうですか?
if (comboBox.SelectedItem != null)
//cb = ((ComboBoxItem)comboBox.SelectedItem).Content.ToString();
cb = comboBox.SelectedItem.ToString();
else
//comboBox.SelectedIndex = -1;
cb = comboBox.Text
}

値の前にこんな文字も取得してしまいす
System.Windows.Controls.ComboBoxItem:

if〜で選択した値は取得できてます。
else〜で手入力した値を取得したいのですがうまくいきません。
0805ヴぁr (アウアウウー Sa08-MTlB)垢版2018/02/25(日) 23:28:03.64ID:AIuTVnPta
<ComboBox x:Name="cb" IsEditable="True" TextBoxBase.TextChanged="cb_TextChanged" />

private void cb_TextChanged(object sender, TextChangedEventArgs e)
{
var text = cb.Text;
}
0825デフォルトの名無しさん (アウアウエー Sa6a-Xk4Z)垢版2018/02/26(月) 20:41:26.85ID:Vig1K9Wwa
関係ないよw
メディアの問題というよりファイルシステムの問題

シーケンシャルにしかアクセスできないからシークが遅いとか、そもそも追記ができないとかいう話なら分かるが、
追記可能なのに書込み速度がファイルのサイズに影響するファイルシステムってちょっと思いつかん
0826デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/26(月) 21:24:17.61ID:ogwj8qdY0
屁理屈アスペ
0829デフォルトの名無しさん (ワッチョイ 24c3-POFq)垢版2018/02/26(月) 22:29:50.26ID:gUsCTQbp0
業務アプリばっかりやってきて最近のトレンドに全くついていけてない老害に教えてやってほしいのですが、
●やりたいこと
WPFアプリ、SQLite(最新)を使用、EntityFrameworkで実装したい
DBはそれほど複雑でなく、せいぜい2つのテーブルをjoinする程度、あとは、各テーブルをCRUDする感じでサンプルに毛が生えたようなレベルです。

.NETのバージョンはv4.6.1とした場合、
どのパッケージを使用したらよいだろうか?が知りたいです。

参考にしたいな、と思った記事は、
https://qiita.com/massu/items/b2546a0d876e207de882#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90

SQLiteで簡単にEFできるかな?と思ってコードを眺めていました。

だが、パッケージ名で.NET Coreを使用するように見えてしまい、
WPFで使っていいの?など何が何やら、、、

本人のバックグラウンドとしては、v3.5程度までの業務コーディング知識は
あるつもりなのですが、なかなか最近の技術、名称についていけておらず。。

最近のトレンドに乗りつつ、知識をつけつつ開発したいと思っています。
ちなみにこのアプリは業務使用ではないのです
0831デフォルトの名無しさん (アウアウウー Sa08-x7KF)垢版2018/02/26(月) 22:54:42.80ID:WVKxaYLHa
>>829
まずはこの辺の誤解を
・WPFは最近のトレンドなどではなく、とっくの昔に死んだ技術である
・EFはサーバー用のオーバーヘッドが極めて大きいフレームワークであり、デスクトップアプリで使うものではない
0833デフォルトの名無しさん (ブーイモ MM5e-x7KF)垢版2018/02/26(月) 22:59:10.38ID:DUs1D+akM
一番大きなギャップは、今の.NET界は完全にWebに傾倒していて、コミュニティの話題や新しい技術はほぼ全てWebであるということだな
デスクトップアプリなんか完全に時間止まってるから.NET 3.5の知識だけで全く問題ないよ
0843デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/27(火) 08:05:04.96ID:zlwrDvPF0
個人的にはWinFormsのデザインのほうがすき
0845デフォルトの名無しさん (アウアウカー Sa0a-msg2)垢版2018/02/27(火) 08:16:40.64ID:k/YAY/h1a
xmlでシリアライズするときに、配列のタグに番号を付与していくにはどうしたらいいのでしょうか
0847デフォルトの名無しさん (ブーイモ MM5e-x7KF)垢版2018/02/27(火) 08:38:03.68ID:7wWsDoA+M
>>844
なんか勘違いしてるみたいだが、PWAはWebアプリだぞ
今時ガワで何でもやるアプリなんてほとんど無くて、重要なのはWeb越しにある裏側の仕組みだ
つまり、PWAサポートするからバックエンドをVSやAzureで作ってね、ということ
そして、MSはC#を最重要なWebバックエンド開発言語として位置付けている
今更デスクトップアプリなどという時代遅れな技術を使いたくない、Web技術で全部作らせろ、というニーズは.NET開発者からも多いんだぞ?
今時C#=Winデスクトップアプリ向け、なんて言ってるのは10年遅れ
0849デフォルトの名無しさん (アウアウウー Sa08-x7KF)垢版2018/02/27(火) 11:40:41.47ID:xtZuYio6a
>>848
今時Webできない開発者なんかいない(そうでない連中はどうせ新しい物買わないし先細りだし放っといてもMSから逃げられないから餌をやる必要がない)
MSから見ればそこに拘る意味がなくなってるんだよ
今の.NETプラットフォームはAzure含めて純粋にWebプラットフォームとしての使いやすさで勝負していて、
十分に競争力のあるものになってるし実際大成功してるよ
0850デフォルトの名無しさん (ワッチョイ 26eb-g0eH)垢版2018/02/27(火) 11:49:37.57ID:/SsV5BVS0
見様見真似で勉強始めたばかりの初心者です
以下の記述でerror CS0234が出まして、ここから学習が進んでません

class test001:System.Windows.Forms.Form
{
static void Main()
{
System.Windows.Forms.Application.Run(new test001());
}
}
スクショttps://dotup.org/uploda/dotup.org1474023.jpg.html
各単語の意味もわかってませんが、
空のウィンドウが表示されるだけのソースのつもりで書いてます

1.基本的にこの記述は間違っているのか
2.error CS0234の対処法ググるとVisual Basicの設定方法がヒットするんですが、
メモ帳とコマンドプロンプトで制作してる者としてはどう対処すべきか
(取り急ぎ開発環境導入しますが、メモ帳だけでやってる方もいるらしいので)

以上2点ご教示願います
0851デフォルトの名無しさん (ワッチョイ f0ea-je3A)垢版2018/02/27(火) 11:58:10.40ID:p2sOgdSs0
>>850
どんな環境で何を見て始めたのか知らないけども、
VSならプロジェクト作成から「Windows フォーム アプリケーション」を選んで実行すれば、
空のウィンドウが表示される
初心者ならコマンドプロンプトで作らなくていいんじゃね?
0855デフォルトの名無しさん (ワッチョイ e206-MTlB)垢版2018/02/27(火) 12:47:38.51ID:SDSkuy0K0
>>850
おそらくSystem.Windows.Forms.dllへの参照が埋め込まれていないんじゃないかと
うちの環境だとIDE入ってるせいかSystem.Windows.Forms.dllへの参照は勝手に入るが

コンパイルエラーコードはこの辺りに纏まっている
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/compiler-messages/CS0234
といってもVSはVSでエラーコードに関してヘルプをBingで検索しだす奇天烈仕様
0857850 (ワッチョイ 26eb-g0eH)垢版2018/02/27(火) 13:36:31.89ID:/SsV5BVS0
回答ありがとうございます
実際の対策としてVS導入はするつもりですが、

知識欲として、参照が埋め込まれていない状態をIDE介さずに解消するのは難しいのでしょうか?
0859デフォルトの名無しさん (ワッチョイ e206-MTlB)垢版2018/02/27(火) 13:56:12.87ID:SDSkuy0K0
>>857
URLの/reference (メタデータのインポート)は読んだ?より具体的なら↓のとか

ソース ファイルが格納されているディレクトリで次のコマンドを実行します
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/how-to-develop-a-simple-windows-forms-control

https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/how-to-create-a-windows-forms-application-from-the-command-line
こちらだとcscにはライブラリの指定がないね、IDEというよりSDKやTargeting Packの設定なのかもしれん
0864デフォルトの名無しさん (ワッチョイ 2175-42by)垢版2018/02/27(火) 20:08:50.02ID:zlwrDvPF0
>>857
csc test.cs -r:System.Windows.Forms.Dll
でもできない?
0867デフォルトの名無しさん (ワッチョイ f41e-a/z7)垢版2018/02/27(火) 20:44:37.33ID:Ee9DX7nT0
Webの特にフロントエンドはひどすぎるな。JavaScript。
生産性の低い道具を使って仕事たくさん生み出そうってことなんだろう。
俺もReactだけは勉強したけどさw
去年のQiitaアドベントみると去年はVue.jsだったのか?ww
アホすぎ
0868デフォルトの名無しさん (ワッチョイ 2175-xOks)垢版2018/02/27(火) 20:58:24.68ID:zlwrDvPF0
スレチ
0869デフォルトの名無しさん (ワンミングク MM3e-2hJC)垢版2018/02/27(火) 21:09:13.36ID:IHLOiVm0M
業務系はレイヤー分割下手くそな初心者みたいなSE, PGばっかりだから
フロントを入れ替える=全改修みたいな悲惨な事になるから、頻繁にフロントを変えるって発想ができないんだろう
ここにはどうしても高い文明の壁があるから分かり合えることはない
0870829 (ワッチョイ 24c3-4sh6)垢版2018/02/28(水) 00:45:23.33ID:ZfoI/UP10
ちょっと流れてしまいましたか、貴重な意見ありがとうございます。
教えていただいたページで勘違いしていたところがスッキリしました。

WPF登場してから時間が立っているからか、古く感じてしまうのは仕方なしなのかな、と思う一報、クライアントアプリを扱う現場ではまだまだ全盛、WinFormも負けてられない勢いで使われているとおもいます。

また、一部、EFはサーバーサイドで…と言う意見もいただきましたが、クライアントでも、問題ないですよね、多分。
というか今回の質問としてはwebでないので3層は意識せず、でもUIとロジックの分離、その先の責務の分離を考えると、良い方法かな、と思いますが…じゃあEF使わないんだったら、どうしよう、constでクエリ定義してDataAdapterにぶっ込む…なんてしたくなかったですし。。。

もう少し調査は必要かもですが、ちょっとやってみたいと思います。
0871デフォルトの名無しさん (ワッチョイ 709d-saxG)垢版2018/02/28(水) 03:45:22.69ID:Tpz3pZ6h0
>ここにはどうしても高い文明の壁があるから分かり合えることはない
例えばどんなところが「高い壁」といえるんだ?
0873デフォルトの名無しさん (ワッチョイ 709d-saxG)垢版2018/02/28(水) 08:03:55.13ID:Tpz3pZ6h0
高いか低いかそれすらわからない。要するに何もわからないという壁だな。w
0876デフォルトの名無しさん (ワッチョイ 9c03-07Zo)垢版2018/02/28(水) 22:27:40.29ID:6WnrRHIY0
>>875
おまえがなんとなく理解出来るんなら大体の人は正確に理解できんじゃね?
0883デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/01(木) 13:33:07.63ID:6vJouTff0
スレチ
0885デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 19:58:55.12ID:AzZlAoZA0
te
0886デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 20:03:50.95ID:AzZlAoZA0
Task taskA = Task.Run(async () => {
int count = 60;//6sec
while (count-- > 0) {
Debug.Print("sw0:" + sw.ElapsedMilliseconds.ToString());
await Task.Delay(100);
Debug.Print("sw1:" + sw.ElapsedMilliseconds.ToString());
}
} );
taskA.Wait(5000);
5秒で一旦止まるように見えるが、暫くするとまたタスクは回り始める。C#バグかよ。
0887デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 20:10:43.58ID:AzZlAoZA0
しかもUIは5秒間止まってしまう。TASKの意味ないよ。書き方を間違ってるんだろうか?
0890デフォルトの名無しさん (ワッチョイ df06-k3ZN)垢版2018/03/01(木) 20:34:30.22ID:quAhlzft0
>>886-887
何だか良く分からないけど、どうみても6秒以上掛かるコードだし
Wait()はタイムアウトしても終了させないし、待機時間ブロックする
UIスレッドでしたら固まるし、awaitは解放したいスレッドで使う物だよ
0892デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 20:37:12.88ID:AzZlAoZA0
>>888
上はFormに貼り付けたボタンイベントで実行してるだけ。それなのにボタンを押したら
5秒間フォームが固まる。w
0895デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 20:44:04.03ID:AzZlAoZA0
>>891
 サンプル見て書いたつもりだったが、間違いでしたか?
Asyncが非同期処理を宣言するような機能で、Awaitは解放するスレッドに付けるのだから、Task.Delay(100)を
解放してUIに戻す.つまり100msec待ちながらもUIに制御を戻すってことではないのか?
0899デフォルトの名無しさん (ワッチョイ df06-k3ZN)垢版2018/03/01(木) 20:52:01.74ID:quAhlzft0
>>895
Taskはスケジューラを指定しない限りワーカースレッドで動くよ
その非同期ラムダでawaitしてもワーカースレッドが解放されてるだけ
UIスレッドで非同期待機するなら作成側を非同期メソッドにしてawaitする
0902デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 20:59:14.26ID:AzZlAoZA0
>WaitでGUIのスレッドを使って待機してるのでGUIはその間動かない
>5秒たつと待つのをやめてそのまま進む

 GUIのスレッドを使って待つの当然でしょ。それが目的だから。だめなの?
じゃあどこで待てばいいのだ? 

void ボタン_Click(){
TaskAを実行(起動);
TaskAの完了を待();
}
処理の流れはこうだけど、これは駄目ってこと? じゃあどうするの?
void ボタン_Click(){
TaskAを実行(起動);
}
どっか別のところで、例えばタイマー割り込みで
TaskAの完了を待();
ってことか? 流れがわかり難いので不細工だよな。「シーケンシャルに流れを書いて且つUIが
止まらない」というようになってないと駄目だろ。
0909デフォルトの名無しさん (ワッチョイ df06-k3ZN)垢版2018/03/01(木) 21:18:31.12ID:quAhlzft0
>>902
いやだから…そのWait()の代わりにawaitをUIメソッドに書くんでしょうが…
そうすれば一旦スレッド制御を返し、Taskが終われば取り戻し再開してくれる

レガシーな書き方だってTaskScheduler.FromCurrentSynchronizationContext()を指定して
ContinueWith()すれば良いし、UIコンテキスト取得しといてワーカースレッドから投げても良い
0911デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 21:23:58.40ID:AzZlAoZA0
>Taskはスケジューラを指定しない限りワーカースレッドで動くよ
>その非同期ラムダでawaitしてもワーカースレッドが解放されてるだけ
>UIスレッドで非同期待機するなら作成側を非同期メソッドにしてawaitする

言ってることの意味がわからない。Async()=>{}にしてるでしょ。
しかもこのラムダはRunが確保したスレッドプールで動作してるんでしょ。意味的にそうでないと
可笑しい。でラムダのその中でawaitしてるんだから、、、、って
UIスレでボタン受付
    スレ4000でラムダ起動
             AWAITでスレ4001にスイッチして100msec待つ
    100msec完了でスレ4000に戻る。
    スレ4000でループ
Task.Wait(3000)はUIスレでスレ4000の終了を待ってる。
ここで待ってる限りUIは止まるってことね。
そういう意味か? 何となく解った。
0913デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/01(木) 21:26:35.19ID:AzZlAoZA0
>いやだから…そのWait()の代わりにawaitをUIメソッドに書くんでしょうが…
そういうことね。解り申した。
0920デフォルトの名無しさん (アウアウウー Sa2b-dKqy)垢版2018/03/01(木) 23:57:01.48ID:bUfJPuYla
クライアントアプリならイベントハンドラでの await Task.Run だけ覚えてそこから先は全部同期でいい
WebだとTPL Dataflowとか CancellationToken とかまで踏み込んで使いこなさないとあまり意味ないけど
0922デフォルトの名無しさん (アウアウウー Sa2b-dKqy)垢版2018/03/02(金) 00:15:37.45ID:SqtcRaFRa
>>921
そもそも勘違いしてるみたいだが、asyncはオーバーヘッドが大きいから一般にはなるべく使わないほうがいい。
じゃあWebではなぜ逆に非同期を全面的に積極的に使うかというと、
多数のリクエストを同時に処理するときのスレッドプールの消費を抑えることでメモリ使用量を低減できるから。
クライアントアプリなんか必ず同時に一人しか使わないんだから、UIのイベントの度にRunしても全く問題にならない。
0930デフォルトの名無しさん (ワッチョイ ff7f-9act)垢版2018/03/02(金) 00:36:23.51ID:biZ1zUn80
>>926
> 結論 – 非常に短いメソッドにasync/awaitを使うことを避ける、あるいはきついループ内でawaitステートメントを持つことをを避ける
使い所を間違えるなとしか書いて無い。
「一般にはなるべく使わないほうがいい」とか、曲解だよ。
0935デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 04:58:14.52ID:IwZ3DIkv0
0936デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 05:58:54.00ID:IwZ3DIkv0
var cant = new System.Threading.CancellationTokenSource();//なんじゃこれは?
Task taskA = Task.Run(async () => {
int count = 60;//6sec
while (count-- > 0) {
 〜処理
 cant.Token.ThrowIfCancellationRequested();//例外発生
}
}, cant.Token );
何じゃらほい? 大したことできんのにたいそうな名前を付けやがって笑える。普通にflg使ったらいいだけだろ。
0938デフォルトの名無しさん (ブーイモ MMcf-dKqy)垢版2018/03/02(金) 09:21:22.43ID:QlU5Q+B8M
>>934
何が面白いのか知らないけど、同期でREST APIを呼ぶケースなんて普通にあるぞ

>>936
正しい非同期メソッドは必ずCancellationTokenを引数として受け取る
そして、非同期メソッドからさらに別の非同期メソッドを呼ぶときには引数にcantを渡す
そうやって共通のCancellationTokenを引き回すことで、別の非同期メソッドを呼んでる間でも待機状態を確実にキャンセルできる
同期ならabortすりゃいいだけだけどね
0939デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 12:17:26.88ID:IwZ3DIkv0
>>938
すいません。笑えませんでした。
0942(ワッチョイ df9d-wl/W)垢版2018/03/02(金) 13:28:13.40ID:IwZ3DIkv0
これってどういう意味があるの?単純にフラグを叩けばいいだけだろ。大して利点があるようには思えんが?
ManualResetEventの代わりにflg=Flseで初期化しておいて、setのところでflg=trueにして、
while(!flg);で待機したらいいだけではないのか?

var waitHandle = new ManualResetEvent(false);
Task.Run(() => {Thread.Sleep(2000);  waitHandle.Set(); });
 Console.WriteLine("Wait");
waitHandle.WaitOne(Timeout.Infinite);
0944デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 15:56:09.38ID:IwZ3DIkv0
100msecのタイマー割り込みの中でこういうのを順番に実行する。
void timer1(){
switch( state){
case 0:
if( do1() ){state++;}; break;
case 1:
if( do2() ){state++}; break;
case 2:
if( do2() ){state=0}; break;
}
}
何かもっとスマートな書き方はないか?
0947デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 16:57:54.42ID:IwZ3DIkv0
Stateを使いたくない。
while(1){
while(!do1()){ wait(100);}
while(!do2()){ wait(100);}
while(!do3()){ wait(100);}
}
こんな感じでなんかいい書き方は?
0950デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 18:21:47.40ID:IwZ3DIkv0
>>949
 遅延は無視できるレベル。
>>948
 ならない。というかStateは使いたくない。
0951デフォルトの名無しさん (アウアウエー Sa9f-OA7j)垢版2018/03/02(金) 18:26:56.36ID:AXJZJbYfa
>>944
ネタっぽい質問だけどこんなのでも作るとか

public class RoundRobin
{
  int index = 0;

  RoundRobin(params Action[] jobs)
  {
    if (jobs == null || jobs.Length == 0) jobs = new Action[] { () => { } };
    this.Jobs = new ReadOnlyCollection<Action>(jobs);
  }

  public ReadOnlyCollection<Action> Jobs { get; private set; }

  public void DoNext()
  {
    Jobs[index]();
    index = ++index % Jobs.Count;
  }
}

余談だけど、組み込みか何かの人?
タイマー割り込みてw
0956デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 18:46:01.75ID:IwZ3DIkv0
Timer1のなかにステートマシンつくったらなんでもできるけど、わかり難いだろ。
フローチャートのように上から下へ自然に流れる方がいい。
0958デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 18:50:30.27ID:IwZ3DIkv0
>>952
var cts = new CancellationTokenSource();
Task.WhenAll(
Task.Run(() => EventLoop(cts)),
TimerLoop(cts.Token)
).Wait();
こういう書き方を見るにつけ、なにかいい方法はないかとつらつらと考えてる。
0959デフォルトの名無しさん (アウアウエー Sa9f-OA7j)垢版2018/03/02(金) 18:56:31.02ID:AXJZJbYfa
あとはこんなの
IEnumerable<Action> JobSequece()
{
  while (true)
  {
    yield return () => { ... };
    yield return () => { ... };
    ....
  }
}

async Task RoundRobin()
{
  foreach(var j in JobSequece())
  {
    await Task.Run(() =>Thread.Sleep(100));
    j();
  }
}

タイマー割り込みって言葉使うのはHW直接いじる超低水準のコード書いてる人か
80年代マイコン少年のおじさんだろうねw
0961デフォルトの名無しさん (ワッチョイ df9d-wl/W)垢版2018/03/02(金) 19:02:23.48ID:IwZ3DIkv0
C++ならTimer割り込みって言葉は普通につかうぜよ。
0965デフォルトの名無しさん (ワッチョイ 87d2-Vmra)垢版2018/03/03(土) 00:37:31.41ID:wLcwZl2a0
本を読みながらUnityでC#を勉強しているのですが・・・
それぞれのコードの最後の行にあるnewは何をしているのか教えて下さい。

public class ArrowGenerator : MonoBehavior {
public GameObject arrowPrefab;
float span = 1,0f;
float delta = 0;

void Update()
this.delta > this.span) {
GameObject go = Instantiate(arrowPrefab) as GameObject:
int px = Random.Range(-6, 7);
go,tansform.positon = new Vector3(px, 7, 0);
}
}
}

他にも

public class IgaguriController : MonoBehavior {
public void Shoot(Vector3 dir) {
GetComponent<Rigidbody>().AddForce(dir);
}

void Start() {
Shoot(new Vector3(0, 200, 3000));
}
}

長いので分割します。すみません。
0966965 (ワッチョイ 87d2-Vmra)垢版2018/03/03(土) 00:38:39.14ID:wLcwZl2a0
それぞれ最後の行の、
go,tansform.positon = new Vector3(px, 7, 0);
Shoot(new Vector3(0, 200, 3000));

このnew演算子?は何をしているのでしょうか?
それぞれVector3というメソッドが直後のカッコの中の引数を渡していると思うのですが
その手前のnewが何なのかわかりません
クラスをインスタンスにするときに使用するnewとは若干形が違いますよね
いくら調べてもこの形のタイプのnewが出てこなくて・・・。

どなたか宜しくお願いします・・・。
0967965 (ワッチョイ 87d2-Vmra)垢版2018/03/03(土) 00:41:09.07ID:wLcwZl2a0
ああ・・・空白が埋まってしまっていてとても見づらいですね
本当にすみません
0971965 (ワッチョイ 87d2-Vmra)垢版2018/03/03(土) 01:34:37.27ID:wLcwZl2a0
メソッドではなくクラスですね。

newは
クラス名 変数 = new クラス名()
の形しか見たことなくて・・・

上は
Vector3 go,tansform.positon = new Vector3(px, 7, 0);
という風に頭にもVector3 を付けないのですか?

下は
Shoot(Vector3 ABC = new Vector3(0, 200, 3000));
といった風に、ABCの様な変数は表記しないで、クラス名にnewを添えただけでも
クラスをインスタンス化できるのでしょうか?

>>970
一応、上のは入門書に書いてあるコードなのですよね
入門書が不親切なのか私に応用力がないのか・・・後者っぽいですね
他の入門書も調べて買ってみます
0974デフォルトの名無しさん (ワッチョイ df06-k3ZN)垢版2018/03/03(土) 02:45:02.94ID:jgGrGcb50
>>971
コードがタイポってる気がするが、上はフィールドへの代入だから
TransformクラスでpositionはVector3Dであると既に定義されている
下はコードにメソッド定義も含まれていて仮引数の型が書いてあるよね

変数宣言の型指定であって、インスタンス化には代入を伴う制約はない
未初期化の変数は参照できないから殆どは宣言時に代入もされるけど
それぞれの字句に切り分けて意味を把握しないと歪んだ理解になります
0975965 (ワッチョイ 87d2-Vmra)垢版2018/03/03(土) 07:33:03.46ID:wLcwZl2a0
>>974
とても詳しく教えて頂きありがとうございます
そういうことなのですね・・・やっと少し理解できました

意味を捉えようとは思って勉強していたのですが形で覚えていたんですね
1単語?ずつ意味を捉える様に意識してみます
皆さん変な質問にお答え頂きありがとうございました!
0976デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/03(土) 08:22:24.39ID:kknO3Mli0
Vector3 vec; 変数定義
vec = new Vector3(1,3,2); インスタンス生成後、変数に代入
0977デフォルトの名無しさん (ワッチョイ df19-4wjg)垢版2018/03/03(土) 09:12:41.41ID:PjugdM0i0
処理の結果を返してくれるapiで、例えば
貼り付けるテキストを決める
フォント名設定
色設定
文字の大きさ設定
なと細かくapiを呼び出ししないといけない場合でも、結果を受け取る変数はやっぱり使い回ししないほうがいいですか?その変数はapi呼び出したあとエラー確認するだけです
0985デフォルトの名無しさん (ブーイモ MM4b-dKqy)垢版2018/03/03(土) 15:04:07.52ID:VVolGUCSM
属性(Attribute)
Pythonのデコレータとは違って、それ自体はメソッドに純粋にメタデータを付けるだけの機能なので、
属性を処理するにはリフレクションを駆使する必要がありクソ面倒臭い
フレームワーク作る人のための機能
0989デフォルトの名無しさん (ワッチョイ df06-k3ZN)垢版2018/03/03(土) 16:55:57.03ID:jgGrGcb50
>>983-985
デコレータ自体を実現しようとするなら厄介よね、一般的なデコレータに相当するもので良ければ
@propertyならC#プロパティがあるし、@classmethodや@classmethodならstatic修飾子で済むんだけど
実装に関わってきそうなのはデリゲートとかかな、Pythonで言えばbound/unbound methodに相当する
0993デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:15:41.15ID:J/ZR4f1P0
0994デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:16:54.70ID:J/ZR4f1P0
0995デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:17:03.97ID:J/ZR4f1P0
0996デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:18:43.29ID:J/ZR4f1P0
0997デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:18:57.30ID:J/ZR4f1P0
0998デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:21:21.48ID:J/ZR4f1P0
0999デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:24:24.96ID:J/ZR4f1P0
1000デフォルトの名無しさん (ワッチョイ 6775-LhZF)垢版2018/03/04(日) 08:26:06.35ID:J/ZR4f1P0
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 27日 10時間 23分 38秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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