ふらっと C#,C♯,C#(初心者用) Part141at TECH
ふらっと C#,C♯,C#(初心者用) Part141 - 暇つぶし2ch127:デフォルトの名無しさん
18/12/24 07:24:47.31 zs7tYDO50.net
ガイジばっかだな

128:デフォルトの名無しさん
18/12/24 08:28:00.92 KFYgg8m6M.net
よく見ると逆ですらない
121はa15の先頭から10要素のリストだし
123はa10.Clear()後にa10.Countを参照してるので、実行後のa10は空だ

129:デフォルトの名無しさん
18/12/24 08:30:42.16 zs7tYDO50.net
ガイジの宝石箱かよ

130:デフォルトの名無しさん
18/12/24 08:35:25.17 APgc2n6m0.net
>>123
Clearしていいの?

131:デフォルトの名無しさん
18/12/24 08:42:01.70 APgc2n6m0.net
>>120は、こういうことなんだよな??
URLリンク(ideone.com)

132:デフォルトの名無しさん
18/12/24 17:58:02.29 0GmOXyNR0.net
>>127
うける

133:デフォルトの名無しさん
18/12/24 21:29:07.13 wShZDi2Q0.net
a15=a10.AddRange(a15);
で良くね?

134:デフォルトの名無しさん
18/12/24 22:49:22.82 kvP3AY+C0.net
a15は.Skip(a10.Count)が必要だしAddRangeは返値voidだし
a10が破壊されるのは気持ち悪すぎる せめて.Concatでやって

135:デフォルトの名無しさん
18/12/24 23:00:49.18 BVW7JO960.net
a10.Select((v, i) => i).ToList().ForEach(p => a15[p] = a10[p])

136:デフォルトの名無しさん
18/12/25 05:37:13.78 o3bLdzU90.net
質問です
applicationSettingsBaseを使って設定を保存したソフトのフォルダを移動したところ
設定がすべて消えてしまいましたが仕様でしょうか。
これを回避するためにはソフトと同じフォルダにiniを作るなどして設定を保存しないといけないでしょうか。

137:デフォルトの名無しさん
18/12/25 08:31:43.73 Pk7gkPrC0.net
SettingsProviderを自作すれば保存場所は変えられなかったか

138:デフォルトの名無しさん
18/12/25 12:19:27.12 H2h1tiNca.net
>>135
ApplicationSettingsBaseなんて使ったことないのでいい加減に言うけど、
普通に考えれば保存場所は起動したバイナリのパスになんか依存しないはずだと思うけど
URLリンク(www.atmarkit.co.jp)
ここにも書いてあるけど、バージョンとか製品名とかアセンブリの属性を何か変更したから
保存場所も変わったんじゃないの?

139:デフォルトの名無しさん
18/12/25 12:21:30.96 H2h1tiNca.net
ごめん>>137は訂正
俺の記憶違いで、記事にはバイナリのパスにも影響されると書いてあるねw

140:デフォルトの名無しさん
18/12/25 12:25:14.95 yMEv05zrd.net
>>137
いいえexeの絶対パスが変わると保存先も変わります
知らないなら適当に答えるなよ

141:デフォルトの名無しさん
18/12/25 12:49:04.91 H2h1tiNca.net
いいえ私はさそり座の女~

142:デフォルトの名無しさん
18/12/25 20:05:08.93 C73Cga6+0.net
C#スレが伸びてるけど、unityのおかげ?

143:デフォルトの名無しさん
18/12/25 20:36:10.99 bRmFmcZ5r.net
いいえ

144:デフォルトの名無しさん
18/12/25 20:49:56.13 wyvxpdNe0.net
設定の保存ならjson.net使ったほうが幸せになれるね

145:デフォルトの名無しさん
18/12/25 22:00:49.69 nl4zamMYa.net
>>143
保存時のフォーマット?

146:デフォルトの名無しさん
18/12/25 22:03:32.60 cYaw21oJ0.net
イニファイルにしとけ
イニファイルにな

147:デフォルトの名無しさん
18/12/25 22:20:50.60 NRydG5TY


148:M.net



149:デフォルトの名無しさん
18/12/25 22:21:37.22 m1C7tGngd.net
>>145
老害おつ

150:デフォルトの名無しさん
18/12/26 06:18:38.10 1oivSykz0.net
課題で10進数を2進数の文字列に変換したいのですが、これだとびっくりすくらい遅いです。
速くするにはどうしたらいいでしょうか。
class Program
{
public static void Main(string[] args)
{
string input = Console.ReadLine();
int i = Convert.ToInt32(input);
string output = "";
while(i >= 1)
{
output = output.Insert(0,(i % 2).ToString());
i >>= 1;
}
Console.WriteLine(output);
Console.ReadLine();
}
}

151:デフォルトの名無しさん
18/12/26 07:14:08.48 H45VhGP50.net
>>148
stringはほとんどの場合毎回新しいインスタンスが作られるから、代わりにStringBuilder使ってみ

152:デフォルトの名無しさん
18/12/26 07:18:31.50 H45VhGP50.net
あとたぶん普通はこれ
URLリンク(dobon.net)

153:デフォルトの名無しさん
18/12/26 07:35:37.09 gklwQdG7M.net
遅いっつっても一瞬じゃない?
たかが32bit整数くらいで。
試してないけど

154:デフォルトの名無しさん
18/12/26 09:33:17.59 Ts4c5NN9M.net
Stringは吃驚するほど遅いよ

155:デフォルトの名無しさん
18/12/26 10:28:31.49 yGWBBV+aM.net
遅いっつっても一瞬じゃない?

156:デフォルトの名無しさん
18/12/26 11:19:21.70 pZkVuIQAd.net
>>153
ループ一回ならね

157:デフォルトの名無しさん
18/12/26 12:39:12.50 UFWOb61Ja.net
>>150
Convertのそんなのあったな感w
でもこれゼロサプレスされるみたいだな。
まあリーディングゼロ付けるのは簡単だけども

158:デフォルトの名無しさん
18/12/26 19:06:58.35 Dcs5aUpT0.net
Windowsフォームアプリケーションで、
「ボタン上をドラッグしてる間(左クリック押下中、かつボタン上にカーソルがある時)」に音を鳴らしたいんだけど
Button1.MouseDownで再生、Mouseupで停止させるまでは出来ても
MouseLeaveに停止処理書いて、クリックしたままボタンからカーソル外したときには音がなり続けてしまいます
どういう記述がいいんでしょうか?

159:デフォルトの名無しさん
18/12/26 20:13:17.23 /gJf0JvK0.net
>>156
クリックしたままだとMouseLeaveが動かないみたいだな
URLリンク(ideone.com)
これは音を鳴らす代わりにフォームのタイトルにMouse On/Offと表示する
MouseDownとMouseMoveでカーソルの場所を見てボタンの範囲外だと無条件でOffにする
イベントとしてのMouseLeaveは外せそうな気がするしフラグ作ってもっと作りこめると思うけど面倒だからここまで

160:156
18/12/26 21:13:57.82 0HU+mpFl0.net
ありがとうございます!
入門したて故コード読んでも理解できないけど、丸写しからの改変で勉強しながらやってみます

161:デフォルトの名無しさん
18/12/26 21:40:59.20 sOj8GKWaa.net
>>156
やらずに適当に言うけど、MouseDownのイベントハンドラか何かで
Captureの値をfalseにしてやったら望んでるような動作になるんと違う?

162:デフォルトの名無しさん
19/01/03 03:05:05.68 2jZ78iU60.net
dotnet new webapp コマンドでプロジェクト生成した時に Controllers も Models も Views も作られないので、ちょっと面食らっています。
ASP.NET Core で Razor Page を使ったアプリを作る際は、ASP.NET でいう Controllers と Models に該当するフォルダはどこに作ったらいいんでしょうか?
特にビジネスロジック部分はどこにまとめるの


163:がいいのでしょうか?



164:デフォルトの名無しさん
19/01/03 05:32:43.60 ZmWGvR5ia.net
splitcontainerのpanel1に30個程度のボタンを設置し、それらは一つのイベントハンドラにまとめてて
押したボタンの色を変えるということをしようとしています
splitContainer1.Panel1.Controls[●].backColor = Color.Red ;

●の位置に入る数字はどのボタンと対応しているかがイマイチわかりません。
タブインデックスの数値とは別のようですし、どの数値の事を言っているのでしょうか。

165:デフォルトの名無しさん
19/01/03 06:22:31.48 2jZ78iU60.net
>>161
期待通りの回答じゃないかもしれないけど、これでもいいんでは?
protected void button_Click(object sender, EventArgs e)
{
((Button)sender).BackColor = Coler.Red;
}

166:デフォルトの名無しさん
19/01/03 09:33:34.04 mzbwP5/d0.net
>>160
dotnet new

167:デフォルトの名無しさん
19/01/03 09:49:03.47 92o1UEKg0.net
>>160
dotnet new mvc
ASP.NET Coreは3.0以降でfull .NET Frameworkを切り捨てるから、必ず.NET Coreを使うように

168:デフォルトの名無しさん
19/01/06 07:48:04.81 ys0B5FJg0.net
>>148
遅い原因は
>string input = Console.ReadLine();
じゃね?
ユーザーが全文字入力するのをぼんやり待ってないで
1文字でも入力された時点でその桁に関する処理を開始しとかないと

169:デフォルトの名無しさん
19/01/06 10:33:12.47 ijGp0fE40.net
>>165
>>149で解決すると思ったけど、その最後の行の実装例出せる?

170:デフォルトの名無しさん
19/01/06 10:50:54.92 SZQOw9ve0.net
>>166
件のプログラムで一番処理時間が長いのは起動だと思うから
実際にはその程度やっても変わらんでしょ

171:デフォルトの名無しさん
19/01/06 13:46:05.21 s+NsL/70M.net
>>165てネタじゃなかったのか?

172:デフォルトの名無しさん
19/01/06 15:10:03.44 yoKg5XOLM.net
何でもかんでもまずネタだと考えるのやめた方がいいですぞ

173:デフォルトの名無しさん
19/01/06 16:43:50.05 Dx0jhieJ0.net
ASP.NET Coreを使う練習してるんだけどさあ
実機で動かしてみるに当たって、手元のVisualStudioやVSCodeからLAN上にあるサーバ(Ubuntu)に配置して実行するまでって結構面倒に感じてしまう・・・・
これってなにかVisualStudioに配置実行を楽にする手段があるのかな?
それとも楽をしたければJenkinsかなにか勉強しなきゃあかんのかな・・・・

174:デフォルトの名無しさん
19/01/06 16:54:31.32 YMMAI1S40.net
今はどんな手順でやってるん?

