value ? ✕✕ : △△
を評価した値(value
が真なら ✕✕
、偽なら △△
)が 〇〇
に代入されます。
C#のプロパティ(戻り値・型)について
解決したいこと
C#のプロパティに関すること
発生している問題
戻り値がbool型のプロパティで、get,setを設定
特定の値のときにtrueとなるような内容だが、setブロックの内容が理解できない
該当するソースコード
bool (プロパティ名)
{
get => 〇〇 != ✕✕
set => 〇〇 = value ? ✕✕ : △△;
}
自分で試したこと
getは〇〇と✕✕を比較しているのでboolを返すのは分かります。
setについては代入されたbool値に応じて✕✕または△△が設定されると思います。
この場合にbool値が設定される流れがいまいち分かりません。
予想としてはgetとsetが同時に(?)実行されるのかな、と考えています。
ご回答の程よろしくお願いします。
2Answer
Comments
@daiki130412
Questionerご回答いただきありがとうございます。
追加でお聞きしたいことがあります。
例えばvalueにtrueを代入した場合、✕✕が〇〇に代入されると思います。
このとき、プロパティの値はgetブロックを通じてbool値に変換される、という理解で間違いないでしょうか?初学者で質問の意図が分かりにくいかもしれませんが、再度のご回答をよろしくお願いいたします。
そのような変換は起きません。
〇〇
には✕✕
がそのまま代入されます。@daiki130412
Questionerご回答いただきありがとうございます。
私のコードでは、メンバ変数(質問内の✕✕と△△)がColor型(?/構造体?)で、○○がBackColorです。
疑問点としては、BackColorがgetterではColor型(?)の値の比較をしていて、setterではbool値の代入が行われていることが理解できていません。
分かりずらい質問で申し訳ありませんが、ご回答宜しくお願い致します。
〇〇とか××とか△△とかの型が何で、どこから来たのですか? 多分すべて bool 型の変数で、以下のように定義されていると想像しています。(質問するならこの程度は書いてください。〇〇とか書くのは避けることをお勧めします。読みにくいので)
public class MyClass
{
private bool circle;
private bool triangle;
private bool cross;
public bool MyProperty
{
get => circle != cross;
set => circle = value ? cross : triangle;
}
}
であれば、例えば、
var myClass = new MyClass();
myClass.MyProperty = true;
とすると、setter で、value は true なので三項演算子 value ? cross : triangle
の結果は cross になり、それが cricle に代入されます。
Comments
@daiki130412
Questionerご回答いただきありがとうございます。
以後、コードの書き方に気を付けます。メンバ変数として、Color On ,Color Off があり
bool State
{
get => BackColor != Off;
set => BackColor = value ? On : Off;
}というコードです。
疑問点としては、valueに代入できる値の型に制限があるのかどうかです。
setterではvalueにはbool型を入れなければならないと思います。
一方でgetterではbool型だと成立しないように思えます。恐れ入りますがご回答の程よろしくお願いいたします。
疑問点としては、valueに代入できる値の型に制限があるのかどうかです。
setterではvalueにはbool型を入れなければならないと思います。その通りです。State プロパティに代入できるのは true または false のみとなります。
一方でgetterではbool型だと成立しないように思えます。
getter の
BackColor != Off
で比較演算子 != が返すのは bool 型です。なので問題ありません。比較演算子 (C# リファレンス)
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/comparison-operators@daiki130412
Questionerご回答いただきありがとうございます。
何度も追加で聞いてしまい申し訳ございません。(現在の理解度)
Stateプロパティにbool値を代入したとき(setter)
⇒BackColorにbool値が代入され、OnまたはOffがプロパティに設定されるStateプロパティから値を取得するとき(getter)
⇒比較演算の結果がbool型で返される(疑問点)
・BackColorの型はsetterではbool型でgetterではColor型(?)に見えるが、この考え方で良いのかどうか
・プロパティはbool型と思いますが、setterでOnやOffは設定(?)しても良いのか?お忙しいところ恐縮ですが、ご回答いただけますと幸いです。
・BackColorの型はsetterではbool型でgetterではColor型(?)に見えるが、この考え方で良いのかどうか
違います。BackColor の型は setter でも getter でも Color 型です。setter と getter で型が変わるなんてことは C# の世界ではあり得ません。
・プロパティはbool型と思いますが、setterでOnやOffは設定(?)しても良いのか?
コードは
set => BackColor = value ? On : Off;
なので当たり前に On または Off を BackColor に設定できます。三項演算子の意味が分かってないようです。勉強してください。@daiki130412
Questioner勉強不足で申し訳ございませんでした。
ご回答ありがとうございました。クローズしてください
Popular Questions
- https://usasmmclub.com/product/buy-verified-cash-app-accounts/ 24-hour Reply/Contact. Email: Usasmmclub@gmail.com WhatsApp: +1 (208) 495-5327 Skype: Usasmmclub Telegram: @Usasmmsale0
- newの有無、literalの違い0
- C言語でのループ処理を教えてください0
- 黄金分割探索 ARC054B - ムーアの法則0
- https://usasmmclub.com/product/buy-verified-cash-app-accounts/ 0