为了账号安全,请及时绑定邮箱和手机立即绑定

c#赋值后值仍然为空

c#赋值后值仍然为空

C#
小怪兽爱吃肉 2021-06-25 18:06:39
我不知道我做错了什么,我正在处理现有的应用程序,并且正在为此方法创建单元测试。在测试方法上,我模拟了视图并在项目上分配了一个值_fakeView.Setup(x => x.Bag.Amount).Returns((decimal)300.32);(注意金额是字符串)我将视图对象传递给演示者并初始化_presenter = new Presenter(_fakeView.Object); _presenter.InitializeForm();在现有的初始化代码上,他们有一行代码来重新分配这样的值:this._view.Amount = this._view.Bag.Amount.ToString();当这条线运行时,即使 this._view.Bag.Amount.ToString() 有值, this._view.Amount 仍然为空。我什至尝试直接设置它this._view.Amount = "asdfgsdf"; but still null请帮忙
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

仅仅因为您为某物赋值,并不意味着它不能是null。this._view.Bag.Amount.ToString()必须返回空值。


这意味着,要么this._view是空,this._view.Bag是null,或者this._view.Bag.Amount是null,或者ToString()由于某种原因失败。您必须检查这些值并找出它的null来源。


另外,如果Amount是string你为什么使用ToString()?


编辑:它的代码可能Amount是这样的:


// Get works as expected but set does literally nothing to change the backing field

private string amount = null;

public string Amount

{

    get => amount;

    set 

    {

         // Do literally nothing

    }

}

或者:


// Get will always return null, but set works as expected

prviate string amount;

public string Amount

{

    get => null;

    set => amount == value;

}

在这两个示例中,如果您仅尝试使用/ ,Amount则将始终返回。nullsetget


有没有SetAmount(string amount)可以调用的方法?


查看完整回答
反对 回复 2021-06-27
  • 2 回答
  • 0 关注
  • 549 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信