本文将分享首选:可为空.HasValue或Nullable!=空吗?的详细内容,并且还将对可为空的对象必须具有一个值什么意思进行详尽解释,此外,我们还将为大家带来关于angular–使用Observa
本文将分享首选:可为空.HasValue或Nullable !=空吗?的详细内容,并且还将对可为空的对象必须具有一个值什么意思进行详尽解释,此外,我们还将为大家带来关于angular – 使用Observable或Observable发出`null`值?、ASP.NET Core 3.X后出现 [The JSON value could not be converted to System.Nullable] 错误、asp.net – 模型绑定 – Nullable decimal和double默认为0而不是null?、c# – MVC ActionResult – Nullable或Optional参数的相关知识,希望对你有所帮助。
本文目录一览:- 首选:可为空.HasValue或Nullable !=空吗?(可为空的对象必须具有一个值什么意思)
- angular – 使用Observable或Observable发出`null`值?
- ASP.NET Core 3.X后出现 [The JSON value could not be converted to System.Nullable] 错误
- asp.net – 模型绑定 – Nullable decimal和double默认为0而不是null?
- c# – MVC ActionResult – Nullable或Optional参数
首选:可为空.HasValue或Nullable !=空吗?(可为空的对象必须具有一个值什么意思)
我一直使用,Nullable<>.HasValue
因为我喜欢语义。但是,最近我正在研究别人现有的代码库,而他们只使用了这些代码库Nullable<>!= null
。
是否有理由优先使用一个,还是纯粹是偏爱?
- int? a;
if (a.HasValue)
// …
与
- int? b;
if (b != null)
// …
答案1
小编典典编译器用对的替换替换空比较HasValue
,因此没有真正的区别。只要做对您和您的同事更具可读性/更有意义的事情。
angular – 使用Observable或Observable发出`null`值?
例
例如,Ionic2 NavController定义:
/** // ... * @returns {Promise} Returns a promise which is resolved when the transition has completed. */ abstract remove(/* ... */): Promise<any>;
在不查看实际实现的情况下,我无法确定是否确实没有发出任何值(例如null或undefined),或者我是否可以从发出的值中提取一些有用的信息.
问题:Observable< void>?
我还没见过Observable< void>或承诺< void>在野外.通过使用它可以清楚地发现没有有用的值.是否有任何技术原因不使用带有可观察量的void类型?或者为什么没有人用它来指定空值?
Are there any technical reasons not to use the void type with observables? Or why is no one using that to designate empty values
使用Promise< void>没有危险据我所知.
ASP.NET Core 3.X后出现 [The JSON value could not be converted to System.Nullable] 错误
ASP.NET Core从2.1 --> 3.1后出现 [The JSON value could not be converted to System.Nullable]错误
解决方案如下:
出现如上的错误,是因为从ASP.NET Core 3.0开始,默认使用了微软内置的JSON序列化和反序列化类库:System.Text.Json,此类库中并没有像Json.NET中实现这些特殊数据类型的JSON转换,所以如果遇到这个问题:
你可以手动安装 Json.NET 这替换 System.Tex.........
asp.net – 模型绑定 – Nullable decimal和double默认为0而不是null?
我的模型有几个可以为空的字段的可空类型.它有可空的整数,双精度和小数.然后我有一个常规表单,其中包含每个属性的文本框,并且它们都默认为空(空字符串).当此表单以所有空表单值发回到我的控制器操作,并且它绑定到我的模型时,空的双精度数和小数数显示为0,空的整数为空.
在我看来,当传入一个空的表单值时,所有可空类型都应默认为null,但即使不是这种情况,看起来非常不一致,双精度和小数的处理方式与整数不同.
解决方法
也就是说,如果您仍然遇到问题并且无法使用MVC4,请尝试制作自己的自定义模型绑定器,以完成您需要做的事情.这是十进制的示例:
public class NullableDecimalBinder : IModelBinder { public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); ModelState modelState = new ModelState { Value = valueResult }; object result = null; if (valueResult.AttemptedValue.Length > 0) { try { // Bonus points: This will bind using the user's current culture. result = Convert.ToDecimal(valueResult.AttemptedValue,System.Globalization.CultureInfo.CurrentCulture); } catch (FormatException e) { modelState.Errors.Add(e); } catch (InvalidOperationException e) { modelState.Errors.Add(e); } } bindingContext.ModelState.Add(bindingContext.ModelName,modelState); return result; } }
然后,要使用它,请将此行添加到Global.asax的Application_Start中:
ModelBinders.Binders.Add(typeof(decimal?),new NullableDecimalBinder());
c# – MVC ActionResult – Nullable或Optional参数
大多数文档似乎都支持使用空合并运算符,例如:
Public ActionResult Demo(int? page) { const int pageSize = 10 var model _db.Model.ToPagedList(page ?? 1,pageSize); return View(model); }
或类似的东西.
我想知道使用默认参数是否有好处,例如
Public ActionResult Demo(int page = 1) { const int pageSize = 10 var model _db.Model.ToPagedList(page,pageSize); return View(model); }
甚至
Public ActionResult Demo(int? page = 1) { const int pageSize = 10 var model _db.Model.ToPagedList(page.Value,pageSize); return View(model); }
虽然在这种情况下将页面作为可空类型似乎是多余的.
使用这些方法中的任何一种是否有任何好处,或者它只是语法糖.
编辑:修复了第三个示例中的null异常
解决方法
根据您的方案,前两个操作方法不会有任何不同,因为参数是页码.如果没有提供参数,人们希望登陆第一页.
但是,如果您关心该值,则不希望使用可选参数.
public ActionResult UserDetails(int? id) { if (!id.HasValue) return View("UserNotFound"); // Or return a message. int userId = id.Value; var user = _userService.GetUserById(userId); // Do something }
您不能在上面的场景中使用可选参数 – public ActionResult UserDetails(int id = 123)
仅供参考:您不想使用公共ActionResult UserDetails(int id).如果没有提供id,它将导致崩溃.
今天关于首选:可为空.HasValue或Nullable !=空吗?和可为空的对象必须具有一个值什么意思的分享就到这里,希望大家有所收获,若想了解更多关于angular – 使用Observable或Observable发出`null`值?、ASP.NET Core 3.X后出现 [The JSON value could not be converted to System.Nullable] 错误、asp.net – 模型绑定 – Nullable decimal和double默认为0而不是null?、c# – MVC ActionResult – Nullable或Optional参数等相关知识,可以在本站进行查询。
本文标签: