X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 2b02-+i0H)
垢版 |
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
http://mevius.5ch.net/test/read.cgi/tech/1608085775/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0262デフォルトの名無しさん (テテンテンテン MM8f-LzhE)
垢版 |
2021/04/18(日) 23:42:54.47ID:4BU0O/MkM
そういうセキュリティの気にし方をするのであれば、普段使いのPCとは別に
個人情報を一切入れないPCを1台用意して開発勉強専用にするのが一番安心できると思うよ
外に漏れて困るようなレベルのコードを書くならダメだけどさ

というかMicrosoftDocsやGitHubやStackOverflow/Qiitaとか一切閲覧できない環境で
NuGetやNPMに登録されてる出来合いのライブラリもまったく利用しない縛りを入れて
自分の能力だけで1から100までコードを書けるなんてすごいなあ
俺にはそんな縛りプレイしてたらとてもじゃないけど開発にならないや
0264デフォルトの名無しさん (ワッチョイ bf68-tdH6)
垢版 |
2021/04/19(月) 01:49:10.86ID:c6NDAp6p0
構造体(値型)を関数の参照渡し以外で、参照する方法ってありますでしょうか?
配列の構造体にアクセスするコードを書いているのですが、
逐一配列の添字計算が入るのも嫌なので避けたいと思っています。
添字の数は関数の中では変わりません。
今は関数の参照渡しで使っていますが、他に方法は無いのかなと思いまして。
0269デフォルトの名無しさん (ワッチョイ bf68-tdH6)
垢版 |
2021/04/19(月) 02:14:43.49ID:c6NDAp6p0
>>265
ref ってローカル変数に使えるんですね!
前に軽く試した時には右辺値にしかrefを記載してなかったので、
左辺の定義にもrefを記載すれば行けました。
有難うございました!
0270デフォルトの名無しさん (ワッチョイ fff2-9WMT)
垢版 |
2021/04/19(月) 03:18:25.46ID:RtpbkBzw0
オフライン環境での開発だけど、
VS Community2019のオフラインインストーラをダウンロードして
オフライン環境に持ち込んで使ってる
c#でフォームのデスクトップアプリしか作らんので特に困ってない
0275デフォルトの名無しさん (ワッチョイ 9736-pvza)
垢版 |
2021/04/19(月) 09:01:07.98ID:qHBf6kdf0
getsetプロパティをFuncで呼び出せるようにしたいのですが可能でしょうか?
メソッドで括って呼び出せば良いのだろうけど直接Funcに入れる方法があるならそうしたいです
0276デフォルトの名無しさん (ワッチョイ 7f7c-xwMB)
垢版 |
2021/04/19(月) 09:10:46.59ID:a1UfxEQG0
よく分からん
Func<string> func = () => person.Name;

Func<string> func = person.Name;
みたいに書きたいってことか? 無理だけど
func = person.Name.Surname;
のときperson.Nameがいつ解決されるのか判断つかないし
0277デフォルトの名無しさん (ワッチョイ 9736-pvza)
垢版 |
2021/04/19(月) 09:26:07.33ID:qHBf6kdf0
>>276
返信ありがとうございます

イメージとしては複数のクラスで
public bool hoge {set => test = value; }
が複数あって
List<Func<bool, bool>> func;
に追加していってキャンセルとか何らかの処理後に一括して戻したい、と言うような処理です

やはりプロパティってメソッドみたくできないFuncに入れる事ができないんでしょうか
他の方法ですっきりする方法はないですかね?
0280デフォルトの名無しさん (ワントンキン MM4f-Ct+I)
垢版 |
2021/04/19(月) 10:21:06.38ID:8YZTYag9M
まあ気持ちはわかる
(Webでなく)GUIアプリで独学した初心者って、エンティティオブジェクトをアプリ全体で生存させるような設計をしちゃうんだよな
オブジェクト指向を普通に解釈すりゃそれが自然なんだけど、実際そういう設計はしないんだよ
ドメインモデルだろうとトランザクションスクリプトだろうと、エンティティはトランザクション毎に作る
0282デフォルトの名無しさん (ベーイモ MM4f-XYuH)
垢版 |
2021/04/19(月) 10:44:42.24ID:7XobiDdgM
>>278破棄と生成できれば良いのですがちょっと難しい。ユーザーコントロールでバインドしていて各コントロールは値を参照しあってます
今回は画面が切り替わったときに表示非表示を変える戻す、なので直接は関係ないのですが影響度を減らしたい
>>279
>>276見直してプロパティを直接でなくてもラムダ式でいけそうなことに気付き>>279さんの形を思い浮かびました、今出掛けてるので確認は後ですが多分解決できそうです

皆様ありがとうございます
解決しなければまた聞くかもです
ありがとうございます
0286デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
垢版 |
2021/04/19(月) 12:41:53.53ID:/vkKNniZa
何がしたいのかよく分からないね。

キャンセル要求が発生したら初期状態に戻したいなら
素直に初期状態をまるごとキャッシュしておく方が分かりやすいんじゃないかと思うけど

もっと素直なのはそもそもApplyするまでUIの値をモデルに反映しないことだよね。

まあたぶん要件を説明しきれてないんだろうけど
0291デフォルトの名無しさん (ワッチョイ ffa7-zL3N)
垢版 |
2021/04/19(月) 14:13:33.61ID:lMV2Jqgd0
>>290
影響する値でエラーが出てもそれとは関係ない表示はできる限り続けて欲しい(プレビューが見えないから)
エラーが出てるときは値の変更で表示は変わっても最後の反映はできないようにしてほしい
でも値を変更してる最中のundo,redoは効くようにして欲しい

って割とありがち要求だよね

モードレスやった時点で地獄を覚悟しろって感じ
0292デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
垢版 |
2021/04/19(月) 14:17:30.66ID:5/g8GOz6M
そのためのMVVMですから!
0294デフォルトの名無しさん (ワッチョイ 57ad-IUyB)
垢版 |
2021/04/19(月) 16:13:54.25ID:LEIxqEAm0
うちにも本当にしてる端末はあるぞ。
むしろ自動で上げたくないしな。
既知の問題でワークアラウンドがあるならそれで良いというケースもあるし。
リリースノートめちゃくちゃ読む。
0295デフォルトの名無しさん (テテンテンテン MM8f-wT4Z)
垢版 |
2021/04/19(月) 16:51:10.44ID:qG+FkDTLM
>>293
ネットに繋げないならそうするしかないし言うほど面倒でもないだろ
そもそもネットに繋いでる場合でもアップデートがある度に適用なんてしないよ
>>294が書いてるように修正内容見て影響ないとかワークアラウンドがあるなら適用しない
0297デフォルトの名無しさん (ワントンキン MM4b-Ct+I)
垢版 |
2021/04/19(月) 17:17:52.34ID:ssZtrIutM
今のVSって最新メジャーバージョンは完全に人柱向けだからなあ
アップデートをすぐに入れられないような環境だと詰む可能性があるからむしろリスクが大きい
最新版を追えない環境なら2017使ったほうがいいよ
0306デフォルトの名無しさん (ワッチョイ b72d-GJAZ)
垢版 |
2021/04/20(火) 03:07:10.55ID:hE4KV5oa0
>>303
機能の解説だけでどのようなときに使うかは書いてなかったです

Delegate型の説明と作り方の後に例としてConsole.WriteLineでHelloと表示するメソッドを
新たに作ったDelegate型のaという変数に突っ込んでa()を実行して
ほら表示できたでしょという感じだったのだけれど
だからどうしたとしか思わなかったです
0310デフォルトの名無しさん (ワッチョイ b768-tdH6)
垢版 |
2021/04/20(火) 04:41:05.35ID:IRlXB/YU0
デリゲートは自分で使うもんじゃないと思ってた。
Buttonをクリックしたら、このメソッド実行してねってのを、IDEが作ってくれる奴だから。

だから、「こんなときどうしよう」って悩んだときに、
そうだ!デレゲートってのがあるんだよ!っていう、よっぽどの場合に、入門書を読めば良いと思う。
初めてのC#みたいな本がお薦めなんだけどね。
0313デフォルトの名無しさん (ラクッペペ MM8f-ZP9E)
垢版 |
2021/04/20(火) 08:29:39.05ID:2x6gxMkWM
デリケートに好きして
0317デフォルトの名無しさん (ワッチョイ 972c-KAGY)
垢版 |
2021/04/20(火) 12:07:45.54ID:7xfghfsY0
例えば、Ruby では、Forwardable でインスタンス変数に委譲できる

自分で配列クラスから、Stack を作って、その内のpush, pop だけを使いたい場合、
もし配列を継承・is-a すると、余計なメソッドまで継承してしまうので、それらを使いたくない。
そういう場合に、委譲・has-a で、インスタンス変数に委譲して、使うメソッドも限定できる

Go, Elixir も継承がない、委譲だけ。
継承は大掛かり。
使わないメソッドを呼ばれてしまう可能性があるから

また、誰でも使うような、String クラスなどを継承して、メソッドを追加されるのも嫌。
そういう継承は想定外だから

素人は、よくそういう事をする。
継承用のクラスじゃないのに継承したりする

require 'forwardable'

class Stack
extend Forwardable

def initialize( ) @ary = [ ] end
def_delegators( :@ary, :push, :pop )
end

stack = Stack.new
stack.push 1
stack.push 2
stack.pop

p stack #=> #<Stack: @ary=[1]>
0318デフォルトの名無しさん (ワッチョイ 972c-KAGY)
垢版 |
2021/04/20(火) 12:25:42.67ID:7xfghfsY0
>>307
shadowing とは、内外の変数は、別々の扱いで、
内側のスコープに入ると、内側が優先されて、
外側の同じ変数名が隠されること。
その際、外側の変数には影響を与えない。

Ruby では、外側のa は10で、内側のブロックスコープでは、
同名の変数aを使っても、外側の変数には影響を与えない。
ブロックスコープを抜けると、aは10のまま

a = 10
ary = [ 1, 2 ]

ary.each do |a|
puts "ブロック内: #{ a }"
end

p a

出力
ブロック内: 1
ブロック内: 2
10
0321デフォルトの名無しさん (ワッチョイ b7b0-tdH6)
垢版 |
2021/04/20(火) 21:04:57.15ID:HBCxLvi90
なにかのネタというかエンジニアジョークなのかな? わからないや

シャドーイングがどんな機能なのかは単純だからわかってるつもりだけど、一見同じ変数名を扱えることで何が嬉しいの?って話です
コード読んでて混乱しそうなので無い方が綺麗だと思うのだが、自分の脳みそが貧弱なだけかな?
0322デフォルトの名無しさん (ワッチョイ bf68-Zgro)
垢版 |
2021/04/20(火) 21:05:35.48ID:3ANNQsEU0
c から来た人なんだけど、デリゲートって関数ポインターの認識
0323デフォルトの名無しさん (ワッチョイ bf68-Zgro)
垢版 |
2021/04/20(火) 21:08:17.98ID:3ANNQsEU0
半角の++が書き込めない。なんだこれ。
0326デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
垢版 |
2021/04/20(火) 23:13:15.40ID:oW++joyya
>>321
嬉しいでしょ。
まあぶっちゃけフィールドをローカル変数で隠蔽することはあまりないと思うけどね。

>>322
Cより機械語レベルで考えた方が分かりやすいね。
要はcall命令のオペランドだよね
厳密にはthisポインタの情報を含むから違うんだろうけど概念的には
0332デフォルトの名無しさん (ワッチョイ bf62-rOyz)
垢版 |
2021/04/21(水) 09:15:40.20ID:hAG7zCyL0
>>327
コンストラクタにはそのオブェクトを生成するために必要なものを渡してる
初期化子は特に生成には関係ないない項目にも初期値を設定してるイメージ
使う側はあまり気にしなくていいけど用意する側は意識しといた方がいいよ
0333デフォルトの名無しさん (スッップ Sdbf-QJa2)
垢版 |
2021/04/21(水) 09:18:16.78ID:zaNQ2p2Bd
>>327
初期化子はフィールド単体に対しての初期化で、コンストラクタはクラス全体に対しての初期化って考えたらイメージしやすいかも
まあ、初期化子を指定しない場合でも、def aultで初期化されるんだけどね
0334デフォルトの名無しさん (アウアウウー Sa1b-B9Cj)
垢版 |
2021/04/21(水) 11:04:40.00ID:9tzd621Ta
>>327
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」

オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
0336デフォルトの名無しさん (ワッチョイ d790-EWF6)
垢版 |
2021/04/21(水) 16:56:18.92ID:yCZSrEkI0
C#に限らずnull safetyの言語で、特にビューモデルのクラスでnullableなフィールドを宣言する機会が多いいんだが、
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
 throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
0337デフォルトの名無しさん (ワッチョイ d790-EWF6)
垢版 |
2021/04/21(水) 17:04:17.58ID:yCZSrEkI0
メソッド内で1,2回とか参照しないのであればわざわざnon nullableなローカル変数に代入しないが

特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
0341デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 10:42:48.70ID:XvsGXOnj0
linuxとwindowsで動くguiソフト作りたいんですが、共通の開発環境と言語ってあるでしょうか?
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
0344デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 11:16:13.25ID:XvsGXOnj0
opengl関係無いアプリも作りたいので(´・ω・`)
c#は恐らくlinuxでは動かないものですよね
0349デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 14:05:53.62ID:XvsGXOnj0
>>347
unityをguiアプリ開発に使いませんよね 普通
0352デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 15:44:38.28ID:XvsGXOnj0
>>350
monoやxamarinはc#ですよね。
c#製アプリはlinuxで動かないと効かされていましたが。
あと、openglなので、c++ではないですか?
0354デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
垢版 |
2021/04/22(木) 17:02:51.26ID:RDEPc8rd0
釣りだろ
0359デフォルトの名無しさん (スププ Sd70-F6Jh)
垢版 |
2021/04/23(金) 21:53:03.64ID:e/IHU4YJd
c#でPCがアイドル状態か否か判定したくて
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
■ このスレッドは過去ログ倉庫に格納されています

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