如何使用強制轉換通過基類參考訪問繼承類物件的欄位?
例如,如何訪問 SpecificStudent 課程中的成績欄位?
我在這里嘗試的鑄造不起作用。
謝謝!
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
Student[] students = new Student[2];
students[0].name = "somename";
students[1].name = "anothersomename";
students[1] = (SpecificStudent)students[1];
// students[1].grade //This is what I want to be able to do
}
class Student
{
public string name;
}
class SpecificStudent:Student
{
public string grade;
}
}
}
uj5u.com熱心網友回復:
你試過這個嗎?
static void Main(string[] args)
{
Student[] students = new Student[2];
students[0].name = "somename";
students[1].name = "anothersomename";
Console.WriteLine(((SpecificStudent)students[1]).grade);
}
class Student
{
public string name;
}
class SpecificStudent : Student
{
public string grade;
}
如果你等于student[1]你(SpecificStudent)student[1]正在重新轉換特定的Student,因為你的陣列是 type Student。如果你愿意,你可以直接使用它或創建另一個陣列
uj5u.com熱心網友回復:
這是你應該如何做的:
static void Main(string[] args)
{
Student[] students = new Student[2];
Student student = new Student();
student.name = "somename"
students[0] = student;
SpecificStudent specificStudent = new SpecificStudent();
specificStudent.name = "anothersomename";
specificStudent.grade = "B";
students[1] = specificStudent;
}
或者
SpecificStudent specificStudent = students[1] as SpecificStudent;
if (specificStudent != null) // the cast succeeded
{
specificStudent.grade = "B";
}
沒有辦法安全地向下轉換為子型別。您可以檢查實體是否是該型別(as操作員會這樣做),但盲投可能會在運行時失敗。
uj5u.com熱心網友回復:
直接使用強制轉換
((SpecificStudent)students[1]).grade
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496390.html
下一篇:PythonOOP分離一個類
