ふらっと C#,C♯,C#(初心者用) Part140

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

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

■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part139
https://mevius.5ch.net/test/read.cgi/tech/1533466544/
■コードを貼る場合は↓を使いましょう。
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: checked:vvvvv:1000:512:----: EXT was configured
2018/11/10(土) 09:52:04.57ID:HbWc37XyM
Split使えば配列に変換してくれるでしょ
485デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 09:59:03.63ID:sUbsN3PYp
Splitメソッドで配列に格納するところまではできてますが、その後の要素数の異なる配列を
xmlやjsonの要素に入れる際の処理のコードが腫れ上がって困ってます。
配列の要素数のパータンに応じて
If (配列の要素数=3){…}
else If(配列の要素数=4){…}
else If(配列の要素数=5){…}

のように
配列の要素数に応じてコード量が
多くなってしまいます。

他に処理の仕方はございますか?
486デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 10:31:22.39ID:sUbsN3PYp
If(3<配列の要素>7){


オブジェクト名.xmlのタグ名1= 配列名[0];
オブジェクト名.xmlのタグ名2= 配列名[1];
オブジェクト名.xmlのタグ名3= 配列名[3];
オブジェクト名.xmlのタグ名4= 配列名[4];
オブジェクト名.xmlのタグ名5= 配列名[5];


のようにすると
配列の要素数とxmlのタグ数が違う場合にエラーがでてしまいます。

例えば上記のコードだと
配列の要素数が5以外の場合はエラーになります
2018/11/10(土) 10:46:41.57ID:kamloJld0
>>483
入力データフォーマットはわかったので
出力データフォーマットを書いて見てください
それが曖昧だからどうやったらいいかわからないんじゃない?
488デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 11:21:38.15ID:sUbsN3PYp
ルコード
namespace Sample.model
{
public class PersonModel
{
/// <summary>
/// ID
/// </summary>
[System.Xml.Serialization.XmlAttribute("id")]
public String ID { get; set; }
/// <summary>
/// 名前
/// </summary>
[System.Xml.Serialization.XmlElement("firstname")]
public String FirstName { get; set; }
/// <summary>
/// 苗字
/// </summary>
[System.Xml.Serialization.XmlElement("lastname")]
public String LastName { get; set; }
/// <summary>
/// 誕生日
/// </summary>
[System.Xml.Serialization.XmlElement("birthday")]
public String Birthday { get; set; }
}
}
489デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 11:23:23.72ID:sUbsN3PYp
ファイルを読み込み処理
.
.
string data =1行ずつ読み込みこんだデータ;
string xml[]= data.Split(,);

/シリアライズする為のPersonsインスタンスを生成
Sample.model.PersonsModel model = new Sample.model.PersonsModel();
model.Persons = new List<Sample.model.PersonModel>();
//インスタンスに値を設定
// Persons1
Sample.model.PersonModel person1 = new Sample.model.PersonModel();

If (3<配列の要素数<8){

person1.ID = data[0];
person1.FirstName = [1];
person1.LastName = [2];
person1.Birthday = [3];
model.Persons.Add(person1);


//出力先XMLのストリーム
System.IO.FileStream stream = new System.IO.FileStream(@"D:\DATA\EXPORT.XML", System.IO.FileMode.Create);
System.IO.StreamWriter writer = new System.IO.StreamWriter(stream, System.Text.Encoding.UTF8);

//シリアライズ
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Sample.model.PersonsModel));
serializer.Serialize(writer, model);

writer.Flush();
writer.Close();
2018/11/10(土) 11:26:08.88ID:q+mWhUVWa
>>483
var data = File.ReadAllLines("path/to/file.csv")
.Select(line => line.Split(","));

var jsonText = Newtonsoft.Json.JsonConvert.SerializeObject(data);
491デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 11:27:19.41ID:sUbsN3PYp
person1.ID = data[0];
person1.FirstName = [1];
person1.LastName = [2];
person1.Birthday = [3];
model.Persons.Add(person1);


ここの処理に困っています。
この場合は読み込みだデータの配列の要素数が4以外の場合エラーになります。
エラー原因は要素が4未満の場合は
指定したxmlのタグの数に満たないためだと考えられます
492デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 11:28:55.94ID:sUbsN3PYp
間違えました
data[0]ではなく
xml[0] でした
493デフォルトの名無しさん (ササクッテロル Spcd-WqUE)
垢版 |
2018/11/10(土) 11:33:51.32ID:sUbsN3PYp
>490
ご指摘ありがとうございます。

要素数が異なる配列を
xmlタグ要素に入れる処理の
ご指摘を頂けると幸いです。

読み込んだ1行のデータの配列の要素が異なる場合の処理はどのように書くのがスマートでしょうか?
2018/11/10(土) 12:23:15.91ID:h+MQ7FTQa
>>491
要素が足りない場合に、Birthdayなどをどう書き込むべきかによる
何かしらの既定値を書き込みたいなら
string GetOrDefault(string[] xml, int index, string defaultValue)
{
if (0 <= index && index < xml.Length) { return xml[index]; }
return defaultValue;
}
のような補助メソッド作って
person1.Birthday = GetOrDefault(xml, 3, "1000/01/01");
のように取得する

要素が足りない場合にはBirthdayなどを書き込まないなら
xml出力の方では、PersonModelクラスのメンバーにDefaultValue属性を付けて
その属性で指定した値を格納しておけば書き出されなくなる
JSONの方も同じように書き出さないように出来ると思う
2018/11/10(土) 12:35:22.80ID:2+OzQsKxM
>>493
サルなの?
仕様も決めないでどうやるもこうやるもねぇよ
じゃあ、全部key,valueでいいよ
csvに存在するすべての要素をkey,valueで出せ
keyのフォーマットはcolumn-rowな
xmlでのタグ名はdata
属性はkeyとvalue
2018/11/10(土) 13:04:57.13ID:q+mWhUVWa
>>493
var persons = File.ReadAllLines("file.csv")
.Select(line => { var a = line.Split(","); Array.Resize(ref a, PROP_COUNT); return a; })
.Select(a => new Person() {
ID = a[0],
Name = a[1],
...,
LastProp = a[PROP_COUNT - 1]
});

var json = JsonConvert.SerializeObject(persons);
2018/11/10(土) 15:54:29.53ID:48CyTBFD0
jsonって名前=値ペアの連想配列は順序が保証されないので
順序を保証したい場合は配列で囲って [{名前: 値}{名前: 値}] みたくすると思うんですが、
データ保存用途として見た場合使い難くないですかね?
シリアライズした時も処理系によって順序が保証されないから単純diff比較も使えずパースして比較する必要がありますよね
これって問題にならないんですか?
2018/11/10(土) 16:48:27.38ID:gqodC/ga0
名前と値で取れるんだから、順序関係ないだろ?
2018/11/10(土) 16:49:31.82ID:gqodC/ga0
つか、シリアライズした結果がいつでも同じだと思うのか?
2018/11/10(土) 17:04:14.17ID:hLxIIZfE0
>>498
テキストだからdiffしたいって言うのは割とよくある要望
2018/11/10(土) 18:05:23.42ID:48CyTBFD0
たとえばweb屋なら画面のチェックボックスとかの状態をjsonでデータ管理するとして
そのデータから設定仕様書とかを起こす時に困るんじゃないかな
なんかここだけアルゴリズム依存で時代と逆行してるような気がしてイマイチなんですよ
2018/11/10(土) 18:07:52.91ID:/C4Raf5+p
んなもん仕様書の書き方次第だろ。
2018/11/10(土) 18:26:43.69ID:ZJVvB/9K0
なんかよくわからないけど、このJSON君はお金出して誰かに作ってもらったほうがいいんじゃねえの?
2018/11/10(土) 18:31:49.77ID:jXgJ1KMYM
JSONがイマイチだというお前の小言にこのスレはつき合わなければならないのか?
C#に関係ないんだが
2018/11/10(土) 18:41:55.53ID:kamloJld0
俺もjsonはイマイチだと思う
要素があるのかないのかわからん
2018/11/10(土) 18:45:43.38ID:jXgJ1KMYM
文句があるならこいつに言ってこい
https://plus.google.com/+DouglasCrockfordEsq
嫌ならママに聞いてもらうか穴掘って叫んでろ
2018/11/10(土) 18:56:12.67ID:Y9Dl3F80M
自宅の壁にでも書いてろ
2018/11/10(土) 19:01:40.71ID:/crW2tCF0
c#とオブジェクト指向の勉強にオススメの本ありますか?
今まで組み込みのcばっかやってきたので、こっちの世界の定石みたいなものを身に付けたいのです
2018/11/10(土) 19:22:15.67ID:q+mWhUVWa
>>508
1冊ならAdaptive Code C#実践開発手法
2018/11/10(土) 21:28:30.80ID:lx5S0cHm0
>>491
jsonいじらないと細かいことわからんけど
while とswitchつかうとか?
繰り返す回数はxml.length
i=0の場合はperson1.ID=data[0]
エラーは配列が存在しないから出てるんじゃね
511デフォルトの名無しさん (ワッチョイ e19d-otFY)
垢版 |
2018/11/12(月) 20:04:46.62ID:q8PdpD4Q0
public List< string > textsplit(string strdata) {
var ls = new List<string>();
ls.Add("1"); ld.Add("2");
return ls;
}
関数内部でNewしてそれを戻しても問題ない?
2018/11/12(月) 20:15:33.08ID:fLLyDCF20
問題ない
2018/11/12(月) 20:23:24.20ID:NInYtJ3Hp
あーC#ならね。
514デフォルトの名無しさん (ワッチョイ 41eb-AS2U)
垢版 |
2018/11/12(月) 20:29:35.59ID:Fg4ONeCp0
それって他の言語だとまずいん?
2018/11/12(月) 20:33:45.12ID:NInYtJ3Hp
ガベコレの無い言語だと、作った人が解放する掟に反するから、ひと悶着あるんだよなw
2018/11/12(月) 20:37:51.48ID:8vdHE86ca
スタックに自動変数で確保した領域のポインタを返すのは普通はバグだよね
C#はそれが起らないから問題ない
2018/11/12(月) 20:48:26.07ID:NInYtJ3Hp
>>516
そっちは、レジスタ渡しされるから無問題だったりする。
まあ、コンパイラによるがな。
2018/11/12(月) 20:50:44.04ID:4IQEu5KyM
これがアウトなら、C言語のmalloc関数等は存在そのものがアウトという理屈になるな
519デフォルトの名無しさん (ワッチョイ e19d-otFY)
垢版 |
2018/11/12(月) 21:02:40.60ID:q8PdpD4Q0
戻した後で使うんだが使うのが翌日になっても大丈夫?
1日に一回だけUPする場合、そういう可能性がある。そのときにガベージコレクション
されて無くなってるってことない? 関数を抜けてるので。
2018/11/12(月) 21:06:30.48ID:8vdHE86ca
>>517
レジスタ渡し?
2018/11/12(月) 21:26:19.59ID:sWgkDKTV0
>>519
関数抜けてても戻り値受けてる変数がいきてるならガベージコレクションの対象にはならないんじゃね?
2018/11/12(月) 21:39:50.73ID:ce53GWJ3d
翌日だとアウトになるような仕組みなら1秒後でもアウトになる可能性あるじゃん
2018/11/12(月) 22:11:23.36ID:k/0PxRaR0
Listみたいな参照型は実体はヒープに確保されてスタック上にあるのはそれを指すポインタだけ
ガベージコレクションされる可能性があるのは関数を抜けた時ではなくそのオブジェクトへの参照が1つもなくなった時
親関数が戻り値を受け取る事で新たに参照が出来るので、子関数が終了しても消えない
2018/11/12(月) 22:28:48.44ID:JxfhNlMua
>>523
違う。それで済むならGCなどという大層な仕組みは必要なく、単なる参照カウンタで十分。
循環参照の場合は、オブジェクト参照まだ残っていてもGC対象となる必要がある。
正しくは、GCされる可能性があるのは、スタックまたはstaticフィールドから参照を辿れなくなったときだよ。
525デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/12(月) 23:52:29.85ID:D6ILV7Jxa
>>516
その為のstatic。
static付いたローカル変数はスコープはローカルだけど、
寿命はグローバル変数と同じ、宣言されてからプログラムの終了までになる。
2018/11/13(火) 00:05:00.82ID:1GLtCoZ4a
>>525
その為、ではないと思うけどね
少なくとも普通は。
ポインタを返すためにstaticにするってそれはないっすわw
そもそもCの話をしてるわけでもないですし
2018/11/13(火) 00:23:31.91ID:lWwaeoUH0
そう、C#ならね
2018/11/13(火) 00:39:11.71ID:7xmY+SYc0
>>520
そう、アセンブラレベルで見ると、戻り値はR0レジスタとか決まってたりする。
2018/11/13(火) 00:44:34.29ID:1GLtCoZ4a
>>528
そういう問題じゃないんですがw
2018/11/13(火) 00:45:20.73ID:p27/Ddjo0
なぜARMの呼出規約みたいな話が出てくるのか
ヒープへのポインタでスタックすら関係ないし
531デフォルトの名無しさん (ワッチョイ e19d-otFY)
垢版 |
2018/11/13(火) 01:19:58.69ID:ADQqJemu0
Methodを渡すのになんでFunc<string,int> fnc みたいになったの?
string Func <string> fncの方が分かりやすいと思うが、、
532デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:01:53.20ID:bZ0HXQ7Xa
>>526
ポインタや参照返してたらC#もCも危険性変わらんよ。
ガベコレされるまで危険なのは同じ。


と言うかポインタは普通返さない。
void関数なりメソッドで入力用のポインタ(参照)と出力用のポインタ(参照)を引数に取る。
2018/11/13(火) 02:06:18.61ID:kG9DLvmd0
>>531
そんな記法C#には存在しないし、入れ子の場合はどうすんのさ
2018/11/13(火) 02:12:38.95ID:1GLtCoZ4a
>>532
何を言ってるのかさっぱり分からんけど>>518

>>528の人もなんか勘違いしてるっぽいので論点整理

char *int_to_str(int x)
{
  char buf[20];
  sprintf(buf, "%d", x);
  return buf;
}

これのどこがマズいか分かります?
>>511の人はこれと同類の落とし穴がC#にもあるのか心配してると思ったわけ
535デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:20:42.52ID:bZ0HXQ7Xa
>>534
return抜ける時にchar[20]が消えちゃうんでしょ?
んで、そう言う時にreturn抜けても消えないのがstatic char[20]
2018/11/13(火) 02:24:11.95ID:1GLtCoZ4a
だから、普通はそんなことしませんて...
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13118051728
2018/11/13(火) 02:26:43.91ID:7xmY+SYc0
>>534
それじゃあ>511と問題が違うだろw
だから、ポインターの戻り値なんてレジスタで帰るから気にすんなって話。それにnewしたオブジェクトはヒープに取られるんだから、スタックだって気にしなくていいぞ。
538デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:28:55.08ID:bZ0HXQ7Xa
んで、今度は呼び出元全部がchar[20]と同じに(1回目も2回目も2回目と同じ値に変化する?)なりかねないので、通常

void int_to_str(int x,char* str)
{
  sprintf(str, "%d", x);
}

と言うふうに、出力用のポインタ引数用意する。
539デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:31:57.72ID:bZ0HXQ7Xa
>>536
言ってること同じやん( ´Д`)y━・~~
2018/11/13(火) 02:32:00.35ID:1GLtCoZ4a
>>537
だからレジスタで返るとかそういう問題じゃないんですがw

問題が違うのは当たり前w
だから、C#にも>>534と同類の落とし穴があることを心配しているんじゃないかなと思って
>>516みたいに書いたわけ

もちろん別のことを心配してるのかもしれん。

>それにnewしたオブジェクトはヒープに取られるんだから、スタックだって気にしなくていいぞ。
だから最初からそう言っていますw
2018/11/13(火) 02:34:25.29ID:1GLtCoZ4a
>>539
同じじゃないでしょ。
>と言うかポインタは普通返さない。
これ間違ってるから>>518
2018/11/13(火) 02:38:05.39ID:1GLtCoZ4a
たぶん>>537の人はポインタと左辺値の区別がついてないんじゃないのかな。
これはポインタって言葉の使い方が混乱してるからしょうがないけど

それともそもそもスタックとかポインタの意味が分かってないのか
2018/11/13(火) 02:38:54.17ID:p27/Ddjo0
C#のnewに相当するのはC++でもnewだし、C#でもstackallocでスタック配列は可能
しかもローカル変数のアドレスを取得し返すコードもunsafeならビルドできる
返すものが抜けるスタックだと不正なのはレジスタも呼出規約も言語も関係ない

C++でもお行儀はともかく適切にdeleteすれば済むし、C#ならGCが回収するってだけ

>>531
戻り値たるintとかどっかいってる上に奇妙な文法増えちゃうよ
544デフォルトの名無しさん (アウアウカー Sa9d-Gc0T)
垢版 |
2018/11/13(火) 02:49:42.48ID:bZ0HXQ7Xa
>>541
言い過ぎだとしても、>>538的な方が普通な気がするが。
試しに普通のポインタ返す関数を。。。とここまで書いて関数ポインタ思い出した。

でも通常かと言うと疑問。
組込関数にもあるけど、それを通常と言って良いかどうか。
それと同じ仕組みの関数作るのが通常とは思えない。
2018/11/13(火) 07:44:20.95ID:4VfxC09pd
ピクチャーボックスに書いた線の座標を配列にいてれおいて、右クリックの時に一つ前に書いた線を消したい時って再描画させるにはどうしたら出来ますか?

配列の最後を消して配列要素分ループして書いても書けず、前の書いた線が残りっぱなしでやり方が分かりません。
2018/11/13(火) 07:56:39.45ID:OewfmfIr0
>>545
再描画する前にピクチャーボックスを掃除しているか?
再描画処理が正しいか?
2018/11/13(火) 09:19:44.70ID:4VfxC09pd
>>546
線色変えたら同じ線上にかかれてました。
しかし、前に書いた線が消えません。
どうすれば消えますか?一回全てクリア?
2018/11/13(火) 09:43:33.96ID:r8TlMUhn0
>>547
線を書くときに上書きされた背景などの部分も含めて書き直す。
2018/11/13(火) 12:26:10.47ID:oXvGF3Wua
>>545
なんか、何回も同じようなこと聞いてない?

private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
  if (e.Button == MouseButtons.Right) pictureBox1.Invalidate();
}

そんで描画処理はPaintイベントに書く

Windowsの描画の基本は、他のウィンドウが重なるなどして描画した絵が消されたら
(無効化されたら)その都度再描画。
プログラムの都合で再描画が必要な場合がInvalidate()等を呼んで強制的に無効化する。

PictureBoxは無効化されたら自動で背景色か背景画像で塗りつぶされるはず。
だから前に書いた線を消す必要はない
2018/11/14(水) 21:51:00.00ID:wbMCB4xt0
XORで線引くと、もう一度XORでなぞると元に戻る。
これなら古いのを再描画する必要がない
2018/11/14(水) 22:33:05.99ID:3L2XIs1L0
XORはグレー背景に弱いから真面目に線引くこと考えた方がいい
552デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 03:05:16.76ID:lNkjj0jra
メモリ上にビットマップ展開、そこに描画して画面はメモリ上のビットマップを表示するだけ。
画面の大きさ分のビットマップでメモリ喰うけど、再描画に時間取られない。
2018/11/15(木) 06:20:27.21ID:Hpd5UC3KM
懐かしい
2018/11/15(木) 07:16:16.62ID:AUtHx5s50
前に画面の選択範囲のスクリーンショットとる機能作った時に一番苦労したのが
選択範囲を示すための四角の点線をうまく表示することだったわ
555デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 12:43:10.25ID:lNkjj0jra
>>553
今はどうか知らんが、昔は定番テクニックだったよね。-> >>552
2018/11/15(木) 12:59:29.31ID:0i/BmJkF0
今はテクスチャだから四角形プリミティブ重ねればいいのだけ。
2018/11/15(木) 13:22:50.19ID:lrjlJOeNa
>>555
553が言ってるのはXOR描画じゃないの?
Win9x時代はエクスプローラ等でアイテムの選択状態を表す時や、>>554が言ってる
ラバーバンドの簡易的な実現方法として利用されてたと思う

リソースが貧弱だった時代に高価なビットマップを保持するなんて愚策を
定番にしていた人がそうそういたとは思えんね

それやってたの、即時モードの描画が理解できなかった、98時代のおじさん
だけだと思う

っていうかWin32ってもう20年以上歴史があるんだからいい加減>>552みたいな
発想は卒業したらどうなんだろう

これ、WPFみたいな保持モードの考え方と全然違うよw
558デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 13:23:12.34ID:lNkjj0jra
Direct2Dとかだっけ。
触った事ないなぁ。。。

ペイントっぽいアプリとか程度だったら、どっちが楽なんだろ。。。
559デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 13:29:33.73ID:lNkjj0jra
>>557
ううむ。そうか。
でもウィンドウが重なったらXOR以前に再描画するものが消えてるんだが。。。

確かに翁とか愛称ついてるあたり古い考えの人だった気もするが、当時でも有効だったなら
今では解像度はタブレット以下が多い割にメモリ積み放題だし、昔より手軽な割に有効だと思うんだが。。。
560デフォルトの名無しさん (アウアウカー Sa85-ZFLo)
垢版 |
2018/11/15(木) 13:33:22.82ID:lNkjj0jra
あ、WPFが別物ってのは理解出来る。
とはいえ、ペイントもどき作ってないからどうだろ。。。
HTML5のCanvasの仕組み次第だな。
少なくとも、Formsでは今でも有効。-> >>552
2018/11/15(木) 19:09:16.78ID:qi3FyInE0
画像描画の話題そのものはいいとしてコントロールの描画とImageプロパティへの描画と画面への描画の区別がついていない人がいる気がする
元の質問は「初期化しろ」で終わっているからどうでもいいんだろうけど
562デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 17:07:48.79ID:eS8uuMhZ0
https://www.youtube.com/watch?v=Arlz1lgaO-0
こういうソフトってc#ですか?
pythonではきついですか
2018/11/17(土) 17:19:03.08ID:8wpf7s1e0
>>562
プログラム言語というより、数学の知識があるかないかじゃない?幾何学とか、行列とか
2018/11/17(土) 17:21:21.05ID:8wpf7s1e0
それを踏まえて、Windowsで動かしたいならC#の親和性が高いし、
UIをブラウザにしたいならC#でなくてもいいし。
2018/11/17(土) 17:37:36.65ID:rc62Vrp5a
>>562
こういうのはアルゴリズムが全てで、言語なんかどうでもいい
言語云々言ってるレベルの人には遠すぎる目標だから、いったんもっと手前にマイルストーンを置いたほうがいい
確実に挫折するから
566デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 17:55:07.29ID:eS8uuMhZ0
言語は何でもいいんですね
じゃあC#で頑張ってみます

フィボナッチなんとかでしたっけか
567デフォルトの名無しさん (アウアウイー Sa2d-4yv2)
垢版 |
2018/11/17(土) 17:58:49.17ID:bZFmP2aXa
>>562
無理だろう
リンクを開いたら『かっぱ寿司』のCMだった
寿司は握れない
2018/11/17(土) 18:03:29.40ID:rc62Vrp5a
>>566
勘違いさせてしまったようだが、これを作れるレベルの人なら言語の選択なんか全くどうでもいい些細な問題だという意味だぞ
GUIが一通り使えて3Dのレンダリングができるなら作れるっちゃ作れる
569デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 18:10:45.85ID:eS8uuMhZ0
であれば向いているのは、pythonよりはc#ということになりますか?(ただのイメージですが)
2018/11/17(土) 18:25:34.63ID:tg8QC7+S0
openGLなら素直にCとかC++使った方がいいとは思う
できるできないじゃなくて初心者なら単純に調べ易さが大事やろ
571デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 18:28:18.79ID:eS8uuMhZ0
c#でdirectxやopenGlを使うのは一般的ではないということでしょうか?
cとかc++は超難易度が高いと聞くのでどうなのかなと思ってました
2018/11/17(土) 18:31:24.61ID:/a1P+H3qM
C#ならUnity3D使えばいい
できるどころではなく、現代において3Dプログラミングをするなら最も初心者が入りやすい選択だ
2018/11/17(土) 18:38:39.23ID:tg8QC7+S0
>>571
最近は知らないけどあくまでC/C++用ライブラリのラッパーがあるだけだから
変なところでつまづく可能性あるのがつまんないじゃん
実装が中途半端だったりするのもあるから
webに転がってるサンプルがそのまま動いた方が楽やろ
C/C++は深みはまれば無限の闇だけどシンプルに使う分にはなにも難しくない
だって大半のプログラマはCから入ってるんだし
Unityは全く知らんからその辺は別の人に
574デフォルトの名無しさん (ワッチョイ 3e67-sNvt)
垢版 |
2018/11/17(土) 18:41:57.34ID:eS8uuMhZ0
>>572
あくまで1から作ってみたかったので
後ゲームエンジンはgodot使ってたりします

>>573
じゃあCから入ってみます
2018/11/18(日) 10:42:50.75ID:PoFSPoaKa
asp.net core 2.1 MVCの検証属性
Javaだと検証属性にgroupsを設定できるのだがasp.net coreには同等の機能は存在しない?
2018/11/18(日) 11:57:32.69ID:ve9l0Wxid
>>575
具体的に何がしたいの?
2018/11/18(日) 12:12:56.71ID:PoFSPoaKa
>>576
押したボタンによって検証定義を変えたいのだけど検証のグルーピングって他に使い道あったっけ?
2018/11/18(日) 12:18:03.17ID:XN88gtNzM
>>577
諦めてFluent Validationとか使えば
2018/11/19(月) 05:43:43.79ID:r5HrKoSb0
コーディングしてて思うけど変数名とかつけるのがめちゃ難しい
dataとかinfoとか抽象的で何を指してるのかわからんようにならないように
意を示すような単語を探したいが探しきれない

csvファイルを読み込んだバイナリデータを受けとる変数名とかstreamって名前にすべきなのか?
2018/11/19(月) 07:18:33.39ID:bSg94FGhM
>>579
日本語のカタカナのアルファベット表記でよい
お前の脳みそがなんの辞書も持ち合わせていない雑魚だった場合
全クラスの全変数の数分その都度エキサイト翻訳にかける工数が必要になる
1000個以上あればもちろん1000回以上だ
つまり、雑魚なお前はそのくだらん作業で工数の大半を食い潰す
日本語アルファベット表記で妥協しろ
2018/11/19(月) 07:47:24.91ID:SGbs8fwRa
>>579
変数名で悩む前にスコープを短くすればいいのでは?
2018/11/19(月) 08:00:47.12ID:OxHzXIEP0
>>579
変数名は変数管理台帳に登録してあるのしか使っちゃだめだよ
2018/11/19(月) 08:05:33.08ID:hJCk5pq9M
業務データを扱ってて直感的に理解したいときには変数名を日本語にしてる。
エディタ操作面で色々不便だけど。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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