我來自JavaScript並試圖更好地理解在C#中使用對象的方式。我有一些簡單的代碼:訪問對象屬性的更優雅或有效的方式?
class Program
{
static void Main(string[] args)
{
MyClass firstObj = new MyClass();
firstObj.Number = 6;
Console.WriteLine(firstObj.Number);
object secondObj = doResults();
string getString = secondObj.GetType().GetProperty("resultsString").GetValue(secondObj).ToString();
Console.WriteLine(getString);
Console.ReadLine();
}
public static object doResults()
{
ResultsObj newResults = new ResultsObj();
newResults.resultsString = "Here is my string";
return newResults;
}
}
public class MyClass
{
public int Number { get; set; }
}
public class ResultsObj
{
public string resultsString { get; set; }
}
在main()的第一部分,我創建一個對象,添加屬性,設置一個值,然後訪問並顯示該值。它的所有非常簡單。
在Main()的第二部分,我調用了doResults()方法,該方法創建一個字符串屬性的對象。
我的問題是這樣的一行:
string getString = secondObj.GetType().GetProperty("resultsString").GetValue(secondObj).ToString();
如此看來涉及到我。這真的是訪問返回對象的屬性的正確/最有效的方式嗎?
爲什麼返回'object'而不是'ResultsObj'?你在這裏失去了所有類型的安全。 – DavidG
也許這是問題的根源。就像我剛纔說的,來自JavaScript,我習慣於把對象放在一邊而沒有什麼複雜性,所以我的C#方法可能是錯誤的。 –
在你的情況下,一個簡單的轉換就可以工作:'((MyClass)ResultsObj).resultsString' –