[英]C# Interact with variable of a class in an other class
我正在學習C#,並要求最好的方法與此類中的某個類的變量進行交互。 我想到了:
public class Character
{
private int x, y;
public Character(int posX, int posY)
{
x = posX;
y = posY;
}
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
public int Y
{
get
{
return y;
}
set
{
y = value;
}
}
}`
class MainClass
{
public static void Main (string[] args)
{
Character hero = new Character (42, 36);
Console.WriteLine (hero.X);
Console.WriteLine (hero.Y);
hero.X = 5;
Console.WriteLine (hero.X);
}
}
我不知道這種方法是好的還是優化的,但是它可以工作。 但是,如果我想對10個變量執行此操作,則我的班級將為我的變量執行最少100行(如果我要在get / set中添加測試),這將做100行...您知道其他方法可以繼續嗎? 或如何壓縮此方法? 謝謝!
您可以使用自動實現的屬性 :
public class Character
{
public Character(int x, int y)
{
X = x;
Y = y;
}
public int X { get; set; }
public int Y { get; set; }
}
同樣在現實生活中,如果您需要更新許多其他類的變量,請考慮重新設計代碼。 可能您已將數據和邏輯分為兩個不同的類。 考慮將兩個類別與數據和處理該數據的邏輯合並為一個類別。
注意:C#的下一版本有一個重大更新,稱為記錄類型 ,它將允許您僅在類名稱后列出所有類屬性:
class Character(int X, int Y);
對於數據傳輸對象來說,這是很好的語法糖。
這種變量稱為屬性,當我希望該變量可從其他對象讀取和編輯時使用,因此即使您增加屬性的數量或在get / set中添加檢查,它也是解決問題的最佳解決方案。 繼續!
除了自動屬性,您還可以使用Object initializer 。 在這種情況下,您無需顯式聲明構造函數。 使用該功能,您可以再保存幾行代碼。 檢查下面的代碼以查看更改:
public class Character
{
public int X { get; set; }
public int Y { get; set; }
}
class MainClass
{
public static void Main (string[] args)
{
var hero = new Character {X = 42, Y = 36};
Console.WriteLine(hero.X);
Console.WriteLine(hero.Y);
hero.X = 5;
Console.WriteLine (hero.X);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.