This issue has been moved from a ticket on Developer Community.
学习C#



类继承过程中设定了一个基类
public class BaseClass : object
{
public string note = "I'm from BaseClass.";
public int number = 0;
}
并设定了两个派生类
public class DerivedClassMask_BaseAccess : BaseClass
{
//屏蔽了基类的note成员。
new public string note = "I'm from DerivedClassMask.";
//下面的方法用于验证调用被屏蔽成员
public void BaseNoteAccess()
{
Console.WriteLine("There are string into DerivedClassMask in base access: {0}", base.note);
}
}
与:
public class DerivedClassBaseQuote : DerivedClassMask_BaseAccess
//可以见到这个类派生自上一个派生类
{
//写一个构造函数以改变number的值来观察基类引用的规则:
public DerivedClassBaseQuote()
{
number = 1;
}
}
在主函数调用中采用派生类的基类引用并输出其中的成员来学习派生类的基类引用(其中Derive为命名空间名):
Derive.DerivedClassBaseQuote derivedClassBaseQuote_Out = new Derive.DerivedClassBaseQuote();
Derive.BaseClass derivedClassBaseQuote_Base = (BaseClass) derivedClassBaseQuote_Out;
Derive.DerivedClassMask_BaseAccess derivedClassBaseQuote_MBA = (DerivedClassMask_BaseAccess)derivedClassBaseQuote_Out;
Console.WriteLine("Into BaseClass from DerivedClassBaseQuote , note is {0}", derivedClassBaseQuote_Base.note);
Console.WriteLine("Into DerivedClassMask_BaseAccess from DerivedClassBaseQuote , note is { 0 }", derivedClassBaseQuote_MBA.note);
Console.WriteLine("Into BaseClass from DerivedClassBaseQuote , number after change is { 0 }", derivedClassBaseQuote_Base.number);
此时编译器未报错,但在调试过程中出现了System.FormatException:“Input string was not in a correct format.错误导致上述主函数代码第5,6行无法输出
观察局部变量监视,三个类内部成员均正常。
但将主函数输出代码改为:
Console.WriteLine("Into BaseClass from DerivedClassBaseQuote , note is {0}", derivedClassBaseQuote_Base.note);
Console.WriteLine($"Into DerivedClassMask_BaseAccess from DerivedClassBaseQuote , note is { derivedClassBaseQuote_MBA.note }" );
Console.WriteLine($"Into BaseClass from DerivedClassBaseQuote , number after change is { derivedClassBaseQuote_Base.number }" );
之后编译器正常输出且结果符合预期
Original Comments
Feedback Bot on 12/2/2024, 02:54 AM:
We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.
This issue has been moved from a ticket on Developer Community.
学习C#

类继承过程中设定了一个基类
public class BaseClass : object
{
public string note = "I'm from BaseClass.";
public int number = 0;
}
并设定了两个派生类
public class DerivedClassMask_BaseAccess : BaseClass
{
//屏蔽了基类的note成员。
new public string note = "I'm from DerivedClassMask.";
//下面的方法用于验证调用被屏蔽成员
public void BaseNoteAccess()
{
Console.WriteLine("There are string into DerivedClassMask in base access: {0}", base.note);
}
}
与:
public class DerivedClassBaseQuote : DerivedClassMask_BaseAccess
//可以见到这个类派生自上一个派生类
{
//写一个构造函数以改变number的值来观察基类引用的规则:
public DerivedClassBaseQuote()
{
number = 1;
}
}
在主函数调用中采用派生类的基类引用并输出其中的成员来学习派生类的基类引用(其中Derive为命名空间名):
Derive.DerivedClassBaseQuote derivedClassBaseQuote_Out = new Derive.DerivedClassBaseQuote();
Derive.BaseClass derivedClassBaseQuote_Base = (BaseClass) derivedClassBaseQuote_Out;
Derive.DerivedClassMask_BaseAccess derivedClassBaseQuote_MBA = (DerivedClassMask_BaseAccess)derivedClassBaseQuote_Out;
Console.WriteLine("Into BaseClass from DerivedClassBaseQuote , note is {0}", derivedClassBaseQuote_Base.note);
Console.WriteLine("Into DerivedClassMask_BaseAccess from DerivedClassBaseQuote , note is { 0 }", derivedClassBaseQuote_MBA.note);
Console.WriteLine("Into BaseClass from DerivedClassBaseQuote , number after change is { 0 }", derivedClassBaseQuote_Base.number);
此时编译器未报错,但在调试过程中出现了System.FormatException:“Input string was not in a correct format.错误导致上述主函数代码第5,6行无法输出
观察局部变量监视,三个类内部成员均正常。
但将主函数输出代码改为:
Console.WriteLine("Into BaseClass from DerivedClassBaseQuote , note is {0}", derivedClassBaseQuote_Base.note);
Console.WriteLine($"Into DerivedClassMask_BaseAccess from DerivedClassBaseQuote , note is { derivedClassBaseQuote_MBA.note }" );
Console.WriteLine($"Into BaseClass from DerivedClassBaseQuote , number after change is { derivedClassBaseQuote_Base.number }" );
之后编译器正常输出且结果符合预期
Original Comments
Feedback Bot on 12/2/2024, 02:54 AM:
We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.