将字符串值分配给整数变量时出错。

3

初始化变量并将int值赋给它,但在运行时将字符串值分配给它会导致错误。

var _formatedBillCode = 101; 

_formatedBillCode="20160919_101_ank"; // assigning string value

2
"var" 在编译时解析,而不是运行时。您不能更改其初始类型推断。 - Swagata Prateek
1
在C#中,“var”与JavaScript不同。它不是动态的。 - A.T.
4个回答

3

var 会在编译时推断其类型。与JS不同,这里的var会在您首先定义为整数时,在编译时推断其类型。

后来如果您尝试更改它的类型,它会抛出一个错误,因为在编译时,它推断的第一个类型是int。您不能将其更改为string

如果您需要很多动态内容,可以像以下内容一样使用dynamic类型:

dynamic a = 1;
Console.WriteLine(a);

// Dynamic now has a different type.
a = new string[0];
Console.WriteLine(a);

// Assign to dynamic method result.
a = Test();
Console.WriteLine(a);

// Use dynamic field.
_y = "carrot";

// You can call anything on a dynamic variable,
// ... but it may result in a runtime error.
Console.WriteLine(_y.Error);

在您的这种情况下;
dynamic_formatedBillCode = 101; 

_formatedBillCode="20160919_101_ank"; // assigning string value

非常感谢。这个链接也很有帮助 link - Ankush Guhe
我发现这篇文章更加简洁明了。 :) - Swagata Prateek

1
使用 dynamic 将数据类型解析推迟到运行时。
    dynamic _formatedBillCode = 101; 

    _formatedBillCode="20160919_101_ank";

0

首先,您将"_formatedBillCode"声明为int类型后,就无法将其更改为字符串类型。 "var"并不是动态的,它只代表类型。 您可以使用"dynamic"代替"var"。


0
你正在尝试将字符串值分配给整数,这样做不会起作用,除非进行强制转换。这将把第二个变量分配为一个字符串,其中整数被转换为字符串:
var _formatedBillCodeInt = 101; 

var _formatedBillCode="20160919_" + _formatedBillCodeInt.ToString() + "_ank"; // assigning string value

还是我误解了问题?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接