175:デフォルトの名無しさん
19/01/06 18:18:02.00 Dx0jhieJ0.net
今のところ、「手元でビルド→SCPコマンドで転送→SSHで実行」みたいにしてるんだけど・・・・やっぱもっといい方法あるよな

176:デフォルトの名無しさん
19/01/06 18:22:43.98 SgRztK6B0.net
LINQの質問です
list1とlist2はList<int>型だとして
foreach(var value1 in list1) {
foreach(var value2 in list2) {
Console.WriteLine(value1 * value2);
}
}

これと同じことをLINQを使ってやるとしたらどう書けばいいですか?
Zipを使ってみたのですが同じインデックス同士しか掛け合わせてくれませんでした

177:デフォルトの名無しさん
19/01/06 20:09:56.59 NF88G39c0.net
linqでブロードキャストできたっけ?

178:デフォルトの名無しさん
19/01/06 20:11:35.37 YeoWOZf6a.net
>>173
メソッド構文ならSelectManyを使う
foreach (var v in list1.SelectMany(v1 => list2, (v1, v2) => v1 * v2))
{
Console.WriteLine(v);
}
この場合はクエリ構文の方が分かりやすいかも
var q = from v1 in list1
from v2 in list2
select v1 * v2;
foreach (var v in q)
{
Console.WriteLine(v);
}

179:デフォルトの名無しさん
19/01/06 20:13:20.52 NF88G39c0.net
>>173
URLリンク(dobon.net)
これでいけんじゃね?
ConvertAll

180:デフォルトの名無しさん
19/01/06 21:11:45.37 iQ1zVEqTM.net
>>170
AWSとか使えば簡単だよ
MSの推奨はもちろんAzureだけど、単なるVMのホスティングサービスとして使う以上のことを期待すると正直ゴミカスなので全くお薦めできない

181:デフォルトの名無しさん
19/01/06 21:17:12.87 iQ1zVEqTM.net
>>176
今時ConvertAllとか紹介してるゴミサイトはさっさと閉鎖すべき

182:デフォルトの名無しさん
19/01/07 00:48:07.98 voJmrOTp0.net
>>178
今だと何がベスト?

183:デフォルトの名無しさん
19/01/07 09:13:26.65 yGBdcOaa0.net
>>175>>176
いけました!
ありがとうございます
今回はSelectManyを使おうと思います

184:デフォルトの名無しさん
19/01/07 09:34:56.37 z57KVTQ70.net
>>166
考え方としては、例えば「3」が入力された時点で
次の入力結果は「3」か「30」~「39」しかありえないから
11通りの2進数表示を用意しておいて次のキーが押されたらそこで合うものを選んで表示する
どんなに10進数の入力桁数が増えても毎回11通り用意すればいいのは一緒なのと
10進数が1桁増えるときに2進数表示で最後の4桁以外の文字列は使い回せるから文字列連結処理は多少減らせる
この処理がユーザーのキー入力速度より早くCPUが処理できれば多少意味がある程度だろうけど

185:デフォルトの名無しさん
19/01/07 10:20:00.74 e8LT8JMZa.net
>>181
そのためにReadKeyを繰り返してたらそのオーバーヘッドの方が効果を圧倒的に上回ります
出直してきてください

186:デフォルトの名無しさん
19/01/07 10:28:19.23 3j9bnJUUM.net
>>181について更にツッコむと、1文字ずつ処理するなら単に入力されたキーの値を普通に反映させていけばよい
わざわざ候補を事前に用意してGCに負担をかける意味は全く無い

187:デフォルトの名無しさん
19/01/07 15:22:57.85 Nhl1xZLpa.net
チラシを見てキャベツが1円安いからと電車賃300円払って遠くのスーパーまで買いに行くような無駄な努力に思える。

188:デフォルトの名無しさん
19/01/07 19:03:54.28 RNZAQQS50.net
ネタを元にボケてるだけかと思ったら

189:デフォルトの名無しさん
19/01/07 19:56:07.52 ukOyD8nn0.net
Json.NETを使ったデシリアライズについて教えてください。
以下のようなJsonファイルを読み込んで、リストにデシリアライズをしたいです。
[
{
"email": "foo.example.com",
"active": true,
},
{
"email": "bar.example.com",
"active": false,
}
]
しかし、デシリアライズ時に、オブジェクトが2つ以上会い場合に例外が発生します。
using ( var sr = new StreamReader( @".\accounts.json" ) )
{
var accounts = JsonConvert.DeserializeObject<List<Account>>( sr.ReadToEnd() );
}
例外
Newtonsoft.Json.JsonSerializationException
エラーの原因はわかるのですが、解決策が思いつきません。
よろしくお願いします。

190:デフォルトの名無しさん
19/01/07 20:12:15.21 RNZAQQS50.net
デシリアライズではまる前に
オブジェクトをシリアライズして、どういうjsonが出来るか確認することを勧める

191:デフォルトの名無しさん
19/01/07 20:34:39.02 ukOyD8nn0.net
>>187
オブジェクトが単体の時は[]で囲まれていなかったので、
配列として認識されないような気がします。
もう一度考え直してみます。
ありがとうございました。

192:デフォルトの名無しさん
19/01/07 20:52:50.47 voJmrOTp0.net
parser通さずに自力解析した方が早そうw

193:デフォルトの名無しさん
19/01/07 21:41:14.56 EmaCRb9M0.net
>>186
うちの環境ではそのままで読み込めた。w
ああ、json ファイルのパスや、クラスをフルパスで書くように直したりはしたけど。
あと List<Account> を Account[] に変えてみても動作した。
json パーサは Newtonsoft.Json でいいんだよね?
ひょっとして json ファイルの文字コードや改行コードの問題だったりして。VS2017 で試した。

194:デフォルトの名無しさん
19/01/07 22:00:13.12 RNZAQQS50.net
まあ結論としては只の配列よねw
List<>が勝手に出てくる訳もなく

195:デフォルトの名無しさん
19/01/07 22:27:36.78 LR2ZtPQc0.net
>>181
「10進数が1桁増えるときに2進数表示で最後の4桁以外の文字列は使い回せるから文字列連結処理は多少減らせる」
の意味がわからない。

196:デフォルトの名無しさん
19/01/07 22:49:30.37 ZGeLga+2M.net
BCD?

197:デフォルトの名無しさん
19/01/07 23:07:28.05 7iifCEQOa.net
>>191
アホ?
デシリアライズ先の型としてList<>を指定してるんだからどう見ても勝手に出てきてはいないでしょ
普通にデシリアライズできるよ

198:デフォルトの名無しさん
19/01/07 23:26:43.60 PUyuVhSj0.net
>>192
単純に勘違いだろ。16進数から2進数への変換なら成立するけど
例えば251と256の2進数の下4桁が違うのはすぐわかる
質問引っ張るのもまずいけど元の質問者もフィードバックくらいしてほしいな

199:デフォルトの名無しさん
19/01/07 23:45:26.56 RNZAQQS50.net
json.netはList指定いけたわ
低速過ぎて最近使ってなかった
失礼した

200:デフォルトの名無しさん
19/01/08 01:42:19.06 +TBsMqqs0.net
9時と13時に定期的に作業を実行させたいので、タイマーを使ってプログラムを書きました。
似た部分が多いのでタイマー自体を配列化したのですが、「動作を停止しました」とエラーが出て動きませんでした。
タイマーの配列化って無理なんでしょうか?
System.Windows.Forms.Timer[] timerOnce = new System.Windows.Forms.Timer[2];
public GetControlsList()
{
myTimerOnce(timerOnce[0], "9:00");
timerOnce[0].Tick += new EventHandler(timerOnce_Tick);
}
// 指定時刻までの時間を計算して、Intarvalにセット
private void myTimerOnce(System.Windows.Forms.Timer thisTimer, string setTime)
{
//現在の時刻から、ターゲット時刻までのインターバルを算出
TimeSpan mySpan = DateTime.Parse(DateTime.Now.ToString("yyyy/MM/dd ") + setTime) - DateTime.Now;
int sleepSec = (int)mySpan.TotalMilliseconds;
thisTimer.Enabled = true;// タイマ ON
thisTimer.Interval = sleepSec; // 更新間隔
}
// 指定時刻になったらmethodを実行
void timerOnce_Tick(object sender, EventArgs e)
{
//実行したいメソッド
}

201:デフォルトの名無しさん
19/01/08 06:44:44.69 dT41V3TC0.net
アドバイス頂いた通りシリアライズを見直したところ解決しました。
var account = new Account { Email = "hogehoge.example.com", Active = true, };
using ( StreamWriter sw = File.CreateText( @".\accounts.json" ) )
{
var jw = new JsonTextWriter( sw ) { Formatting = Formatting.Indented };
new JsonSerializer().Serialize( jw, account );
}
このように書いていたので、accountをリストに変換してから行うようにしました。
new JsonSerializer().Serialize( jw, new List<Account> { account } );
レスくれた皆さん、ありがとうございます。
こちらもVS2017なのできっと文法違いが原因です。
Json形式を勉強し直します。

202:デフォルトの名無しさん
19/01/08 08:12:51.74 mtJIt88ca.net
>>197
そもそもWinFormsのタイマーは精度や信頼性がとても低く、時間の計測に使ってはいけない
あくまで「時々処理をさせたい」だけのときに使うもの
あなたのケー�


203:Xならタスクスケジューラを使うのが定石です



204:デフォルトの名無しさん
19/01/08 09:49:22.14 Sw3FA19SM.net
>>197
配列をnewしただけで中身のTimerをnewしてないからじゃないの

205:デフォルトの名無しさん
19/01/08 09:53:57.24 Sw3FA19SM.net
まずデバッグ実行することを覚えた方がいい気がしないでもない

206:デフォルトの名無しさん
19/01/08 12:12:53.32 +TBsMqqs0.net
>>200
まさにそれでした。
1行加えただけで解決しました。ありがとうございました。

207:デフォルトの名無しさん
19/01/09 07:23:03.10 fI4baLQf0.net
本当に初心者質問ですが、ライブラリはimportとnamespaceから書いていくのと、どちらが良いのでしょうか
もしくは使い分けがあるのでしょうか

208:デフォルトの名無しさん
19/01/09 07:48:48.51 c4aAB3Aqd.net
>>203
ここC#スレやで

209:デフォルトの名無しさん
19/01/09 12:18:51.14 fI4baLQf0.net
>>204
C#はusingですけどスコープ内でオブジェクト破棄する機能もusingと呼称してるので混乱しないようにimportと表現しました
なんで2つの記述方法を許しているのか、何か意味があるのか気になりまして

210:デフォルトの名無しさん
19/01/09 12:21:16.40 c4aAB3Aqd.net
>>205
c#にもimportはあるから余計混乱するだけ
名前空間とusingsは全然用途違うでしょ?

211:デフォルトの名無しさん
19/01/09 12:21:41.32 c4aAB3Aqd.net
C#というかMSBuildだけど

212:デフォルトの名無しさん
19/01/09 14:41:58.83 2h2JyjUc0.net
>>203
名前空間の全表記は可読性下げるので使ってないな
VSでカーソル当てれば名前空間表示されるし、今時テキストエディタでゴリゴリ書いている人でもなければ全表記する必要ないと思う

213:デフォルトの名無しさん
19/01/09 14:52:14.20 TKkGGOqYM.net
>>208
MediaのcolorとDrawingのcolorが混在してるときはぶっ潰したくなる

214:デフォルトの名無しさん
19/01/09 14:55:45.81 TKkGGOqYM.net
pathってファイルパスじゃなくて
曲線かよ死ねよとか
省略形でも違いがあったほうが絶対いい

215:デフォルトの名無しさん
19/01/09 19:11:30.62 5txyXp0A0.net
>>203
URLリンク(docs.microsoft.com)
usingでググればここに理由も呼び分け方(using ディレクティブ)も出ている
一般的な呼び名を使わないと調べることすらできなくなるよ

216:デフォルトの名無しさん
19/01/10 13:13:55.78 lMztlpGar.net
>>209
そういうの他にもある

217:デフォルトの名無しさん
19/01/10 20:09:22.40 9xQ4gBbQa.net
P/InvokeやCOM相互運用を書くときに
System.Runtime.InteropServices.ComTypes以下の構造体やインターフェースを使う時があるんだけど
System.Runtime.InteropServices以下に同名の物があるから、大体の場合で完全修飾かusing alias directiveが必要になって面倒なんだよなあ
.Net1.1時代の後方互換性のためにObsolete付きで残してあるんだろうけど邪魔で仕方がない

218:デフォルトの名無しさん
19/01/11 12:39:13.44 qc15f1nfD.net
>>211
その名前を知る事が大変ですよね
沢山本読むしかないんでしょうけど

219:デフォルトの名無しさん
19/01/11 12:57:28.29 RbVY6SmB0.net
>>214
この話はusingの話で質問した人もわかっているし
わからないなら分からないなりに説明したらいいだけ
オレオレ用語使ってこんなところで質問するのは普通におかしい

220:デフォルトの名無しさん
19/01/11 13:29:58.48 5RUmP2fm0.net
スレ間違えたことを嘘に嘘を塗り固めるのは朝鮮人の始まり

221:デフォルトの名無しさん
19/01/11 14:37:44.48 225AU0sE0.net
ちょっと教えろください。
int型変数二つの足し算でオーバーフローするかどうかチェックしたいのですが、
①decimalに�


222:Lャストして足し算した結果がintの範囲に収まっているかif文で判断 ②try catchで例外をつかまえる どっちがいいのでしょう?



223:デフォルトの名無しさん
19/01/11 14:40:44.08 86XGb19RM.net
>>217
③decimalではなくlongにキャストして足し算した結果がintの範囲に収まっているか判断

224:デフォルトの名無しさん
19/01/11 15:54:41.82 r18fheRy0.net
>>217
int_max - a < bなら
a + b < int_maxが成り立つ
でも>218のほうがわかりやすいとは思う

225:203
19/01/11 17:49:49.09 1orv+xc30.net
俺がjavaerという事がバレちまったらしょうがねえ
なんだよusingってよ
vb如きだってjavaリスペクトしてんぞ

226:デフォルトの名無しさん
19/01/11 18:29:52.22 KWycMyC0a.net
>>217
オーバーフローは同じ符号の値を足した時にしか起こらず、起こった場合は前後で符号が変わる。
他の人が見ても何やってるか分かることが重要ならそれで判定するのが一番だと思う

227:デフォルトの名無しさん
19/01/11 18:33:43.65 KnmjjSvJM.net
ラップアラウンドとサチュレーションって学生のときに聞いたのが最後だ

228:デフォルトの名無しさん
19/01/11 18:40:14.66 fFtOgUz40.net
すみません、初めて見る構造体が出て来たのですが
[StructLayout(LayoutKind.Sequential)]
struct INITCOMMONCONTROLSEX
{
public int dwSize;
public uint dwICC;
}
これは何構造体と読むのですか?

229:デフォルトの名無しさん
19/01/11 18:45:24.19 1+lzGhU1M.net
つまらん!
お前の話はつまらん!

230:デフォルトの名無しさん
19/01/11 18:46:13.28 eF6moy/g0.net
>>223
URLリンク(ufcpp.net)
>Sequentialレイアウトでは、複合型のフィールドは宣言した順序通りにレイアウトされます。

231:デフォルトの名無しさん
19/01/11 18:49:12.65 1+lzGhU1M.net
イニシャライズコモンコントロールズイーエックス構造体

232:デフォルトの名無しさん
19/01/11 18:51:24.03 zVvjOIcHa.net
>>223
構造体名で検索したらInitCommonControlsEx関数が出てくるじゃろ

233:デフォルトの名無しさん
19/01/12 00:09:08.43 iaJ8ArIE0.net
VS2017でC#のプログラムを組んでます。
はじめてVS2017を使うのですが、画面の下に

準備完了 ↑ソース管理に追加
という邪魔なバーが表示されてます。
VS2010にはありませんでした。目障りなのでこれを消したいのですが何か方法はありますか?

234:デフォルトの名無しさん
19/01/12 00:20:55.22 Fl9Ups4U0.net
>>228
ツール->オプション、環境->全般、ステータス バーを表示するのチェックを外す

235:デフォルトの名無しさん
19/01/12 00:21:44.23 iaJ8ArIE0.net
>>229
ありがとうございます!!目障りだったんですよね。

236:デフォルトの名無しさん
19/01/12 01:04:45.40 CChJ5ept0.net
色々迷ったけど
オートフォーマットはOFFにした

237:デフォルトの名無しさん
19/01/12 03:22:33.67 S1bCJ3S10.net
例外処理(に限らず、エラー処理)ってどこまで徹底して行うべきなんでしょうか?
下みたいに、使うインスタンス片っ端から毎回nullチェックとかしてたら、凄まじいコード量になるんですが・・・・・
if(obj == null)
{
return msg;
}

238:デフォルトの名無しさん
19/01/12 03:53:00.80 ejfouP+Ya.net
>>232
さあ。
でもバグと例外は区別した方がいいんじゃないか。
そのコードは多分バグを想定してるんだよね?
絶対にとは言い切れないが、バグを想定してそれを検出するifは書かないのが普通じゃないか
いやライブラリみたいなものを作ってるならバグを想定して例外を投げるのは普通だけど

239:デフォルトの名無しさん
19/01/12 03:58:46.63 ejfouP+Ya.net
最後の行は引


240:数のチェックの話ね



241:デフォルトの名無しさん
19/01/12 04:03:08.28 2xT9w9620.net
return msg
してるから まず例外をちゃんと使えてないんじゃ疑惑

242:デフォルトの名無しさん
19/01/12 04:04:51.50 DC6KrvaN0.net
デザインパターンでnullオブジェクトパターンみたいの参考にするのは?

243:デフォルトの名無しさん
19/01/12 04:12:05.96 DC6KrvaN0.net
nullが入るケースがあることを想定している場合にnullチェックを全部書くのがめんどいならnullオブジェクトパターン適用すればいいし
本来はnullが入ってたらおかしいケースならエラーを起こして拾わせるのが正しい構造って回答でいいのかな?

244:デフォルトの名無しさん
19/01/12 04:17:50.15 2xT9w9620.net
・nullが来ない想定ならチェック不要
・nullケース考慮したくないならnullオブジェクトパターン
・null来た場合にぬるり以外で知らせるならチェックする
・nullのネスト面倒ならnull条件演算子
こんな感じやろか
null非許容参照型使うという手もあるが

245:デフォルトの名無しさん
19/01/12 08:05:30.51 VHzQIvd20.net
読んでる入門書のLINQとラムダうんたらってのが分からなくて
手がstopしてしまっているのですが入門者向けに分かりやすく解説されてるページなど教えていただけないでしょうか?
メソッドの使い方はある程度分かったのですがそれじゃ駄目なんすかね…

246:デフォルトの名無しさん
19/01/12 08:39:26.90 0dPYYJK00.net
>>239
LINQやらラムダ使えなくても動くものはつくれるからまぁまずは作ってみよう

247:デフォルトの名無しさん
19/01/12 10:13:12.90 iaJ8ArIE0.net
最近は、自分でプログラム組まずにランサーズでハイスキルな奴に外注してるわw
中抜きでうま~~~

248:デフォルトの名無しさん
19/01/12 10:35:45.31 e9xF8Gpoa.net
>>232
チームの方針次第
うちの場合は
nullを許可しない引数と返り値は基本的に全てチェックして例外を投げてる
めんどくさいと思うかもしれないがFluentAssertionのようなライブラリを使えばそこまで大きな負担にはならない
nullオブジェクトパターンはやればわかるがチェックするよりも手間がかかる
また必ずしもnullの場合の適切な動作を定められるとは限らない
適切でない場合にパターンを適用するとそれがnullオブジェクトかどうかチェックするといった本末転倒なことになりかねない
なのでこれが最も適切と確実に判断できる場合を除いて使用しない
C# 8.0が待ち遠しいね

249:デフォルトの名無しさん
19/01/12 10:44:33.52 CChJ5ept0.net
>>232
仕様と設計で解決する問題
エラーが出たときどうしたいの?
エラー出たときに別に原因とかわからんでええなら一連の処理をtrycatchで囲ったらええやん
なんか起きたらcatchに入ってくるで

250:デフォルトの名無しさん
19/01/12 17:18:08.40 XDHakXaX0.net
>>232
外部とのやりとりの場所は結構厳重にチェックを入れる。
自分で書いているところは適当に流す。
外部とは当該館数のパラメータや、呼び出す関数とかの戻り値ね。
try catch で囲んで、チェックして例外発行して、catch 内でまとめてトレース情報込みでログ出してスローするくらいなら大した手間じゃないじゃない。
その例なら if( obj == null ) throw new ArgumentNullException("ぼーっと生きてんじゃねーよ!"); で済む話じゃん。
>>239
コピペでもいいからたくさん書いてみる。で解決するよ。
やってるうちに理屈が分かるようになる。

251:デフォルトの名無しさん
19/01/12 17:23:52.90 iaJ8ArIE0.net
昔は開発現場でこっそりExcel型の2chブラウザでネットサーフィンばかりしてたな~
座ってるだけで月70万むっちゃらくやった

252:デフォルトの名無しさん
19/01/13 00:23:58.00 X0+RFgX60.net
>>239
駆け出し時代オー�


