首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c# System.Int32的行为会因来自何处而有所不同?(wpf/xaml)

c# System.Int32的行为会因来自何处而有所不同?(wpf/xaml)
EN

Stack Overflow用户
提问于 2022-04-13 08:31:10
回答 1查看 69关注 0票数 0

我使用的是WPF,我有一个转换器,用于多绑定的子字符串。在这个转换器中,我使用简单的do值-值1,但是在完成此转换之前,我需要将数据转换为相同的数据类型,如下所示:

代码语言:javascript
运行
复制
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        if (values[0] is short)
        {
            return (short)values[0] - (short)values[1];
        }
        if (values[0] is float)
        {
            return (float)values[0] - (float)values[1];
        }
        if (values[0] is double)
        {
            return (double)values[0] - (double)values[1];
        }
        return (int)values[0] - (int)values[1];
    }

但是,当我试图在没有绑定/路径/引用/资源的情况下通过System.Int32将.xaml转换成双倍时,就会出现问题;

代码语言:javascript
运行
复制
                        <TextBox.Width>
                            <MultiBinding Converter="{StaticResource Subtraction}">
                                <Binding Path="ActualWidth" ElementName="b"/>
                                <Binding>
                                    <Binding.Source>
                                        <sys:Int32>17</sys:Int32>
                                    </Binding.Source>
                                </Binding>
                            </MultiBinding>

系统信息系统是: xmlns:sys="clr-namespace:System;assembly=mscorlib“

所以我做了一些测试,把它添加到转换器中:

这给了我这些结果,注意"test“和”1值“都是完全相同的数据类型(System.Int32),但它们的行为不同。一种导致错误,另一种则不会。有什么关系?

使用System.Convert.ToDouble()代替使用(double)进行转换解决了这个问题。但我还是想知道为什么另一种方式不起作用。难道Int32和另一个Int32的行为不应该完全一样吗?造成这种不同行为的潜在原因是什么?

EN

Stack Overflow用户

发布于 2022-04-13 13:39:58

值是一个装箱对象的数组。在转换数据类型之前,需要先取消对象的装箱。

由于values1是一个int,所以首先需要用( int )解压缩它,然后可以将int转换为double。

代码语言:javascript
运行
复制
 (double)(int)values[1]

但是,只有当被装箱到values1中的数据类型是整数时,这才能工作。因此,最好使用System.Convert.ToDouble()。

对装箱值的更多解释:为什么我们需要在C#中进行装箱和取消装箱?

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71854316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档