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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:12:11.06ID:Ej7G00WU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

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

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
2017/09/10(日) 03:56:30.01ID:6GasKA+m
わざわざ低位のThreadPoolを使うメリット無いだろ。
ちなみにTaskの方は生成時のオプションでThreadPool使わず専用スレッドを割り当てたりも出来る。
2017/09/10(日) 04:49:01.84ID:hdyOlPd+
超低レベルな質問ですみません
wpfで実験しています
ボタンを押すとLabelが回転するというテストです

ボタンはトグル処理してあって押すと回転、もう一度押すと止まっるという作動です

int band = 0;
DispatcherTimer tim = new DispatcherTimer();
public void Rotet()
{
label01.Content = "自動回転";
tim.Start();
tim.Interval = TimeSpan.FromMilliseconds(10);
tim.Tick += Tim_Tick1;
}
public void Rotstop()
{
label01.Content = "自動回転停止";
tim.Stop();
}
2017/09/10(日) 04:49:17.97ID:hdyOlPd+
public void Tim_Tick1(object sender, EventArgs e)
{

band++;
label01.RenderTransform = new RotateTransform
{
Angle = band
};
}

10ミリ秒毎に1度回転するという作動を希望しています
が、トグルボタンを押してRotetを呼び出すたびに、band++での増加量が加算されてしまいます
5回Rotetを呼び出すと10ミリ秒毎に5増えます
増加量は常に1であって欲しいのですが、これの根本原因はなんでしょうか?
2017/09/10(日) 05:21:45.40ID:6GasKA+m
>>56
Tickイベントのハンドラ登録だけを毎回してるから。
登録は1度だけにするか、毎回解除もするようにしないと。
後、質問とは関係ないけど、タイマーを開始するタイミングもおかしい。
2017/09/10(日) 07:49:42.90ID:hdyOlPd+
>>58
どうもありがとうございます
今VS立ち上げられないので確認はあとになりますが、教えていただいた内容は把握できました
後、たしかにstartのタイミングおかしかったですね
こっちも直してみます

どうもありがとうございました
2017/09/10(日) 08:59:57.01ID:hdyOlPd+
>>58
今VS2017C#で修正確認できました
ありがとうございました
61デフォルトの名無しさん
垢版 |
2017/09/10(日) 11:02:35.14ID:u2dcVsCu
>>55
既存のメソッドに手を加えずtaskにできますか?
62デフォルトの名無しさん
垢版 |
2017/09/10(日) 18:43:13.56ID:yZp0NmX3
Macで開発されている方がいましたら環境を教えて欲しいです
visual studio for macはwindowsアプリを作らなければ不便はありませんか?
2017/09/11(月) 03:02:17.61ID:OjrsKbwz
>>61
TaskでもThreadPoolでもThreadでも同じだけど、
既存メソッドがスレッドセーフでないなら、一般的なマルチスレッド対策は必要。
64デフォルトの名無しさん
垢版 |
2017/09/11(月) 04:22:03.43ID:xOd8/hnB
インターフェイス(ICollection)を実装しています。
例えば、.Clear() メソッドを実装するときに、

public void ICollection<String[]>.Clear()
{

のように、public を付けると、怒られます。
修飾子 public がこの項目に対して有効ではありません。

合理的な理由でもあるのでしょうか。
65デフォルトの名無しさん
垢版 |
2017/09/11(月) 06:00:48.58ID:dDtMImyT
>>63
ThreadPoolが長時間処理に向かないって書いてあったけど、それも嘘だと思う。
GUIアプリとかゲームなら表示を妨げるけど、データ処理だけやるなら変わらない。
2017/09/11(月) 08:29:53.19ID:qHOAMFMh
>>65
何言ってるのかさっぱりわからんね
2017/09/11(月) 08:52:59.26ID:OjrsKbwz
>>65
それはThreadPoolは実行されるスレッド数を少なく抑えて処理を順番にこなすための仕組みだから。
長時間の処理だとThreadPoolの少ない実行スレッドの1つを占有してしまう。
ThreadPoolの実行スレッド数の上限を増やしても良いけど、それより専用のスレッドを割り当てたら方が良いだろう。
Taskの場合は、LongRunningオプションを付ければ、ThreadPoolではなく専用スレッドになる。
2017/09/11(月) 09:22:14.90ID:/+/7clo/
>>64
publicを付けたければICollection<>.を外せばいい。
インターフェイス名.メソッド名 の形のメソッド定義はインターフェイスメンバの明示的実装といって、
クラスとして見ると不可視だけどインターフェイスを通せばアクセスできるメソッド定義方式。
なのでpublicでもprivateでもないということでアクセスレベルを指定できない。
69デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:29:45.93ID:dDtMImyT
>>67
その処理以外やらないなら、どうでもよくね?
70デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:44:26.27ID:pmpZkIs4
まあ小さいプログラムで全部把握できて問題ないと判断できるなら好きにすればいいだろ
2017/09/11(月) 11:38:40.59ID:8iugXZk3
書いてあった

これ馬鹿の証な
72デフォルトの名無しさん
垢版 |
2017/09/11(月) 12:59:45.47ID:dDtMImyT
馬鹿でも使えるってのは重要
async/awaitなんて頭の良い奴しか使えない
しかも必要のない簡単なレベルの処理もある
73デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:25:28.66ID:4atU11H8
C#は馬鹿でもできちゃうけど
逆引きサンプルを適当に見つけてきてコピペするだけで完了
でもVC#使わないとGUIが作れない
VC#が作る雛形何なのかすら知らない
一からテキストエディタだけで作れるのはコマンドラインツールぐらいしかできない
2017/09/11(月) 15:41:22.50ID:n0q9WWLR
label内に複数行を表示すると、表示領域外にまで改行された行が表示されず、上部の行だけが表示されます
最下行基準で、入り切らない部分は上部の行をスクロールアウトさせて表示させたいのですがやり方が検索しても上手く探せませんでした
どういう方法がありますか?
2017/09/11(月) 16:01:55.79ID:D2XcMjyP
>>73
お前CLIでWebアプリ作れねーのかよ
2017/09/11(月) 16:17:45.12ID:1TpoY8sm
>>74
OnPaintをオーバーライドしてDrawString使って自分で実装するしかないでしょう
2017/09/11(月) 17:37:45.41ID:n0q9WWLR
>>76
ありがとうございます
自分にはかなり無理なんでtextboxの方でどうにかしてみます
2017/09/11(月) 18:57:43.16ID:JSNADtu1
リファクタリングしてくれるサービスないかな?
糞長いコード書いて可読性やばいんだわ
2017/09/11(月) 19:02:47.03ID:McMCGXVu
githubに上げてここにURL晒せばみんながボコボコに叩いてくれるよ
2017/09/11(月) 19:10:16.26ID:JSNADtu1
>>79
優しくしてくれないと発狂しそう
81デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:03:26.89ID:9wMrToxf
class A{ public virtual void test(){} }
class B : A{ public override void test(){} }
var b = new B();
b.test();

bからAのtestを呼びたい場合はどうすればいいでしょうか。
2017/09/11(月) 21:11:05.30ID:McMCGXVu
>>81
まっとうな方法はない
MethodInfo使っても無理
ILGeneratorなどで(callvirtでなく)call命令を発行する必要がある
2017/09/11(月) 21:12:50.19ID:1TpoY8sm
>>81
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/base
2017/09/11(月) 21:26:34.21ID:wRb7h9Km
>>81
これを実現したいのって、具体的にどういうケースなの?
差し支えない範囲で用途を教えて
85デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:31:06.84ID:9wMrToxf
>>84
状況によって派生された処理ではなくオリジナルの処理をしたいだけです
2017/09/11(月) 21:35:23.53ID:wRb7h9Km
>>85
それはわかってるよー
その中身を聞いてるんだ
2017/09/11(月) 21:36:40.45ID:zUMWcZ3H
日本語で無駄なやり取りするより>>83みたいにURL1つ貼ってコレ見ろでいいじゃないの
設計がどうのとか言ってもしゃーないし
88デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:41:05.67ID:9wMrToxf
>>83
これを見てもよくわかりません。
メソッドの内部からbaseで基底クラスのメソッドにアクセスできる方法はしっています。
質問は変数bからAのtestを呼ぶ方法です。
2017/09/11(月) 21:45:55.36ID:mdk6iQ5T
できねえから考え方を改めろ
2017/09/11(月) 21:56:12.41ID:1TpoY8sm
>>88
Bにベースクラスのtestを呼ぶメソッドが用意されていなければ普通の方法では不可能でしょう
91デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:58:07.40ID:9wMrToxf
>>90
その方法にすることにします
2017/09/11(月) 22:04:35.15ID:S1tKpOaB
>>52
それだ! < System.Web.Script.Serialization
ありがとう。
2017/09/11(月) 22:23:45.62ID:wRb7h9Km
overrideをnewに変えてBaseクラスにキャストしてから使えば
同じメソッド名でBaseクラスのを呼び出せる
2017/09/11(月) 23:37:21.39ID:adY5bmZu
overrideしなきゃいいだけじゃないの?
95デフォルトの名無しさん
垢版 |
2017/09/11(月) 23:48:23.10ID:xOd8/hnB
>>68
とてもわかりやすく有難うございました!
インターフェイスに実装方法が二種類あるとは知りませんでした。
明示的ではない方で実装したいと思います。

結構ぐぐったんですが、それについて述べられたページが見つからなかったし、
C#のハンドブックにも載っていなかったことなのでとてもためになりました。
2017/09/12(火) 09:00:44.91ID:EOOe72TQ
○次受けが多いほど退場率が早くなる。高くなる

直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い

フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる

eJobgo JIET JISA で検索

優良エージェント・優良サイト

首都圏IT(PE-BANK) クラウドテック プログラマーズ
97デフォルトの名無しさん
垢版 |
2017/09/12(火) 09:41:27.60ID:BNnArjmm
Listのselectで入力された値に応じてPropertyを指定したいのですが、もっとスマートなやり方がありそうなので教えてください
今は↓のように手作業で全パターンをチェックしていて、

class Product {
string Field1 ...
string Field2 ...
...
}

List<Product> list = ...
string input = ...

switch (input) {
case "Field1":
result = list.select(p => p.Field1);
break;

case "Field2":
result = list.select(p => p.Field2);
break;
...
と、続いて長いくて見辛いし手間
}

これを
result = list.select(p => p[input]);
こんな感じで入力された値に応じて返す方法を知りたいです
2017/09/12(火) 10:57:43.00ID:3hDQXbkU
>>97
お前何なの?
初心者じゃねーなら自分で勝手にやれよ
2017/09/12(火) 11:24:21.98ID:0auESU8x
>>98
答えられないなら黙ってればいいのに
100デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:26:42.14ID:FDETfUWp
>>97
Dictionaryは?
101デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:29:54.29ID:FDETfUWp
Enum使う手もあるけど
用途次第
2017/09/12(火) 11:42:24.56ID:3hDQXbkU
>>97
linqは遅いので使わない方法に直す
2017/09/12(火) 12:06:09.15ID:vpJikBX5
>>102
その程度の差が問題になるくらいシビアなパフォーマンスを求められる場合ならばね
2017/09/12(火) 12:23:45.40ID:1FkmH3QI
class Product
{
  string Field1 ...
  string Field2 ...
  ...
  private static Dictionary<string, Func<Product, string>> mSelectorTable
  = new Dictionary<string, Func<Product, string>>()
  {
    {"Field1", p => p.Field1},
    {"Field2", p => p.Field2},
    ...
  }

  public static Func<Product, string> GetSelector(string key)
  { return mSelectorTable[key]; }
}

...

var s = Product.GetSelector(input);
var result = list.select(s);
2017/09/12(火) 12:27:58.67ID:3hDQXbkU
>>103
わざわざ遅い方法で書く必要もないだろ
2017/09/12(火) 12:31:47.09ID:UuTpmvic
また無駄な最適化野郎か
2017/09/12(火) 12:36:22.11ID:vpJikBX5
>>105
わざわざ冗長な方法で書く必要もないだろ
2017/09/12(火) 13:05:09.61ID:02LA08SS
無駄な時間ならいくらでもある人らが語る最適とは…?
2017/09/12(火) 13:11:24.60ID:3hDQXbkU
>>107
でも遅いのは問題だよね
2017/09/12(火) 13:12:12.91ID:3hDQXbkU
わざわざ変な書き方して遅いとか最悪だよね
2017/09/12(火) 14:33:34.10ID:FDETfUWp
>>97
とにかくswitch文をなくしたいならGetPropertyとGetValue
2017/09/12(火) 14:57:46.17ID:vpJikBX5
>>109
その遅さが問題になるくらいシビアなパフォーマンスを求められる場合ならね
2017/09/12(火) 14:58:53.99ID:DYcGerqT
>>110
もしlinq自体を変な書き方と言っているのであれば論外やな
2017/09/12(火) 15:54:15.87ID:PKo4ssy2
車輪やねん
115デフォルトの名無しさん
垢版 |
2017/09/12(火) 16:11:01.84ID:BNnArjmm
>>111
GetPropertyとGetValueで一行で出来ました!ありがとうございます
2017/09/12(火) 17:18:31.24ID:3hDQXbkU
>>113
え?
linq流行ってると思ってるの?
いつリストラされてもおかしくない機能
2017/09/12(火) 17:22:05.97ID:pxacDdSl
絶対構うなよ
2017/09/12(火) 17:33:49.59ID:3hDQXbkU
>>117
単発に言われてもね
2017/09/12(火) 17:42:06.71ID:ZIY9GNtc
Linqはいらないけどイテレーターパターンとλ式は要るよね
2017/09/12(火) 17:44:55.63ID:3hDQXbkU
>>119
俺はいらねぇ
使いたい奴は使えばいい
2017/09/12(火) 17:47:10.30ID:ZIY9GNtc
そうだね
じゃあこの話題は終わりだね
2017/09/12(火) 19:25:39.37ID:DYcGerqT
こいつASP.NET Coreのテンプレ見たら発狂しそうだな
2017/09/12(火) 19:37:32.63ID:DSJ7r+Sb
Linq使わないでどうやってんの?
毎回foreach回してんの?
2017/09/12(火) 19:52:04.69ID:3hDQXbkU
>>123
まあ、初心者には難しいよね
2017/09/12(火) 19:57:40.23ID:ymUUq88t
>>123
荒らしはスルー推奨
2017/09/12(火) 19:59:52.92ID:3hDQXbkU
>>125
単発に言われてもね
2017/09/12(火) 20:06:00.88ID:qnTxA+Nu
誰だアホの逆鱗に触れたのは
責任もって殺しとけよ
2017/09/12(火) 21:29:57.85ID:3hDQXbkU
>>127
単発に言われてもね
2017/09/12(火) 21:36:08.20ID:3hDQXbkU
こういう状況になると必ず単発ばっかりになるよねw
ビビリのくせに発言してんじゃねーよクズがw
2017/09/12(火) 21:44:26.71ID:8OQVQBrq
さすがにここまで幼稚で恥知らずだと引くね
2017/09/12(火) 21:45:04.44ID:JIE9XJ1l
for使っている会社のおっちゃんにforeach楽ですよとそれとなく言ったら、遅いしそれに添字使えねえだろと叱られた
2017/09/12(火) 21:49:02.28ID:3hDQXbkU
>>130
って単発で言うんだ?w
2017/09/12(火) 23:13:52.09ID:ZIY9GNtc
添え字っていつ使うんだ?
2017/09/12(火) 23:34:48.50ID:AR+my0wk
さいて〜
2017/09/12(火) 23:50:16.50ID:gWobfM7L
ID:3hDQXbkU(13)
2017/09/12(火) 23:55:21.70ID:3hDQXbkU
>>135
匿名掲示板でもそんなビビリで大丈夫なのかお前w
137デフォルトの名無しさん
垢版 |
2017/09/13(水) 02:42:40.26ID:LyfBWgxR
C#で使える軽量なWebブラウザコンポーネントを教えてください。
SHDocVwはAxImportしてもレジストリ編集しないとIE7相当でしか動作しないですし、Chromeだとインストールしないといけないので・・・・
exeと同じフォルダにdll置いておくだけで使えるのが欲しいのですが。
2017/09/13(水) 07:55:13.31ID:szmZ8wjk
>>131
foreachってコレクションのアクセス順序保証してるんだっけ?
2017/09/13(水) 08:05:28.36ID:RaLzloEv
質問です。よろしくお願いします。

システムカラーを変数で指定するにはどうしたら良いでしょう?
SystemColors defBGC;
defBGC = SystemColors.ActiveCaption;
簡単に言うと↑のような事をやりたいのですが、宣言ではローカル変数として扱われますが、代入でエラーが出てしまいます
どのようにして代入すればよいのでしょうか?
2017/09/13(水) 08:05:39.55ID:NbPbWVRY
Linqが遅いって言う馬鹿はなんでC#使ってるの?
機械語で直接プログラミングでもしてろw
2017/09/13(水) 08:20:31.29ID:efGCb2+a
>>140
そんな遅さじゃ無いよね?
下手すると10倍ってレベルだし
2017/09/13(水) 08:22:40.72ID:Lhui2ZmI
それがシステムのボトルネックになる場合のみ気にしろ
2017/09/13(水) 08:23:54.63ID:NbPbWVRY
>>141
はあ?
2017/09/13(水) 08:24:37.37ID:KoAlYIGF
10倍君って前にも暴れてたよーなと思ってログ検索したら100倍だった
IBMがどうとか言ってたから多分別人のバカだ
2017/09/13(水) 08:29:18.96ID:efGCb2+a
いや、流石にそこまで遅くなる処理わざわざ使う意味ねーし
俺は遠慮させてもらうわ
2017/09/13(水) 08:32:14.78ID:efGCb2+a
あ、ちょっと気になって
いまもそうなのかなぁと思って前書いたコードでやってみたけど
100倍も有り得る数字出るな
激遅いじゃん
これは普通に使ってると問題出るね
2017/09/13(水) 08:36:51.86ID:NbPbWVRY
>>145-146
そんなに遅いのが嫌なら別の言語やれよ低脳w
2017/09/13(水) 08:37:47.60ID:efGCb2+a
>>147
お前の作るものが欠陥品過ぎて気になってないだけ
2017/09/13(水) 08:40:07.14ID:NbPbWVRY
>>148
どうしてC#使ってるの?ねえ?なんで?w
150144
垢版 |
2017/09/13(水) 08:46:03.62ID:KoAlYIGF
IBMじゃなくてOracleだったわ
統計的結果がどーたらって

もう6年も前の話なんだなあ
いまだにこんなのが湧いてくるくらい、C#ユーザも新陳代謝してるんだな
感慨深い
2017/09/13(水) 08:51:52.43ID:2OL+AYLM
oracle()
2017/09/13(水) 09:00:16.82ID:jUJn8YC2
>>149
10倍も遅くならないから
でもlinqは普通に10倍ぐらいは遅いよ
2017/09/13(水) 09:08:49.90ID:NbPbWVRY
>>152
1ナノ秒が10倍遅いのと1秒が2倍遅いのとでは10倍の方が結果速いって例えは理解できる?
Linqは前者。てーのーくんにはわからないだろうな〜w
154デフォルトの名無しさん
垢版 |
2017/09/13(水) 09:10:16.92ID:NSWcHcOm
>>139
SystemColorsの各プロパティが返すのはColor型だよ
システム色だけを代入できる型ってのはSystem.Drawingには存在しない
全部Color構造体で扱われる
2017/09/13(水) 09:14:16.27ID:jUJn8YC2
>>153
問題は同じ処理だとしてもネックになる箇所で同じ処理でも別の処理書かなきゃいけないじゃん
それも面倒だし
全体に散りばめたときに10倍っていうと流石に問題が起きる遅さだよね

linq禁止のがぶっちゃけ楽だねぇ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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