253:vンソース改造してた時にLINQはパフォーマンス悪いと思って見つけ次第foreachに手直しするという逆工程でLINQとラムダ式マスターした



254:デフォルトの名無しさん
19/01/13 00:46:53.42 IIPQpabmp.net
使えば勝手にlinqの快感にハマって抜け出せなくなる

255:デフォルトの名無しさん
19/01/13 04:21:19.42 qwE0jZig0.net
麻薬のような機能だなw

256:デフォルトの名無しさん
19/01/13 09:07:48.83 Xn8IPTP50.net
LINQもRxも使いだすと元に戻れなくなる
でも性能気にしてstructとforeachに書き直し始めると時間足りない

257:デフォルトの名無しさん
19/01/13 09:32:12.32 Z+h8nfOL0.net
>>246
パフォーマンスのためならなんでforにしなかったん?

258:デフォルトの名無しさん
19/01/13 18:27:15.40 X0+RFgX60.net
>>250
Listはしてたよ
あとラムダ式はLINQ→foreachより行数減らす意識持って1行メソッドを見つけ次第ラムダ式に直す工程で習得したな

259:デフォルトの名無しさん
19/01/14 23:20:39.35 3wGjtMyb0.net
ComboBoxに例えばA~Dと4つ項目が入っていて、A~Cは同一計算方法でDのみ特別な計算方法でコード内容が異なり且つ色んな計算をする為コードが長くなる場合の見やすくする為の最初の分岐方法とか書き方とかありませんか?
今はifで分岐した中にあれこれ結果を取ってきて結果を出してるのでifがやたら長く見辛いです。なんかいい方法があれば教えて頂きたいです。

260:デフォルトの名無しさん
19/01/14 23:31:33.99 CBheeOs80.net
LINQ使うと元に戻れなくなるのはわかるんだけどデバッグしづらくね?
デバッグを想定する時点で初心者なのかな...教えてエロい人

261:デフォルトの名無しさん
19/01/15 00:45:24.53 DUfu4s9fa.net
>>252
4っつぽっちの分岐で何がそんなに見づらくなるのかちょっと理解できんよ。
いや、煽ってるわけじゃなく本当に
各分岐先のコードが長くなるっていうのならそれぞれメソッドに切り分けるだけじゃないの?

