Skip to content

在实操中采用Console.WriteLine方法输出派生类的基类引用出的基类成员时出现System.FormatException:“Input string was not in a correct format.错误,更改格式化方式后恢复正常 #110785

@vsfeedback

Description

@vsfeedback

This issue has been moved from a ticket on Developer Community.


学习C#
4c249676-25d1-4d1c-9c46-6ea934315c28.png

47050d82-6c1e-4d4e-99a4-8bab97563945.png

fa794938-fad7-46cd-a3d2-cc24016a2f46.png
类继承过程中设定了一个基类
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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions