之间有什么区别
ng-disabled
和
private async void Button_Click(object sender, RoutedEventArgs e)
{
var t = new TextBlock();
t.Text = "TEXT1";
var t2 = new TextBlock();
t2.Text = "TEXT2";
dummyStack.Children.Add(t);
await Task.Delay(100);
// This can be any synchronous work
Thread.Sleep(5000);
dummyStack.Children.Add(t2);
}
他们都编译并成功运行。
答案 0 :(得分:85)
float
这是float
字面值,这意味着直接为float f = (float) 99.32 ;
值赋值的浮点变量。
float
这是一个double
变量,分配了float
值,在分配之前会转换为float f = (float) 99.32;
。
答案 1 :(得分:25)
差异可能会被优化掉,但在第一种情况下,你有一个双文字类型,当你在第二种情况下有一个浮点文字时,它是一个浮动文字类型。
如果没有优化,您将在第二个示例中的代码中获得类型转换。
然而,有一些极端情况,结果可能(取决于舍入模式)略有不同。如果您的数字无法准确表示,您将在第一种情况下四舍五入 - 首先将十进制表示舍入为double,然后将该四舍五入为浮点数,而在第一种情况下直接舍入十进制表示到了漂浮物。
答案 2 :(得分:11)
在第一种情况下,没有强制转换99.32
被解释为double而不是float。
双文字被渲染为浮动。
在第二种情况下,您有一个后缀f
,以确保编译器将99.32
视为float。
答案 3 :(得分:11)
在99.32
行中,默认情况下,文字double
被创建为float
类型,然后投放到float f = 99.32f ;
。
在第float
行中,由于f
中的99.32f
结尾,因此文字被创建为double f = 99.32;
类型,并且不需要任何类型转换。
后者类似于撰写double
,因为您将example
类型直接分配给匹配类型的变量。
答案 4 :(得分:10)
没有后缀的浮点文字默认为double
类型。
因此,说明float f = (float) 99.32;
您首先将{strong>显式文字99.32
double
类型float
投射到f
,然后将其分配给变量float f = 99.32;
。
陈述f
做同样的事情,但在这种情况下,类型之间的转换是隐式完成的。
如果你想避免隐式转换,你应该使用float f = 99.32f;
后缀来定义你的文字(即Stephen Harper
)
答案 5 :(得分:7)
区别在于文字99.32
的类型为double,而文字99.32f
的类型为float。
第一个语句将float文本赋给float变量。没什么特别的。
第二个语句将double文字强制转换为float,并将结果赋给float变量。
就标准而言,您可以将double文本分配给float变量,而无需自己显式地转换它。在那种情况下,发生隐式转换。例如。 :
float f = 99.32;
你甚至可以这样做:
float f = (double) 10.5f;
并且右侧仍然隐式转换为浮动。
请注意,大多数现代编译器都会优化它们,因此表示浮动通常是风格和偏好的问题。 保持一致。