262:デフォルトの名無しさん
19/01/15 02:09:17.70 gvlEsXBIp.net
>>252
if(value == d){
d用処理またはメソッド
}else {
a~c用処理またはメソッド

これじゃダメなの?

263:デフォルトの名無しさん
19/01/15 04:09:30.23 Vsgk6Uc3K.net
>>252
ComboBoxにブチ込むためのクラスを書いてDは継承

264:デフォルトの名無しさん
19/01/15 06:09:12.86 rjgxVR8i0.net
LINQはなかなか身につかんなあ。
とりあえずforで書いといて見直してこれLINQで一行になるんじゃね?と気付いたらいそいそと書き直す感じ。
LINQ脳になってない

265:デフォルトの名無しさん
19/01/15 06:39:49.84 OSSPo6bD0.net
例えば処理順を意識しなくて良い場合、通常のforまたはforeachで処理するのと、Parallel.ForEachで並列処理するのはやはり並列処理の方が早い?

266:デフォルトの名無しさん
19/01/15 07:24:38.34 ohj/8QmzM.net
>>255
質問者の意図とは違うかもしれんがそういうコード書くと怒るやつがいた職場がある
わざわざ継承してうにゃうにゃやらんと怒る
んでできたコードが何がいいのか考えてもさっぱり意味がわからん
本人にメリットを聞いてもさっぱり理解できんというかメリットの話になると必ずボケた返しをする
ありもしない改修を想定してキチガイとしか思えない発言を連発する
そもそも仕様書や設計書に処理がその数で分岐するってあるのに
なんで普通に書いたら怒るんだよ
もうお前とはやってられん
ってとこまでいって仕様書や設計書通りに組んでるのに工数が増えてるのはあんたのせいだ
って会社間の会議になってもまだグチグチ言ってる
その場にいる全員?な状態だった

267:デフォルトの名無しさん
19/01/15 08:37:28.18 biF


268:9zsRRd.net



269:デフォルトの名無しさん
19/01/15 08:41:56.04 AEHaNlhRa.net
>>259
条件分岐が減るとかじゃないの?
それだけ不具合が減る理屈だが、工数が増えてるんじゃ意味ないな

270:デフォルトの名無しさん
19/01/15 08:50:45.78 OahWWfOzM.net
普通のケースでは継承にしても
条件分岐が別の場所に移動するだけだべ

271:デフォルトの名無しさん
19/01/15 09:24:06.17 n85zJfLmM.net
>>258
Parallel.ForEachはオーバーヘッドが大きい
一周に数百ミリ秒かかるくらいの粒度の大きなループでない限りは普通のforeachより確実に遅くなる

272:デフォルトの名無しさん
19/01/15 10:26:04.16 fix0rts+0.net
多態性は手間がかかる割に恩恵が少ないよな

273:デフォルトの名無しさん
19/01/15 16:18:48.41 R0UqBAnw0.net
>>257
foreachならともかくforで書いているなら苦労するだろう

274:デフォルトの名無しさん
19/01/15 16:22:04.50 R0UqBAnw0.net
>>259
逆のパターンなら数多見てきたけど、そのパターンは珍しいな
if分岐が10以上になるからなんとかしてと言われて継承使ったプロトタイプ渡したら、なぜか基底クラスでif文復活してたことならあるけど

275:デフォルトの名無しさん
19/01/15 16:36:00.01 0qvQfApDM.net
C#のforeachってpythonみたいに定義しないでindex取得出来ませんか?forにするしかないでしょうか?

276:デフォルトの名無しさん
19/01/15 16:37:26.00 Oh+57Mh2M.net
[_]

277:デフォルトの名無しさん
19/01/15 16:53:35.12 XrO54/Dg0.net
>>267
foreach単体じゃ無理
Enumerable.Select Method
URLリンク(docs.microsoft.com)

278:デフォルトの名無しさん
19/01/15 17:42:13.30 AbSveg4gd.net
>>267
上のSELECT使った実装例はこんな感じ
foreach (var x in items.Select((item, index) => new { item, index }))
{
Console.WriteLine($"index: {x.index}, value: {x.item}");
}
Listか配列かIEnumerabelどれでやってるかは知らないけどもこれで行けるはず

279:デフォルトの名無しさん
19/01/15 17:49:07.53 u2JtKhAa0.net
forが完全上位互換なのになんで
foreach使うのか?
って今でも思ってるよ俺は
ループにインデックスが必要になったというただそれだけで変更するんだぜ

280:デフォルトの名無しさん
19/01/15 17:55:58.21 AbSveg4gd.net
indexが必要でCountもできる時はわざわざindex生成してforeach使う必要無いと思うけどもLinq使いたい時とかIEnumerabelに実装してるものにわざわざfor使わない派

281:デフォルトの名無しさん
19/01/15 17:58:55.44 AbSveg4gd.net
というか戻り値をIEnumerabelにして抽象化しておく事が多いから余計にforeach使うのはあるかもしれない
Linq拡張メソッド作る時とか諸々

282:デフォルトの名無しさん
19/01/15 19:24:57.54 Kk36dR3w0.net
とりまLINQ使って富豪的に組むだろ

283:デフォルトの名無しさん
19/01/15 20:11:07.93 LAAyKIEna.net
>>252
int CalcDefault();
int CalcSpecial();
int Calc() {
if (IsSpecialCase()) return CalcSpecial();
else return CalcDefault();
}
bool IsSpecialCase() => combo.SelectedValue == "D";
とりあえず最初はこれでいいよ
似たような条件分岐が増えてきたらリファクタリングしてポリモー対応できないか検討
最初からポリモーは大げさだからやらなくていい
でも後でリファクタリングしやすいように責務指向でメソッドを切っておくぐらいはやっておいたほうがいい
このへんのさじ加減は経験則だな

284:デフォルトの名無しさん
19/01/15 20:18:43.20 ToRrrvnYa.net
switchを無くすのに多態


285:なんか使う必要ないね。 すくなくともC#にはデリゲートがあるんだから多態使うぐらいならComboBoxのアイテムに デリゲート持たせた方がいいよ。 個人的にはこれも本当に可読的か疑問だけど。 分岐素直に分岐で書いた方が分かりやすいって



286:デフォルトの名無しさん
19/01/15 20:29:43.48 u2JtKhAa0.net
テストするときに圧倒的にわかりにくいコードになんの意味があるの?
バカのやることは本当にわからない

287:デフォルトの名無しさん
19/01/15 20:31:56.84 LAAyKIEna.net
確かに
分岐が多いとテストしにくい
少しならいいけど限度がある

288:デフォルトの名無しさん
19/01/15 20:50:47.00 u2JtKhAa0.net
設計書で分岐が100個あったらswitchcaseかifで100個書けよ
それが気に入らないなら設計書直せよ
そういう当たり前の手続きを無視してコード書いてる雑魚に俺は超えられねぇ

289:デフォルトの名無しさん
19/01/15 20:54:23.73 ShjRgn6y0.net
switch vs 多態って結局プログラムがDRY & SOLIDになってるかどうかって問題に帰着すんだよな
>>255はDRYでもSOLIDでもない
>>275はSOLIDではあるがDRYではない
多態までいけば完全にDRYでSOLIDなプログラムになる
そのコードが一回こっきりで重複がないという前提だと、DRYのありがたみを実感しにくい
だからswitch派が一定数居るのだろうね

290:デフォルトの名無しさん
19/01/15 20:58:26.66 AbSveg4gd.net
インターフェイス厨だから似たような分岐はインターフェイスで分けて個別実装か本当に共通してるなら継承でなんとかしたくなる
それと見返したら俺酷いスペルミスしててワロタ

291:デフォルトの名無しさん
19/01/15 22:25:49.08 rPJfKlkHp.net
cしか知らないのです
vsをダウンロードして独学でc#勉強し始めたのですが、どうにもなりませんです
オブジェクトだのラムダ式だのデザインパターンだの文法的な要素以外に勉強しないとなにを言ってるのかわからない事が多くて、勉強の進め方が間違ってるのだろうと思いました。
初心者丸出しの質問で恐縮ですが、どんな順で何を勉強したら良いでしょう?
また、良書、良いウェブページなどご存知でしたら、ご教示いただければ幸いです
よろしくお願いします。

292:デフォルトの名無しさん
19/01/15 22:32:18.90 2N1r/ZHN0.net
>>282
物まねでもなんでもいいから何か作りまくれ
用語とかから勉強しなくていい。色々調べるうちに覚える
わからなくなったらやりたいことの頭にC#+スペース入れて検索

293:デフォルトの名無しさん
19/01/15 22:33:11.37 p93FMJH30.net
必要性がわからない概念を理解するのは難しい
それはコード書いた経験が少なすぎるから
Cもほぼ入門書読んだだけでしょ
とりあえず自分が理解できる範囲の知識でなにか作りたい物つくった方がいい

294:デフォルトの名無しさん
19/01/15 22:52:10.98 qux9+5740.net
>>282
主にオブジェクト指向関係が分からないみたいだから
オブジェクト指向入門系の本やウェブサイトを探せばいいんじゃないか?
あるいはC#にこだわらないのであればC++の入門書はC言語との違いとして
オブジェクト指向向けの機能に触れているものが多いと思う
実際にプログラム作ってオブジェクト指向の感覚掴みたいなら
個人的にはちょっとしたゲーム作ってみるのもオススメだな 
UnityならC#使えるし

295:デフォルトの名無しさん
19/01/15 23:25:56.04 Zm1dLYXR0.net
>>282
勉強の進め方というか基本的な理解が浅いのでは
Cでも構造体ネストして疑似継承くらいするだろうし
ラムダにしてもクロージャ要素はともかく匿名関数
とりあえずクラスは関数を纏めているのではなく
型を作りデータと結び付けているという事だね
URLリンク(docs.microsoft.com)
翻訳が割と酷いが公式にもドキュメントはあるよ

296:デフォルトの名無しさん
19/01/15 23:31:48.76


297:grH+sReD0.net



298:デフォルトの名無しさん
19/01/15 23:33:48.23 grH+sReD0.net
図々しいお願いで恐縮です

299:デフォルトの名無しさん
19/01/15 23:35:09.56 opRVBBPd0.net
デザパタは経験積まないと有り難味が判らないから放置でいいよ
作りたいものを完成させるにはどうすれば近道かだけ考えろ

300:デフォルトの名無しさん
19/01/15 23:40:43.54 grH+sReD0.net
>>289
デザイパターンはある程度蓄積が出来てないとありがたみがわからない、だから、後回しでも良いと言う意見ですね
クラスを作る定石集のようなものだと思ったので、先に勉強した方が良いのかとも思っておりました
定石知らなくても、楽しく将棋はできるのだから、後回しでも良さそうですね
ご意見ありがとうございます

301:デフォルトの名無しさん
19/01/15 23:50:54.16 u2JtKhAa0.net
vector3Dクラスの内部に
vector2Dクラスは普通は作らないんだぞ
知ってた?
しかし、両クラス共にメンバx,yを保持する
そう、お前らの大っっっっっっっ嫌いな重複だw
しかし、極上のバカでもない限り
vector3Dをvector2D+zで作るやつなんてこの世にいないんだよ
わかるな?
この例ではわかりやすく
XYZで説明してやったが
世の中ってのはこういうもので満ち溢れてるんだよ
xyでもyzでも計算するときがあるのさ
わかりにくいだけで
xyをvector2Dで作ってしまったオブジェクトのyzの計算は不格好なのさ
オブジェクト指向は破綻している
そこをわかった上で付き合うんだ

302:デフォルトの名無しさん
19/01/16 00:03:56.21 9UhWNW230.net
>>287
物に例えるってのは常々ダメだと思うわ、関係ない要素が絡んできて
人に依ってはマイクロウェーブとか出るの?とか思うだろうし
クラス設計としちゃフィールドは構造体と一緒だけどメソッドは…
うん、とりあえず手続き型っぽく作っても良いだろう\(^o^)/
多態性は+演算子の数値なら加算が文字列だと連結になるとかね
C経験はCUIのみという事かな?.NET Frameworkなんか知らん!という事であれば
Visual C++ Windows デスクトップアプリを従来通りWin32で作っても良いと思うけど
手っ取り早くダイアログベースで作成してメッセージハンドラに渡ってきたIDで振り分ける
ぶっちゃけ.NET FrameworkもWin32 APIをラップしてるだけなのでC#も基本は変わらない
フォームデザイナーで弄くってコントロールにイベントハンドラ割り当てるだけ

303:デフォルトの名無しさん
19/01/16 00:44:36.48 RsJGf8R10.net
>>292
制御系のプログラムばかり書いているのです
どうかするとロジアナ見てる方が多いかもしれませんが
パソコンの世界はほとんどわからないです

304:デフォルトの名無しさん
19/01/16 01:02:27.00 NripHWV9a.net
>>293
制御系ならCでも自然とオブジェクト指向的な設計でコード書いてたはずだと思う。
「キーをスキャンしてデバウンス処理を担当するコード」とか「LCDドライバーへの表示データの転送を担当するコード」
とか、そういう仮想機械をコード上にいっぱい作ってたはず。
オブジェクト指向のオブジェクトって要はこの仮想機械のこと。
クラスはそれを書きやすくするための仕組みに過ぎん。
だからたぶん心配してるよりずっと簡単な話だと思うよ

305:デフォルトの名無しさん
19/01/16 01:07:11.33 RsJGf8R10.net
>>294
私の頭の中はオブジェクト指向とは無縁です。
設計そのものに、そんな考え方を取り入れていないので、どこまでも手続き型で考えてしまうのです。
強いて言えば、状態遷移を作るときに少し似たような考え方になるだろうか、という程度ですね
なにをクラスとすれば良いのか、そういうところがピンとこないので、わからないのです。

306:デフォルトの名無しさん
19/01/16 01:13:49.60 9UhWNW230.net
いわゆる組み込み系か、それだと逆にこっちが経験乏しいけど、Cライブラリなら馴染みはあるのかな
するとまずはVisual C++からWindowsコンソールアプリをC/C++ライブラリで作ってみるとかかねぇ?
APIとかはC#にしろMSDN…今はMicrosoft Docs?を見るしかないね、C#ならIntelliSenseにも詳細出る
でもC#からなんか制御するとかだと結局プラットフォームのネイティブAPIや専用ライブラリになるか?
とりあえずオブジェクト指向とかを学びたいのであればC++や他スクリプト言語とかでも良さそうな

307:デフォルトの名無しさん
19/01/16 01:15:08.32 NripHWV9a.net
>>295
でもキュー(リングバッファー)ぐらい実装したことあるでしょ?
端的に言えばあれがオブジェクトの一例っすよ。
データ(配列 + 読み出しポインタ + 書込みポインタ)と、
それをリングバッファーに見せかけるコードの組み合わせ
簡単でしょ

308:デフォルトの名無しさん
19/01/16 01:30:35.70 RsJGf8R10.net
>>296
言語そのものはどれでも良いと考えています
vsのヘルプを読む限り、同じことができてるようですから
どうせなら、c#を勉強してみたいなと考えております

309:デフォルトの名無しさん
19/01/16 01:36:56.53 RsJGf8R10.net
>>297
リングバッファがオブジェクト指向の考え方なのですか。
なるほど。
仮装化したデバイスのようなもの、ということなのでしょうか。ハードディスクのドライバやNICのドライバは確かにアプリケーションからみると仮想的で、実際のハードウェアの持つ機能とは関係なくつかえるようにしますね
少し例えがわかった気がします
ありがとうございました
今日は遅いので、この辺で失礼します

310:デフォルトの名無しさん
19/01/16 02:56:08.32 JSfUU2TA0.net
private Task<int> hoge{....}
というメソッドがあって
var t=hoge();
でタスク走らせた後、ちょっと別の処理してから
t.ContinueWith(()=>...);
と継続タスクを付け足した場合、
付け足した時点でhogeが終わってれば
すぐ継続タスクの処理を開始してくれますか?

311:デフォルトの名無しさん
19/01/16 08:32:38.24 vAlWKxD3a.net
>>300
はい

312:デフォルトの名無しさん
19/01/16 09:09:41.77 CvIYGZ/W0.net
なんならTask.CompletedTaskからでもContinueWithできる

313:デフォルトの名無しさん
19/01/16 11:29:57.72 O5e9hp9mM.net
>>299
オライリーのヘッドファーストオブジェクト指向がおすすめ

314:デフォルトの名無しさん
19/01/16 16:28:16.62 UcQqPOFa0.net
ついでに、ユニットテストを身につける本をだれか教えてくれんかな
どの入門書もテストについて全く教えてくれんがどうなってんだ・・・・

315:デフォルトの名無しさん
19/01/16 16:40:21.97 vTKVQdGXF.net
そのうちテストのテストも書きたくなってくる

316:デフォルトの名無しさん
19/01/16 18:30:37.61 rdmn+dmd0.net
なかなかゲームの自動プレイを実装するの難しいな~

317:デフォルトの名無しさん
19/01/16 19:00:09.87 uHZTYjv/a.net
>>241 >>245 >>306
>>1

318:デフォルトの名無しさん
19/01/16 19:04:33.77 rdmn+dmd0.net
1は俺の書き込みちゃうでぇ

319:デフォルトの名無しさん
19/01/16 20:32:03.28 LiM0dr73p.net
>>303
どうもありがとうございます
java c#を習得している人が前提の書籍のようですね
オブジェクト指向の勉強には良さそうな本で助かります
javaも知らないので、今度丸善にでも行って太刀打ちできそうか、少しみてから判断しようと思います

320:デフォルトの名無しさん
19/01/16 21:05:07.42 wbo0XsPzd.net
>>301
>>302
ありがとうございました

321:デフォルトの名無しさん
19/01/18 05:08:46.83 bjcECFHM0.net
すまんが、VisualStudio2017についてる.NET Core2.1って、2.2にするにはどうすればいいの?
勝手に入ったんだからVisualStudio周りからアップグレードする方法があって良いような気がするものの・・・・どこにあるんだろ!?
URLリンク(dotnet.microsoft.com)
それともこっからダウンロードしてきて入れちゃえば良いのかな?

322:203
19/01/18 07:03:56.21 3+zdHjT80.net
>>287
動物スーパークラス作って猫クラスと犬クラス作って猫にニャーニャー 犬にワンワンと鳴かせるプログラム作りな
完成したらオブジェクト指向習得
これで月18万の8次請非正規になれるよ
面談では経験8年で勘定系COBOLの経験有りと答えてね

323:デフォルトの名無しさん
19/01/18 07:26:09.39 UV6kIYNk0.net
>>311
VSのインストーラから入れられるのはLTSだからか知らんが今のところ2.1まで
2.2はSDKで入れてプロジェクト毎にターゲットとして指定すればおk

324:デフォルトの名無しさん
19/01/18 07:46:49.16 tSI143EMa.net
>>312
意地が悪いな

325:デフォルトの名無しさん
19/01/18 09:51:47.00 LKOsIFRz0.net
オブジェクト指向は色々勉強するより
ちょっとしたゲームでも作ったほうが分かりやすいと思うわ
モンスターとヒーローを作って相手を攻撃するメソッドと攻撃を受けたときにダメージを受けるメソッドを書いて 終わり

326:デフォルトの名無しさん
19/01/18 11:05:46.51 OxZoH0bi0.net
非同期のファイル検索処理を途中でキャンセルしたいのですが
時間がかかる処理はDirectory.GetFilesなので
CancellationPendingをどこに書いても処理が終わるまでキャンセルされないのですが
どう書けばよいでしょうか
URLリンク(dotnetfiddle.net)

327:デフォルトの名無しさん
19/01/18 12:09:48.64 FhyCLWa9d.net
>>316
こういうやつ?
URLリンク(qiita.com)

328:デフォルトの名無しさん
19/01/18 12:11:43.78 70siMoMg0.net
>>316
Directory.GetFiles()の代わりにDirectory.EnumerateFiles()を使う

329:デフォルトの名無しさん
19/01/18 13:00:12.01 Xg90leRQM.net
>>315
ゲームはオブジェクトと環境との間のインタラクションが多すぎるからオブジェクト指向を学ぶには適さない
プロでも結局全部グローバルスコープでアクセスできるようにしとけみたいな設計にしかならん

330:デフォルトの名無しさん
19/01/18 14:06:54.39 LKOsIFRz0.net
じゃあやっぱ>>312がベストアイディアだな

331:デフォルトの名無しさん
19/01/18 17:53:25.90 3+zdHjT80.net
俺が先輩なら新人に自動車クラスとタイヤクラス作らせて型継承でタイヤ交換


332:は容易にするようにと課題出す 出来たら6年選手として売る



333:デフォルトの名無しさん
19/01/18 17:56:23.24 3+zdHjT80.net
新人言うても30歳超えの中途ね
コスパ良いんだわ
年食ってると従順でパワハラにも耐える
そう言えば20代新人とか見たことない
存在するのかね

334:デフォルトの名無しさん
19/01/18 18:53:47.09 LKOsIFRz0.net
すまんがIT企業の闇と経験年数詐欺の手法はマ板でやってくれんか?
ム板は数年後のプログラミング教育必修化に向けてフレッシュでさわやかな若者向けの板に改装する予定なんだが

335:デフォルトの名無しさん
19/01/18 19:22:42.59 LUo6T6YMr.net
おまえが改装するの?

336:デフォルトの名無しさん
19/01/18 19:45:43.10 adSAogxL0.net
マ板話をム板でするなハゲ

337:デフォルトの名無しさん
19/01/18 19:57:21.94 zUd1LnnRd.net
>>325
ハゲ・ヅラ板の話をム板でやるなよ

338:デフォルトの名無しさん
19/01/18 20:48:28.34 LKOsIFRz0.net
早いところプログラミング必修化してほしいもんだぜ
会社の愚痴とブラック会社アピールが「プログラミングのお話」だと思ってるオッサン多すぎ

339:デフォルトの名無しさん
19/01/18 21:54:37.77 v/mpstOM0.net
IT業界の非正規形態に未来がなさ過ぎて辛い
いかんいかん 楽しい気持ちでラムダ練習せねば

340:デフォルトの名無しさん
19/01/18 22:02:21.54 BJ9hxZ250.net
↓プログラミングを必修化した結果
URLリンク(pbs.twimg.com)

341:デフォルトの名無しさん
19/01/18 22:16:50.60 v/K+38IX0.net
なんかちがう

342:デフォルトの名無しさん
19/01/18 22:41:31.47 yv7JhRUX0.net
そもそも資格試験は政治家の天下り先がつくってる
いみない
なぜなら資格を作ってるところの役員事態は
知識がないのだから。

343:デフォルトの名無しさん
19/01/18 22:57:58.37 1ZiD/8V00.net
文字列から数字をtmpWとtmpHに抜き出すクラスを作りたいのですがどうしたらいいですか?
演算子記号は+−もある、数字の桁数は不明で小数点もあり、数字が入るときは小文字一字始まり、引数はw or hで抜き出す戻り値を示す。

対象文字
①w900×HH
②WW×h1000
③WW×HH
④w900/h100
結果 引数がwなら左  hなら右
①tmpW=900 tmpH=""
②tmpW="" tmpH=1000
③tmpW="" tmpH=""
④tmpW=900 tmpH=1000

344:デフォルトの名無しさん
19/01/18 23:04:40.52 qic/InUuM.net
数字文字列は尻からスキャンが定石か

345:デフォルトの名無しさん
19/01/18 23:09:53.93 FQpSYkdr0.net
正規表現で抜けば?

346:デフォルトの名無しさん
19/01/18 23:11:37.85 OxZoH0bi0.net
>>317
ありがとうございます。調べてみます
>>318
ありがとうございます。しかし同じくキャンセル出来ませんでした

347:デフォルトの名無しさん
19/01/18 23:58:07.57 JDQsFvp5a.net
フォルダの中に万単位でファイル作ってGetFiles()テストしたことがあったけど
10年以上前のPCでも非同期にしなきゃならんほど遅くなかったと思ったけどなあ
普通に遅い原因はユーザーコードの方にあるんじゃないの

348:デフォルトの名無しさん
19/01/19 00:06:23.94 h3VcH88n0.net
10年前のPCはそこまで性能悪くないだろ

349:デフォルトの名無しさん
19/01/19 00:41:04.18 pEXPsY3Y0.net
>>332
文字列を×/区切りの前後でsplit
それぞれの先頭がwhなら以降を戻り値

350:デフォルトの名無しさん
19/01/19 01:20:56.46 2Tiw7zAQa.net
>>336
誰と話してるの

351:デフォルトの名無しさん
19/01/19 05:18:33.12 M8Q3zGyy0.net
>>332
今ちょうど過疎ってるお題スレにちょうど良さげなのでお題スレにコピペさせてもらおう。

352:デフォルトの名無しさん
19/01/19 07:28:05.47 +IqL7b8U0.net
>>334に一票

353:デフォルトの名無しさん
19/01/19 08:43:09.59 hupcYVyzM.net
>>332
④が難題だな。どうやって実現しようかなぁ

354:デフォルトの名無しさん
19/01/19 08:48:50.91 Oo+kKfbG0.net
indexOfとLowerでイケるんちゃうか?

355:デフォルトの名無しさん
19/01/19 08:49:22.84 Oo+kKfbG0.net
あとsplit

356:デフォルトの名無しさん
19/01/19 14:47:58.46 +IqL7b8U0.net
>>342
確かに w
まあtypoだろうからスルーしてやれよ

357:デフォルトの名無しさん
19/01/19 17:07:22.10 FJgPPckz0.net
脊髄反射で書いたので添削頼む。
public static string[] GetHW(string input)
{
string[] returnval = new string[2];
string[] temp = input.Split('+','-','*','/');
if (temp[0].StartsWith("w", StringComparison.Ordinal))
temp[0] = temp[0].TrimStart('w').Insert(0, "tmpW=");
else if (temp[0].StartsWith("WW", StringComparison.Ordinal))
temp[0] = "tmpW=\" \"";
else
temp[0] = "それ以外の何か";
if (temp[1].StartsWith("h", StringComparison.Ordinal))
temp[1] = temp[1].TrimStart('h').Insert(0, "tmpH=");
else if (temp[1].StartsWith("HH", StringComparison.Ordinal))
temp[1] = "tmpH=\" \"";
else
temp[1] = "それ以外の何か";
return temp;
}

358:デフォルトの名無しさん
19/01/19 17:11:32.02 FJgPPckz0.net
あ、Replaceでよかった。
returnvalも無意味。

359:デフォルトの名無しさん
19/01/19 17:39:42.56 FJgPPckz0.net
1文で
public static string GetHW(string input)
{
return input.Replace("w", "tmpW=",StringComparison.Ordinal)
.Replace("h", "tmpH=", StringComparison.Ordinal)
.Replace("WW", "tmp=\" \"", StringComparison.Ordinal)
.Replace("HH", "tmp=\" \"", StringComparison.Ordinal)
.Replace("+", " ", StringComparison.Ordinal)
.Replace("-", " ", StringComparison.Ordinal)
.Replace("*", " ", StringComparison.Ordinal)
.Replace("/", " ", StringComparison.Ordinal);
}

360:デフォルトの名無しさん
19/01/19 18:47:09.81 jmND9WvPa.net
>>332
質問内容はともかく、プログラマならもうちょっと読み手が推測で補完しなくても
内容を過不足なくきっちり読み取れるような文章を書いた方がいいと思う。
ってういか、率直に言って日本語変だよw

361:デフォルトの名無しさん
19/01/19 18:53:12.69 +IqL7b8U0.net
文章はともかくサンプルデータと結果を書いてるのは褒めてもいいと思うよ
他の質問者もぜひ見習って欲しい

362:デフォルトの名無しさん
19/01/19 19:00:37.08 ov6XiAZ2M.net
競技プログラミングの問題文よりましだろ

363:デフォルトの名無しさん
19/01/19 19:36:35.93 PaRH8QDQF.net
独学手探りで勉強しながら作っていたアプリケーションが一応形になったので
折角だから公開してみようと思っているんですが、
デバッグやライセンス確認など、リリース前に確認する事、の知識が全くないことに気づきました
少額ながら有料公開にしようと考えている為、
最低限これとこれは確認しないと、って物を教えて頂きたいです

364:デフォルトの名無しさん
19/01/19 19:39:05.53 9NMu+pMT0.net
>>352
なんのアプリケーションかも分からないし、答えようがない

365:デフォルトの名無しさん
19/01/19 19:41:36.75 FJgPPckz0.net
有料ってことは、不具合に対する改善要求が来る可能性もあるので、責任の範囲(逃げ道)を明確にしておく。

366:デフォルトの名無しさん
19/01/19 19:42:32.49 XwZdf3VkM.net
>>349
そこは、「あなた、日本語お上手ですね!」で煽らないと

367:デフォルトの名無しさん
19/01/19 19:53:49.36 oPTngqYr0.net
煽ってどうすんだよガイジ

368:デフォルトの名無しさん
19/01/19 20:31:17.01 h4R+weTi0.net
>>313
今の所、普通に使っていて2.2にはならないのか
ありがとう

369:デフォルトの名無しさん
19/01/19 21:00:12.97 jmND9WvPa.net
>>332
まあ、適当に忖度して書いてみた
普段正規表現あんまり使う機会がないんでどっかおかしいかもしれん
URLリンク(ideone.com)

370:デフォルトの名無しさん
19/01/19 21:02:54.87 BW5TF7JUa.net
>>352
ヘタしたら訴訟沙汰になりかねないからやめとけ
まずはベータ版


371:として無料で配るとかして様子を見るべき



372:デフォルトの名無しさん
19/01/19 21:59:06.23 +chQE6yt0.net
>>352
・C#で作ってるならデコンパイルされても大丈夫か確認しておく
・GPL汚染に注意する

373:デフォルトの名無しさん
19/01/20 23:51:42.85 NEqE5pSC0.net
ソフトで商売って労力に見合わないな
キラーソフトでも作れればそれだけで暮らせるんだろうけど

374:デフォルトの名無しさん
19/01/21 00:00:18.20 lx5Y5NZb0.net
ニッチな分野か、あるいは既存ソフトより高性能であれば有料でも売れる可能性はある

375:デフォルトの名無しさん
19/01/21 01:05:58.77 +LWwKYuDa.net
業務アプリなら大したスキル無くてもやってることがビジネスとして正しくてちゃんと営業すれば売れるよ
今時ツール系で稼ぐのはまあ無理

376:
19/01/21 05:02:51.88 BX1YVz9RH.net
>>362
業務にての使用を公認されるためには、有料(シェア)ソフトの方が有利なようですよ、秀丸とか

377:デフォルトの名無しさん
19/01/21 07:23:38.48 EWbXmLTJ0.net
ASPばかりしてたらWinFormの作り方忘れた
つか今だにWinFormの案件あるのかね
小ツールはコンソールアプリで作っちゃうから勝手が思い出せない

378:デフォルトの名無しさん
19/01/21 07:27:48.21 V744VEzgd.net
>>346
>>348
ありがとうございます!調べてやってみます!

379:デフォルトの名無しさん
19/01/21 07:41:57.18 A1e+SXhY0.net
ASPの案件がある方が驚きだわ

380:デフォルトの名無しさん
19/01/21 07:46:49.66 1hBKI8k2D.net
>>367
大手はWindowsServer入れてる率が多い気がする

381:デフォルトの名無しさん
19/01/21 07:54:57.12 BPZ4z+V2d.net
>>368
ASP.NET(かもしくはASP.NET Core)やろってツッコミじゃね?

382:デフォルトの名無しさん
19/01/21 08:07:17.42 pqXwpH4cd.net
ASPはもうASP.NETに移行済んでるものと思ってた

383:デフォルトの名無しさん
19/01/21 08:20:46.33 V744VEzgd.net
>>358
わざわざ有難うございます!
これも書いて勉強してみます!

384:デフォルトの名無しさん
19/01/21 10:03:06.25 HJdNRmJRM.net
開発マシン XP32bitでVS2005で作ったC++のdllを同じくVS2005で作ったC# WinFormアプリでDllImportを使って利用しています。
Win10 64bitで実行するとC++の関数をコールすると
間違ったフォーマットのプログラムを読み込もうとしました。(HRESULTからの例外: 0x8007000B)
となります。
同じ事をwin7 64bitのVS2013で作ったアプリでしても(当然)問題なく動きます。
VS2005で作ったアプリで動かす方法はないでしょうか。

385:デフォルトの名無しさん
19/01/21 10:21:26.36 yj1nRareM.net
プロジェクト設定でany cpu になっている部分をx86にしなされ

386:デフォルトの名無しさん
19/01/21 11:03:04.79 HJdNRmJRM.net
>>373
ありがとうございます!
無事動作しました!

387:デフォルトの名無しさん
19/01/21 12:12:30.14 1DQQx7qk0.net
新規プロジェクトをVBでやりたがるPMにC#をオススメしたいのですが、C#が決定的に優れてる点はあるでしょうか?
VB読みにくいなんて言っても苦しむのはお前だろ関係ないという雰囲気で

388:デフォルトの名無しさん
19/01/21 12:30:08.86 eMR7WidkM.net
ループの評価とコーディング量かな
手持ちプロジェクトをSharpDevelopで変換してみなされ

389:デフォルトの名無しさん
19/01/21 12:44:54.58 9okmCQOjM.net
プログラマの品質
実際にC#使うかVB使うかはどうでもいいが、要員をC#経験者に限定することでリスクは格段に下がる

390:デフォルトの名無しさん
19/01/21 12:55:35.86 qfMy6igJ0.net
ネットに転がってるサンプルコードの量
(ちょっと慣れればすぐに読み替えられ�


391:驍謔、になるってのは秘密)



392:デフォルトの名無しさん
19/01/21 13:14:20.48 dccJtP51d.net
>>377
担当PGは決まってるんだからそんなこと言っても説得力なし

393:デフォルトの名無しさん
19/01/21 13:48:30.91 NM3vIbDMa.net
日本人を説得するのはこれが一番
URLリンク(yellow.ribbon.to)
実際問題.NETの世界ではC#が標準で「みんな」が使ってる。
逆にあえて非標準のVBを使う理由って何なんですかと聞いてやればいい
もう少し合理的な人なら、ラムダ式とか、デリゲートのadd/removeに演算子が使えることとか、
三項演算子とか、null合体演算子とか、代入演算子が右辺の値を返す式であるとか、
プロパティーのいろんな省略記法とか、C#ならいかに簡潔にかけて同じことをVBでやるといかに冗長になるか
具体例を見せてやればいいよ

394:デフォルトの名無しさん
19/01/21 14:10:03.70 NbFzEAOW0.net
>>380
> ラムダ式とか、デリゲートのadd/removeに演算子が使えることとか、
> 三項演算子とか、null合体演算子とか、代入演算子が右辺の値を返す式であるとか、
> プロパティーのいろんな省略記法とか、
単なる印象だけど>>375のところのPMはそう言うのを嫌いそうな気がする

395:デフォルトの名無しさん
19/01/21 16:35:43.35 trZhU3Ina.net
Labelを貼って、そのTextを空白にしたらデザイン画面でクリックできなくなってしまったのですが
どうやって選択状態にしたらいいのでしょうか

396:デフォルトの名無しさん
19/01/21 17:01:29.53 NM3vIbDMa.net
>>382
デザイナで以下のどれかの操作をする
(a) [ctrl] + z
(b) マウスでそのラベルがあったあたりをドラッグ
(c) [ctrl] + [alt] + t
(d) プロパティウィンドウの上部のドロップダウンで選択

397:デフォルトの名無しさん
19/01/21 17:54:05.53 trZhU3Ina.net
>>383
ありがとうございます
C案でやらせていただきました

398:375
19/01/21 18:26:05.83 1DQQx7qk0.net
PM的にはVBのが簡単で人員の確保が容易との理由ですが、イベントリスナにクラスレスで全処理書くベテランエンジニアの意向を汲んでるんだと思います
自分はサンプルの多さとC系で無い記述に不慣れという理由でC#を希望しましたが、ベテランに寄せられるんだろうなと諦めムードです
ちなみにベテランのスマートUIは芸術の域で若輩の自分には追従不可です
コード量も多く見積りが高く出来るとPMからも信頼されています

399:デフォルトの名無しさん
19/01/21 18:37:52.16 PrrgsGFM0.net
今2019年やぞ……。
生産性を上げる技術を入れる気が無い、そのPMにはC#のメリットはメリットに見えないだろうなぁ。
ベテランは古い技術と心中できるけども……

400:デフォルトの名無しさん
19/01/21 19:12:08.60 R3pW/ayE0.net
ループ内で一時変数宣言したらコストが増えるってのを知って
新しいブロック作って変数宣言してみたけどなんか見た目がすっきりしない
ループ内の変数宣言の新機能とかないのかな

401:デフォルトの名無しさん
19/01/21 19:14:47.05 FhYMYDcaa.net
>>386
生産性って言葉は立場や状況によって指してるものが変わるんやで

402:デフォルトの名無しさん
19/01/21 19:26:17.46 tYy/rBPTM.net
ソフトウェア作れると言うとソフト作って売って大儲けできるんじゃないかと
よく言われる
世間はそういう感じで見てる

403:デフォルトの名無しさん
19/01/21 19:27:19.80 0j7Aeluod.net
権力持ってる人がVB推しなら決定でしょ
できることはほぼ同じだし諦めな

404:デフォルトの名無しさん
19/01/21 19:36:49.44 lF845d4L0.net
>>387
コストが増えるってローカル変数が増える事?
初期化するスタックの増加


405:やレジスタに乗りづらくなるとか? さほど気にするもんでも…とりあえずAnyCPUで64bit優先オヌヌヌ



406:デフォルトの名無しさん
19/01/21 19:59:33.83 2/OM9doDa.net
>>386
意識高めても虚しいだけだよ
10年この仕事して啓蒙もしたけどなにも変わらなかった
9割5分の人材はそもそもシステム開発に興味ないから啓蒙しても無駄
転職するか割り切るかどちらかしかない
環境を変えようと思ったら負け

407:デフォルトの名無しさん
19/01/22 05:26:41.64 1xYsQegz0.net
正規表現パズルやってたのか・・・参加したかった

408:デフォルトの名無しさん
19/01/22 12:26:50.15 vFo5wc3/a.net
パズル言うほど難しい問題出てない気が...
どっちかっていうと質問自体の方がハズ(
正規表現便利だけど他人の書いたの読むのキツいよねw
しょっちゅう使ってれば違うのかもしれんが

409:デフォルトの名無しさん
19/01/22 15:21:12.16 pHhZylOrM.net
ややこい正規表現の場合
コメントで想定okパターンくらいは書くようにしてる

410:デフォルトの名無しさん
19/01/22 15:22:14.22 pHhZylOrM.net
あとテストコード入れとく場合も

411:デフォルトの名無しさん
19/01/22 17:14:18.11 4H8Bkb5P0.net
フォームアプリケーションにtrackbarを2つ用意して、
pcに接続されたモノラルマイクの音量(感度?)とパンニングをそれぞれ操作したいんですが
適当な検索ワードがわからずにたどり着けませんでした
できるだけシンプルに、どう書けば可能でしょうか?

412:デフォルトの名無しさん
19/01/22 17:49:02.10 vFo5wc3/a.net
ググったらこんなのが出てきた
読んでないけどなんかすごい面倒くさそう...
URLリンク(web.archive.org)URLリンク(www.terra.dti.ne.jp)

413:デフォルトの名無しさん
19/01/22 18:36:37.95 NN+MTXVc0.net
質問です
ファイルの移動を扱う自作メソッドの結果を扱うクラス(Aとする)を作りました
このクラスに
class A{
...
public static A Output_IsCanceled(string 元のファイル) {
//引数を受けて動作をキャンセルしたことを示す結果を返す。
}
}
のように典型的な結果を出力するメソッドを追加したのですが、
このAを継承したクラスBにこのメソッドもこのメソッドを上書きしたメソッドも実装させたくありません。
なにかスマートな解決方法はあるでしょうか。
私には大人しく別のクラスに移すくらいしか思いつかないのですが。

414:デフォルトの名無しさん
19/01/22 18:49:41.50 P5rqpQdz0.net
>>399
そのメソッドを外したクラスを作ってクラスAとクラスBに継承させる

415:デフォルトの名無しさん
19/01/22 18:49:53.30 lqDMGVH00.net
親作って別々に継承

416:デフォルトの名無しさん
19/01/22 19:00:35.92 NN+MTXVc0.net
なるほど 言われてみれば簡単でしたね
ありがとうございます

417:デフォルトの名無しさん
19/01/22 22:12:29.98 ttdon+q40.net
object型の変数に入れた匿名クラスのプロパティを取得する方法で
詰まっております。
object hoge = new { fuga = 1 };
int a = hoge.fuga ←こういうイメージで取得したかったのですが。。。
ご教授よろしくお願いいたします。

418:デフォルトの名無しさん
19/01/22 22:19:56.81 bu0N7pF20.net
>>403
なんでそんなことしたいの?

419:デフォルトの名無しさん
19/01/22 22:25:46.51 ttdon+q40.net
>>404
Dapperの引数がobject型だったのですが、Dapperに渡す前の
匿名クラスのプロパティの値を元に一つ条件式を作りたかったんです
object型の匿名クラスからどうやって値を取るのか興味もありまして

420:デフォルトの名無しさん
19/01/22 22:26:33.77 qwoCd5dDa.net
ほら宇宙刑事ギャバンの必殺技みたいなあれだよ

421:デフォルトの名無しさん
19/01/22 22:39:23.63 g3EQ5hiYa.net
>>405
無理
渡す先の引数がobject型だからって変数の型をそれに合わせる必要はないだろ
var使えよ

422:デフォルトの名無しさん
19/01/22 22:41:18.57 0fUOX4Xc0.net
>>403
リフレクションを使った力業
var a = ( int )hoge.GetType().GetProperty( "fuga" ).GetValue( hoge );

423:デフォルトの名無しさん
19/01/22 22:45:23.28 UB+BgHs40.net
>>403
int a = ((dynamic)hoge).fuga;
てしたら取れた。なおインテリセンスはきかない。

424:デフォルトの名無しさん
19/01/22 22:47:54.29 N3agGC610.net
>>409
これは全く頭になかったわ

425:デフォルトの名無しさん
19/01/22 23:01:01.54 ttdon+q40.net
>>409
値が取れました。ありがとうございます。
結構トリッキーになるみたいなので
多用は避けた方が無難かと学びました
しかし、Dappreはさらにプロパティ自体も自前で取得するので
手練れの外人は違うなと

426:デフォルトの名無しさん
19/01/22 23:21:33.35 0fUOX4Xc0.net
>>411
Type.GetProperties()でプロパティの一覧が取得出来るよ。
foreach ( var propertyInfo in hoge.GetType().GetProperties() )
{
var value = propertyInfo.GetValue( hoge );
Debug.WriteLine( $"{propertyInfo.Name}={value}" );
}

427:デフォルトの名無しさん
19/01/22 23:32:00.27 ttdon+q40.net
>>412
なるほどそうやるのですね
知らないことが多いので参考になります

428:デフォルトの名無しさん
19/01/23 00:01:29.03 n+ibBTmv0.net
Androidの実機持って無いんだけど、もし、完成したC#のアプリが有った場合、
DownLoad から、実行まではどうすればいい?
.Net のインストールから始まるの?
C#アプリはGooglePly からDLするの? それとも自前のWebサイト?

429:デフォルトの名無しさん
19/01/23 03:41:42.64 g/jeFpr60.net
WPFって、最初のGUIデザインはデザイナで出来ますが、ユーザーの入力に応じてGUIを変化させたい場合
(例えば、テキストボックスに3と入力したらラベルを3つ追加するとかの場合)
xamlではなくC#のソースコードでコントロール追加せざるを得ないのでしょうか?

430:デフォルトの名無しさん
19/01/23 04:35:34.67 OkP0wizv0.net
>>411
匿名クラス使わなきゃいいやん

431:デフォルトの名無しさん
19/01/23 07:17:48.93 bZ1m5CuBM.net
>>415
wpf xaml 条件分岐
でググレ

432:デフォルトの名無しさん
19/01/23 08:30:39.69 YOQQL4jNa.net
>>415
よく考えよう
その例の場合、お前はコントロールを追加したいんじゃなくて表示対象の文字列を増やしたいんだろ?
C#からは「表示対象の文字列を追加する」操作だけをして、コントロールを追加するのはバインディングに任せるのがWPFの思想だ
>>417は間違いで、ググるべきキーワードは DataTemplate
コレクションに文字列を追加するだけで勝手にコントロールが追加されるようになる

433:デフォルトの名無しさん
19/01/23 08:36:51.99 YOQQL4jNa.net
ちなみにWebなら上記のようなまどろっこしいことをしなくてもRazorテンプレートの中に直接forループを記述するだけだ
WPFの難解なバインディングは概念ばかりが先行してユーザーを置き去りにする典型的なMSの失敗作

434:デフォルトの名無しさん
19/01/23 09:43:36.18 qi0lTRAT0.net
上の人はワケワカラン書き方しているが、wpfではListBoxのItemは自由にかけるから、そこにLabelを配置して追加削除をやるってのが定番ね

435:デフォルトの名無しさん
19/01/23 09:47:33.21 NxchbiGLM.net
>>420
間違い
Itemsには文字列のコレクションをバインドする
でItemsTemplateでDataTemplateを適用させてLabelを生成させる

436:デフォルトの名無しさん
19/01/23 11:55:57.45 tAarVqiS0.net
WPF は知らないけど、一般的に、JavaScript の状態管理なら、
Vue.js, Nuxt.js など、状態管理用のフレームワークを使う

437:デフォルトの名無しさん
19/01/23 12:40:46.32 x96ZzLYOr.net
ここは今からjavascriptのスレになりました

438:デフォルトの名無しさん
19/01/23 14:43:06.09 PhLCwjBwd.net
>>422
ウゼーーーー

439:デフォルトの名無しさん
19/01/23 17:42:05.37 yPNynzM60.net
最近、業務システムはデータベースとデータ操作言語が8割でC#はさほど重要じゃないんじゃ。。。
と疑うようになってきました
C#が主役の開発って、ゲームくらいですかね

440:デフォルトの名無しさん
19/01/23 17:50:21.87 qdiHHHQi0.net
>>425
それも統計に嘘がある可能性あり。以下、各社各様、自分に都合の良いことを行っている:
一般人:「Androidのアプリの大部分は Java である」
Unity:「百万種類以上あるゲームアプリの半数が Unity(C#)製である」
Adobe:「Flash製ゲームが、100万種類を超えた。」
日本人:「日本の歴代で一番売れたゲームは、Final Fantasy xx で、700万本(売り上げにして500億円程度)」
外人:「MineCraft というゲームの売り上げが一兆円越えた。」

441:デフォルトの名無しさん
19/01/23 19:31:40.08 qdiHHHQi0.net
誤: 外人:「MineCraft というゲームの売り上げが一兆円越えた。」
正: 外人:「MineCraft というゲームの売り上げ本数が一億本越えた。」
Flash に関しては、「one million games」みたいな言葉を使って、
Adobe が「自慢」していたんだそうだ。

442:デフォルトの名無しさん
19/01/23 20:40:29.23 2LIdCPNFa.net
>>425
ミクロサービス開発するとデータベース殆ど触らなくなる
EF便利

443:デフォルトの名無しさん
19/01/23 21:24:52.01 xzA+L1aD0.net
SQL手書き最高ひゃっはp

444:デフォルトの名無しさん
19/01/23 22:51:20.49 xSBZbPpe0.net
C#のデバッグ画面の診断ツールについて質問です
メモリ使用量のプロファイルはデフォルトで無効だと思うんですが、いつの間にかクリックしてしまって
有効になったまま無効に戻せません
VCの場合はクリックすると元に戻す出来る場所があるのですが
レジストリをいじらないと駄目なんでしょうか?

445:デフォルトの名無しさん
19/01/24 18:07:50.56 +k418LkV0.net
とりあえずVisual Studio Community 2017だと
診断ツールウィンドウの左上の歯車クリックで出るドロップダウンの
メモリ使用量のチェック外したら次のデバッグから消える
つかデフォルト有効じゃなかったっけ オンにした記憶ないし

446:デフォルトの名無しさん
19/01/24 22:08:23.88 nbtsb27b0.net
C#の話じゃないのかもわかんないけど、ちょくちょく出てくる「コンテキスト」ってのが何者なのか未だに理解できん
プログラムの単位で!?処理の中断・継続等を担ってる!?!?とかなんとか説明されてるけど意味がわからん
こいつは一体どういうもんなんじゃい?

447:デフォルトの名無しさん
19/01/24 22:17:59.01 Io4qrCW00.net
>>432
何年もC#使っているけど「コンテキストメニュー」しかわからん
またJavaの話じゃないだろうな

448:デフォルトの名無しさん
19/01/24 22:23:04.95 nbtsb27b0.net
>>433
ASP.NETでもEFでもXamarinでのモバイル開発でも、何しててもコンテキストが出て来まくるじゃない

449:デフォルトの名無しさん
19/01/24 22:34:05.54 KQvEosKo0.net
>>432
「文脈」という意味で、例えば、Graphic の Context の場合なら、
・現在の foreground color
・現在の background color
・現在の font
・「カレント座標」 (MoveTo() などで


450:設定する LintTo() の開始座標) ・現在の Clipping 領域。 ・現在の 原点の位置。 などを記録しているオブジェクトのようなこと。だから、もし、同じ Window に対して 2つの Graphic Context を持てば、それぞれで別々の カレント座標や、foreground color、Clipping Region を持つことが できて、瞬時に切り替えたりできる。これが、Win32 の Device Context に相当する。 --------------------------------------- CPU の Cotext の場合、IA32BIT の場合なら、 汎用レジスタ: EAX, EBX, ECX, EDX, ESI, EDI、EBP 命令ポインタ: EIP スタックポインタ: ESP フラグ: EFALGS セグメントレジスタ: CS, DS, ES, FS, GS 浮動小数点レジスタ: ST0~ST7 などが該当する。この Context を細かく時間を区切って切り替えることで、 MultiTask が実現できる。MultiCore CPU の場合は、それぞれの Core が 別々の Context を同時に持っていることになる。



451:デフォルトの名無しさん
19/01/24 22:36:47.07 /05KE7l40.net
>>435
ただし、JS の canvas の context は、1つの canvas に対しては、1つしか
持つことが出来ないとされており、
var ctx1 = canvas.getContext("2D");
var ctx2 = canvas.getContext("2D");
のようにしても、ctx1 と ctx2 は同じ値が返ってくることになっているらしい。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch