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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 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
2018/02/11(日) 14:10:21.78ID:TT4/yggk0
デリゲートは変数なのか?
2018/02/11(日) 15:19:36.02ID:jKl1uVTt0
メソッドの引数に1000以上の要素を持ったリストを渡す場合、メモリの消費等考慮するとやはり参照渡しが良いでしょうか?
2018/02/11(日) 15:27:05.48ID:MHMFdyK60
出た「参照渡し」
誤解している臭いがプンプンする
2018/02/11(日) 15:29:24.34ID:b8HFi7Nc0
リスト自体が参照なので、リストのアドレスをコピーするコストしか発生しないのでは?

自信はないので詳しい人教えてくだちい。
2018/02/11(日) 15:29:47.87ID:MHMFdyK60
面倒くさいから解説しないが
List<T>をそのまま渡そうがrefで渡そうがほとんど何も変わらん
2018/02/11(日) 15:30:32.22ID:cPKTA0XS0
>>336
配列やリストは渡した先でインスタンスを書き換えない(nullにしたりしない)場合はref付けずにそのまま渡せ
コピーして渡すわけじゃないから
2018/02/11(日) 15:32:27.75ID:a0wWm6rj0
>>336
これ言葉遊びになりがちなんだよな
「値型の値渡し」、「値型の参照渡し」、「参照型の値渡し」、「参照型の参照渡し」をまとめて値渡しと参照渡しと呼ぶのが元凶なんだろうけどさ
http://ufcpp.net/study/csharp/sp_ref.html
2018/02/11(日) 16:15:49.09ID:OiJFvi0/0
>>334
adderとremoverというのがあって、+=で繋いだときはadderが呼ばれ、-=で削除したときはremoverが呼ばれるんですね
ここが単なるデリゲートのマルチキャストとと違うところだと思いました
どうもありがとうございました
2018/02/11(日) 16:44:34.62ID:OIEAsiwva
>>342
っていうか、コールバックを実現したいからと単純にデリゲート変数をそのまま公開すると、

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

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

Canvas.Letfや、Image.Leftと打っても「現在のコンテキストが存在しない」とエラーが返ってきます。
2018/02/11(日) 16:51:35.15ID:cqxb7NMTM
Blendでプロジェクト開いてストーリーボード追加して
ドラッグして終わり

という方法は一般的でないけど楽
2018/02/11(日) 17:01:20.38ID:jKl1uVTt0
>>338-341
ありがとうございます
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 ←出来ない

も出来ないからお手上げです。時間経過ごとに少しづつ画像を動かしたいだけなんですが・・・
2018/02/11(日) 17:12:32.26ID:cqxb7NMTM
Canvas.SetLeft
2018/02/11(日) 17:14:45.66ID:cqxb7NMTM
実際のimageにはLeftとかは存在しないので
別の場所で辞書のようなもので保存してる

それが添付プロパティ
2018/02/11(日) 17:19:28.14ID:zggVxteM0
setleftも試してて何でだろうと思ったら、usingでsystem.windows.controlを設定していませんでした。
ありがとうございます。
添付プロパティというのも初耳なので勉強します。
2018/02/11(日) 18:04:06.76ID:eSM+gwdh0
大学のプログラミングの課題を家でもできるようにしたいです
大学ではemacsでcファイルを作りコンパイラー(名称不明)にかけてgnuplot上でプログラムを実行してます
↑をできるような環境を自分のノートPCに作るために何をインストールすれば足りるでしょうか?
使用PCは富士通LIFEBOOK、OSはwindows10です
2018/02/11(日) 18:07:07.71ID:cqxb7NMTM
>>351
ここはc#のスレであってcのスレじゃない
スレチ

