gpt4 book ai didi

c# - 为什么 var returnText = value as string 不起作用?

转载 作者:行者123 更新时间:2023-11-30 13:19:36 25 4
gpt4 key购买 nike

我有一个实现 IValueConverter 的 Convert 方法。我的第一句话是var returnText = value as string 无法将值接管为字符串。但是,它不起作用,当我调试时,我发现“value”变量的值没有分配给 returnText,因此 returnText 始终为 null。这很奇怪。有人知道为什么吗?

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var returnText = value as string;

if (!string.IsNullOrEmpty(returnText))
{
.....

最佳答案

问题与解决方案

问题是 as string 不会转换,它只是将对象转换为字符串。如果这不起作用,它将生成 null。该对象本来就必须是string类型,在这种情况下显然不是这样。

一个可能适用于您的情况的选项是像这样在对象上调用 .ToString():

var returnText = value.ToString();

但请注意,这确实取决于您的对象类型,以及 .ToString() 方法实际生成的内容。您可能会得到意想不到的值。


其他建议

正如 Tim 所说,如果对象一开始是 nullToString() 将抛出异常。建议在调用对象上的任何方法之前对此进行测试。像这样的事情会做:

string returnText = null;
if(value != null)
returnText = value.ToString();

延伸阅读

See here for more information .该链接中的一些有用引语:

The as operator is like a cast operation. However, if the conversion isn't possible, as returns null instead of raising an exception.

Note that the as operator performs only reference conversions, nullable conversions, and boxing conversions. The as operator can't perform other conversions, such as user-defined conversions, which should instead be performed by using cast expressions.

关于c# - 为什么 var returnText = value as string 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com