C# プロパティ
C# プロパティ
クラス内で、変数を定義して、その変数を、クラス内外からアクセスするもの。
クラスの外から見ると、メンバ変数っぽくて、
クラスの内から見ると、メソッドっぽく見える物。
変数をそのまま触らせるより、プロパティ経由で触らせる方が、デバックにもカスタムにも変更にも便利になるものです。
例えば、以下のような変数を利用するときに、追加でプロパティも宣言します。
// 変数宣言 string name; int age;
プロパティの宣言
// プロパティ public string Name { set { name = value; } } public int Age { set { age = value; } }
プロパティと宣言の両方ってめんどくさくない?
ではなくて、プロパティがあっても、直接変数を変更されないように、変数宣言を省略してプロパティのみの記述をすることも出来ます。
// プロパティ public string Name { get; set; } public int Age { get; set; }
初期化することも可能です
// プロパティ public string Name { get; set; } = "None"; public int Age { get; set; } = 0;
あと、プロパティは、変数がなくても宣言は出来ます。
// プロパティ public string Name { get { return "None"; } }
変数がなくても宣言できる2つ目の例:
固定文字を返す プロパティ 例です。
public string NameAndAge => "Name:" + Name + ", age:" + Age;
プロパティで、変数宣言しないケースで、読み取り専用にするには、private を指定すればいいみたい。
// プロパティ public string Name { get; private set; }
C# コンストラクタ宣言 引数有り無し 宣言
コンストラクタは、引数無でも、引数有でも宣言することが可能です。
// 引数無し public Person() { type = "人"; } // 引数有り public Person(string type) { ; }
ただ、状況によっては、引数有り無しで2つのコンストラクタの内容を複数回書かない方法として、以下のように書くことが出来ます。
// 引数無し public Person(): this("人") { } // 引数有り public Person(string type) { ; }
もしくは、以下のようにな記載もできます。
public Person(string name = "test", int age=0) { ; }
C# クラス宣言
C# クラス宣言
クラス宣言は、クラス名を指定して作成することが出来ます。
class <クラス名>
これは基底クラスと呼ぶらしい。
クラス名は、先頭位置文字を大文字にするルールっぽいです。
クラスには、変数や関数を記述できます。
クラスでは、特別な関数が1つあり、それをコンストラクタと呼びます。
コンストラクタとは
クラスを宣言した時に、初期化などが出来ます。
public Person()
{
;
}
コンストラクタは、クラス名と同じ名前になります。
コンストラクタは、引数無でも、引数有でも宣言することが可能です。
// 引数無し public Person() { ; } // 引数有り public Person(string name, int age) { ; }
ここまでの内容を踏まえた例文を以下に記載しておきます。
namespace ClassTest001 { class Person // 基底クラス { // 変数宣言 string name; int age; /// <summary> /// 基底クラスのコンストラクタ(引数有) /// </summary> /// <param name="name"></param> /// <param name="age"></param> public Person(string name, int age) { this.name = name; this.age = age; Console.WriteLine("基底クラス(引数有)"); Console.WriteLine($"Name: {name}, Sge: {age}"); } } }
いろいろなサンプルを見ていると、名簿的な名前や年齢とかのものを見かけるので、それを参考にしています。
Xamarinで戻るボタンで画面を戻してみました。
戻るボタン機能
先日Xamarinで、Main画面とSetup画面を作りましたが、
Setup画面で、戻るボタンを押して、
Main画面に戻るようにしました。
戻る機能
Setup画面側のxaml.csファイルで、
戻るボタンが押されたら発生するイベントを上書きして、
MainPageに切り替える処理を追加すればできました。
コード
Protected override bool OnBackButtonPressed()
{
App.Curresnt.MainPate = new MainPage()
return true;
}
作業Log
XamarinでForm画面を追加してみました。
新しい画面を追加
Setupボタンを押したときに、
新しい画面を開くように、
Form(?)画面を追加しました。
追加方法
ソリューションエクスプローラー画面にあるプロジェクトを選択し
右クリックでメニューを出して、
追加(D) -> 新しい項目(W)... を選択します。
そうすると、[新しい項目の追加] という画面が表示されるので、
そこから、[コンテンツページ]を選択します。
Page1.xaml.cs / Page1.xaml が追加されます。
前回作成したSetupボタンを押したときにCall
B_Clicked()内に、処理を追加します。
ここは、どのボタンを押しても呼ばれるので、
Setupボタンが押された時だけ処理されるようにするため、
以下の判定を追加しました。
if(sx.Tag.ToString() == "0") {}
その中に、先ほど追加した画面が開くように
今回はMainPageを入れ替えるという荒業で対応しました。
Application.Current.MainPage = Page1();
作業過程