まあ一番簡単なのはUSB起動のlinux使うか
virtualboxにlinuix入れることかな
353デフォルトの名無しさん (ワッチョイ e175-xK0a)
垢版 |
2018/02/11(日) 18:07:22.85ID:/hLQhQLG0
C言語とC#は別だぞ〜
2018/02/11(日) 18:07:58.00ID:cPKTA0XS0
>>351
ここはC#のスレでCとC#は別物
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1509780815/
2018/02/11(日) 18:08:12.83ID:eSM+gwdh0
すみません、どうやらC言語とC♯、C++の区別もついてないみたいです…
2018/02/11(日) 18:08:48.25ID:eSM+gwdh0
誘導ありがとうございます、行ってみます
2018/02/11(日) 18:12:55.04ID:cqxb7NMTM
向こうに行ってcygwinやMinGWやMSYSやBOW入れろとか言われてたら笑う
358デフォルトの名無しさん (ワッチョイ e175-xK0a)
垢版 |
2018/02/11(日) 18:15:47.59ID:/hLQhQLG0
linuxにこだわるおまえに笑う
2018/02/11(日) 18:18:09.04ID:cqxb7NMTM
EmacsとGCCやGnuplot入れる前提でわざわざ変な環境使う意味がわからない
360デフォルトの名無しさん (ワッチョイ e175-xK0a)
垢版 |
2018/02/11(日) 18:21:30.65ID:/hLQhQLG0
emacsにこだわるおまえに笑う
2018/02/11(日) 18:23:37.00ID:cPKTA0XS0
>テンプレが読めない回答者、議論をしたいだけの人は邪魔
>C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
2018/02/11(日) 18:24:17.18ID:cqxb7NMTM
文字よめないんか?
363デフォルトの名無しさん (ワッチョイ e175-xK0a)
垢版 |
2018/02/11(日) 18:26:07.33ID:/hLQhQLG0
どう見てもこのシチュエーションでecmasは重要じゃないということが分からないおまえに笑う
2018/02/11(日) 18:27:35.09ID:cqxb7NMTM
学校の環境がemacsなんだろ
マクロ使ってたら他じゃ実行できないじゃん
365デフォルトの名無しさん (ワッチョイ e175-xK0a)
垢版 |
2018/02/11(日) 18:29:45.08ID:/hLQhQLG0
コマンドでやればいいだけだろ(笑)
わざわざlinux入れる労力 w
2018/02/11(日) 18:32:58.32ID:TT4/yggk0
Linux側で仕事してるヤツ、羽振りはいいけどいつもイライラしてるね
2018/02/11(日) 18:43:35.08ID:NBX6x1Ctd
Emacs使いたがるやつは医者に診てもらえっていってたのはStackOverflowの中の人だっけ
2018/02/11(日) 18:46:48.49ID:QgiY6BS8M
学生は講義毎に環境が違うから面倒くさいよな
2018/02/11(日) 18:48:12.99ID:NBX6x1Ctd
これだこれw
https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/#the-human-steps
370恥人
垢版 |
2018/02/11(日) 18:50:27.31
うげぇ
英語ばっかで読む気失せる
2018/02/11(日) 18:50:47.92ID:cqxb7NMTM
誰だって今だったらemacs何か使うなよって思うわ
vscodeとか使ったほうがいい
でもそれが条件なんだから仕方がない

winsowsにcygwinやMinGWやMSYS入れるのは環境が汚れるだけ
git for winとバッティングするし
2018/02/11(日) 19:09:21.72ID:bT0HWvJB0
>>371
path を適当に走査するだけで、なんとでもなるのでは?
2018/02/11(日) 19:09:40.61ID:NBX6x1Ctd
>>370
この人、twitterでもMicrosoftの中の人たちにしょっちゅう議論ふっかけてておもろいよ
374デフォルトの名無しさん (ワッチョイ 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#って初期化するのにインスタンスをわざわざ余分に作らないと初期化できないわけ?
無駄って感じがするが、、
2018/02/12(月) 08:03:22.38ID:RBv9+MyJa
>>374
まずは入門書を一通り終えよう
話はそれからだ
376デフォルトの名無しさん (ワッチョイ 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
377デフォルトの名無しさん (ワッチョイ 319d-+g9t)
垢版 |
2018/02/12(月) 08:12:23.91ID:z/E2YHwX0
>まずは入門書を一通り終えよう 話はそれからだ
 
間違いだらけの入門書。w
376をみてみなよ。
2018/02/12(月) 08:16:29.77ID:cgPx9lSf0
>>376
変数とnewで両方という意味ならインスタンスは片方でしか作っていない
参照型(クラス)の変数は実質ポインタなのでnewで作られた実体への参照が入る
値型(構造体)は変数を実体として(アドレスが参照され)newでコンストラクタを呼び出す
変数宣言だけでは参照型はnullだし、値型は領域確保だけでコンストラクタは呼び出されていない
379デフォルトの名無しさん (ワッチョイ 319d-+g9t)
垢版 |
2018/02/12(月) 08:21:04.33ID:z/E2YHwX0
そんなことはないよ。
クラスPersonにpublic static int id =0;をいれて
Person(){ ++id;} のようにコンストラクタでインスタンス生成ごとにidをインクリメント
してみたら見事に2つインクリントしてる。だから君も勘ちがいしてる。
380デフォルトの名無しさん (ワッチョイ 319d-+g9t)
垢版 |
2018/02/12(月) 08:32:41.72ID:z/E2YHwX0
ん? 俺の勘ちがいが勘ちがいだったのか?
2018/02/12(月) 08:38:01.41ID:nCVnsVXOa
偉そうな馬鹿だな
2018/02/12(月) 08:41:37.26ID:nCVnsVXOa
しっかりとした入門書をよめばいいのに
2018/02/12(月) 08:48:25.35ID:F98UmXeX0
MSDNへのリンクでも貼ってやれよ
2018/02/12(月) 08:51:04.12ID:nCVnsVXOa
それとも入門書には書いてあるけど読めてないだけか?
2018/02/12(月) 08:52:33.51ID:F98UmXeX0
msdnじゃないけど
ぐぐったら出てきた

http://www.atmarkit.co.jp/ait/spv/0209/04/news001.html
2018/02/12(月) 08:53:19.49ID:kFYq0atR0
なんだ今日もバカの日記帳か?

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

そもそも日記帳の中身が破綻しとるw
387デフォルトの名無しさん (ワッチョイ 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
2018/02/12(月) 09:05:28.85ID:nCVnsVXOa
>>387
お前は入門書を映像として見てはいるけど
内容は理解してないんだよ

だから毎日トンチンカンな内容なレスをしてる

何度でも読み返して理解してから来いよ
389デフォルトの名無しさん (ワッチョイ 319d-+g9t)
垢版 |
2018/02/12(月) 09:27:01.70ID:z/E2YHwX0
ん? 387のどこが頓珍漢なのだ? 君の説明よりもかなり説得力があると思うが、、、
というのもインスタンスが生成され、その個数をカウントして実際に確認できている。
そういう厳然とした証拠が添付されている。
しかも実際に実行できるコードが添付されている。w
2018/02/12(月) 09:28:32.99ID:nCVnsVXOa
言われてることも理解できないんだよなあ…
2018/02/12(月) 09:31:17.80ID:nCVnsVXOa
>>389
その前にお前は何歳なんだ?
昭和の香りのする口ぶりや全角数字句読点からしたら55〜65歳ぐらいだな
でも言ってることは小学生レベル
2018/02/12(月) 09:49:15.19ID:fQpoXnex0
すべて自演の書き込みだったりして
2018/02/12(月) 10:06:43.72ID:f+qeQBRN0
>>392
固定回線と携帯回線だしその線は高そう
2018/02/12(月) 10:08:20.29ID:p1yPqW7I0
まあ普通の人はデフォルト動作など信頼せずに組むのがお薦めだね
勘違いでエライ目に逢う
2018/02/12(月) 11:23:46.31ID:1LSHehibM
c#8.0になったら超大型破壊的変更がくるけどどうすんのかね

影響はこれまでのほぼ全てのソースに及ぶ
2018/02/12(月) 11:28:08.65ID:GfEZnF0r0
>>395
null非許容参照型のことを言ってるんなら、それは的外れ
397デフォルトの名無しさん (ワッチョイ ddc3-saCW)
垢版 |
2018/02/12(月) 11:31:49.01ID:sATukCOa0
C#っていうのはC言語に何らかの拡張を加えた言語って認識であってる?
2018/02/12(月) 11:33:23.17ID:1LSHehibM
>>396
これまでのソースに手作業で!をつけまくらないといけないんだけど
2018/02/12(月) 11:34:05.89ID:1LSHehibM
>>397
違う
どちらかというとjavaに近い
2018/02/12(月) 11:42:08.05ID:GfEZnF0r0
>>398
少しはググれ
2018/02/12(月) 11:44:44.55ID:1LSHehibM
実際に実行環境をいれたのか?
俺は入れたぞ?

わからないからと言ってググれでごまかすのはどうかと
2018/02/12(月) 11:49:19.25ID:GfEZnF0r0
Null非許容型を前提としたものかどうかAssembly単位でも設定できる
てかそこまでしてなぜ気づかない…
2018/02/12(月) 11:53:52.27ID:1LSHehibM
普通は逆にするけどね
新しい機能は囲い込んで既存のものはそのままでも問題ないようにする
ところが普及しきった段階で破壊的変更を入れてくる
2018/02/12(月) 11:59:07.50ID:1msBxh9/0
じゃあもうやめたらいいんじゃないかな、C#使うの
2018/02/12(月) 11:59:21.31ID:GfEZnF0r0
>>403
https://github.com/dotnet/roslyn/blob/features/NullableReferenceTypes/docs/features/NullableReferenceTypes/Nullable%20reference%20types.md#opting-in-and-opting-out
2018/02/12(月) 12:01:32.14ID:VyGKD4Czd
議論はこちらへ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
2018/02/12(月) 12:04:27.54ID:N6F2lE5bd
>>401
大方どっかのチュートリアル通りの手順を踏んだだけで、現在のproposalなんか確認してないんだろうな
そんなん猿でもできるわ
2018/02/12(月) 12:15:49.51ID:mwueXHhJ0
>>380
生まれてきたのが間違い
2018/02/12(月) 15:08:20.51ID:nCVnsVXOa
素朴な疑問だがnull非許容参照型はGC送りはどうやるんだ?
変換構文などがあってnull代入できるのか?
2018/02/12(月) 15:28:58.13ID:V1lBSRUOd
>>409
GC送り?オレオレ用語は定義と併せて書いてくれ
2018/02/12(月) 15:47:46.56ID:nCVnsVXOa
null非許容参照型の参照を外してガベコレの対象にするにはどうするんだ?

従来だと a=null;などで解放してたものだが
2018/02/12(月) 15:49:47.24ID:+qsRixLI0
値型は?
2018/02/12(月) 15:59:58.64ID:GfEZnF0r0
>>411
null代入なんて無意味
2018/02/12(月) 17:31:58.03ID:b4Df/qb8a
GCは八丈島かw
2018/02/12(月) 19:01:58.78ID:e2TKDGEW0
値型はとられる領域違うでしょ
なんのための参照型なのかわかってる?
null代入ってnullを指すだけでオブジェクトは残るよね?
GCが参照されなくなったオブジェクトと判断して回収するかはGCのアルゴリズムしだいだけど、基本は使わなくなった参照を指定して解放するよね?
416デフォルトの名無しさん (ワッチョイ 319d-+g9t)
垢版 |
2018/02/12(月) 20:36:47.70ID:z/E2YHwX0
値型の代入でもコピーしない場合もあるみたいだね。コピー元が直ちに不要になる場合は
その参照をわたしてそのエリアをそのまま利用する。その方が合理的だから。
まあ単に想像だけど。
そして直ちに不要なのをおもいだして、値を渡したのを忘れて解放してしまう。どうもそういう
バグが偶に出るケースがある。特に初心者があれこれ考えられないような変なことを
やった後とかにそういう現象がでたりする。
2018/02/12(月) 20:43:08.79ID:F3ZoN7fb0
>>415
> なんのための参照型なのかわかってる?
わかってないのはお前だろ w
別にnull代入するためだけにあるわけじゃないし
普通に参照してる変数が無くなったら解放対象になる
418デフォルトの名無しさん (ワッチョイ 319d-+g9t)
垢版 |
2018/02/12(月) 20:50:09.59ID:z/E2YHwX0
Enumがdummyを入れないと誤動作するとか、Staticインスタンスの中身が新しいForm2をNewしてForm_Loadの直後に
突如消えるとかそういう現象はまあビギナーズラックみたいなもので普通はそういう現象に出会えない。
コンパイルエラーがでないし正常に動作するのででPropetyの書き方を全部間違っていたのだが、それでも正常に動作していて
あとで書き方の間違いに気が付いて修正する。そういうことで段々と普通のプログラムになってくるとそういうエラーもいつ
の間にか再現しなくなる。
2018/02/12(月) 21:06:16.17ID:e2TKDGEW0
どこにリファレンスカウントと書いてあるんですかね
ソースは?
マークスイープとは出てきたけど
2018/02/12(月) 21:54:53.51ID:q97gmqzs0
会話になってないから透明削除されてるのかと思った
2018/02/12(月) 22:00:16.10ID:+qsRixLI0
ほーん、で?
2018/02/12(月) 22:01:11.36ID:q97gmqzs0
>>421
単芝忘れてんぞ、カスw
2018/02/12(月) 22:29:08.55ID:BbO5lIMB0
自作のソフトをビルドしてexeを実行したとたんノートンで弾かれる
出力コードのパターンで引っかかってるらしいけどどうしろというの
2018/02/12(月) 22:31:10.19ID:P8plNjZg0
>>423
それはノートンのスレで聞くべきかと
プロジェクトのフォルダを監視対象から外すとかできるはず
2018/02/12(月) 22:37:52.68ID:+qsRixLI0
それだと配布するときに困る
2018/02/12(月) 22:38:59.14ID:ZU9+AgSV0
開発レベルなら監視対象から外す
頒布レベルならノートンに検体差し出すとかすればいいんじゃなかったっけ?
2018/02/12(月) 22:43:12.96ID:BbO5lIMB0
ありがとう
サポに連絡してみる
428デフォルトの名無しさん (ワッチョイ 81b3-PCwM)
垢版 |
2018/02/13(火) 04:38:28.69ID:TnW8OQre0
初心者です。
MainWindow.xamlのtextbox name=“A” “B”を
MainWindow.xaml.csにて、配列に格納する場合
どう書けばいいですか?
2018/02/13(火) 07:44:33.37ID:tk8A9SM5d
Textbox[] textboxArray = new Textbox[2]{A, B};
こういうこと?
2018/02/13(火) 11:06:19.59ID:i7fy8Ihld
>>428
>MainWindow.xamlのtextbox name=“A” “B”を
これの意味がよく分からない
TextBoxを2つ配置してそれぞれの名前をAとBにしたってこと?
2018/02/13(火) 19:39:40.10ID:VYHMGw6PM
queue使わずにListでも似たことが実装可能だと思いますが、queueのメリットってありますか?
2018/02/13(火) 20:05:26.97ID:hyhJ5vah0
Listを使わずに済む
2018/02/13(火) 20:09:36.43ID:MkuiJNyl0
キューのデータ構造を直感的に操作できることに意味があるのでは?
速度的な話は知らんにゃ。
2018/02/13(火) 20:16:33.15ID:ElvL/+ZbM
わざわざ「似たことを実装」せんですむ
List使わなくても配列で似たことを実装できるよね?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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