2016-09-19 57 views
3

初始化變量和int值分配給它並在運行時分配一個字符串值它給錯誤。錯誤分配字符串值整數變量

var _formatedBillCode = 101; 

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

'var'在編譯時解析,而不是運行時。你不可能改變它的初始類型推斷。 –

+1

在c#中,「var」與javascript不同。這不是動態 –

回答

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 
+0

非常感謝你。這鏈接也很有幫助[鏈接](http://www.c-sharpcorner.com/uploadfile/b1df45/var-vs-dynamic-keywords-in-c-sharp) –

+0

我發現[this](https://blogs.msdn.microsoft.com/jennifer/2010/06/16/what-is-the-difference-between-var-and-dynamic-in-c/)更多簡明扼要。 :) –

1

使用dynamic將數據類型解析爲運行時。

dynamic _formatedBillCode = 101; 

    _formatedBillCode="20160919_101_ank"; 
0

正如你首先聲明「_formatedBillCode」如int,你不能後更改類型爲字符串,「無功」不是動態的,它只是代表類型。 你可以使用「動態」而不是「var」。

0

您試圖將一個字符串值賦給一個int,這不會工作,而鑄造的。這將賦予第二個變量與整數字符串轉換爲字符串:

var _formatedBillCodeInt = 101; 

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

還是我誤解了問題?