在vb.net中将十进制转换为空字符串

在vb.net中将十进制转换为空字符串,vb.net,Vb.net,我确信这很简单,但我正在努力完成这项工作,我尝试过使用convert.tostring、decimal.tostring、ctype(object,type)和cstr(object),但没有成功。我想我正在尝试将decial对象更改为string对象,然后为其指定一个空string值,但总是得到类型不匹配错误 Dim testdecimal as decimal = 0.0 testdecimal = Cstr(testdecimal) testdecimal = string.empty

我确信这很简单,但我正在努力完成这项工作,我尝试过使用convert.tostring、decimal.tostring、ctype(object,type)和cstr(object),但没有成功。我想我正在尝试将decial对象更改为string对象,然后为其指定一个空string值,但总是得到类型不匹配错误

Dim testdecimal as decimal = 0.0
testdecimal = Cstr(testdecimal)
testdecimal = string.empty

您的变量是一个
十进制

它不能容纳字符串


您需要将一个单独的变量
声明为String
来保存字符串。

您不能将十进制转换为空字符串。我不知道您为什么需要执行上述操作,但我会使用
对象

Dim test As Object = 10.12345
test = "Hi"
test = String.Empty;
看起来您只需要创建一个数字的字符串表示,您可以这样做:

'create a decimal variable
Dim testDec As Decimal = 10.12345

'convert decimal to string and then set to empty string
Dim testStr As String = testDec.ToString("N")
testStr = String.Empty

虽然不能将十进制变量的值设置为String.Empty,但可以执行以下操作

Dim TestDecimal As Decimal = 0.0
Dim strStringValue As String = IIf(TestDecimal = 0.0, "", TestDecimal.ToString())
MsgBox(strStringValue)

这里的问题是CSTR将值转换为字符串,而不是对象本身,因此您要做的是获取一个十进制变量,然后将其值转换为字符串,并尝试将字符串重新转换为十进制

Dim testdecimal as decimal = 0.0 'testDecimal is a decimal type and you are assigning a decimal value
testdecimal = Cstr(testdecimal)  'testDecimal is still a decimal but you are trying to put a string in it Here is your first type mismatch
testdecimal = string.empty   ' If this actually had worked it would have made the above line pointless because you just tried to overwrite the value (even though this line did not execute here is your second type mismatch)
您需要做的是:

Dim NewString as String
Dim testdecimal as decimal = 0.0 
NewString = Cstr(testdecimal) 
上面的代码获取十进制值并将其转换为字符串,然后将其存储到字符串变量中

现在来看问题的第二部分,将十进制数转换为空字符串。这是不可能的,因为转换为字符串的0.0仍然是“0.0”字符串。空是“”,它只是一个空字符串

如果您的意思是希望将十进制转换为字符串,但如果值为0.0,则生成一个空字符串,您可以使用If语句轻松地实现这一点

基本上只要做:

Dim NewString as String
Dim testdecimal as decimal = 0.0 

if(testdecimal =0.0) Then
NewString = String.Empty
Else
NewString = Cstr(testdecimal) 
END IF

这是C#,这是个坏主意。将其更改为VB。并没有说这是个好主意——只是向OP展示了需要做什么。我提供了一个更好的代码,为什么要麻烦将十进制转换成字符串,然后覆盖它呢?为什么不将testStr设置为String=String.EmptyI呢?我只是在遵循OP的示例代码。我也在想,但那正是他们想要的……;)