相关疑难解决方法(0)

为什么StringBuilder没有IndexOf方法?

我知道我可以调用ToString().IndexOf(...),但我不想创建额外的字符串.我知道我可以手动编写搜索例程.我只是想知道为什么框架中不存在这样的例程.

.net stringbuilder

19
推荐指数
2
解决办法
1万
查看次数

合并字符常量和字符串文字以创建另一个常量

我主要用C#编写代码,但是我在VB.NET中编写了多年.在VB中,我可以组合一个字符常量和一个字符串文字来创建其他常量,这非常方便:

Const FileExtensionSeparatorCharacter As Char = "."c
Const BillingFileTypeExtension As String = FileExtensionSeparatorCharacter & "BIL"
Run Code Online (Sandbox Code Playgroud)

现在我想在C#中做同样的事情:

const char FileExtensionSeparatorCharacter = '.';
const string BillingFileTypeExtension = FileExtensionSeparatorCharacter + "BIL";
Run Code Online (Sandbox Code Playgroud)

但这给了我一个编译器错误:

分配给'BillingFileTypeExtension'的表达式必须是常量

有没有理由我不能在C#中做到这一点?

.net c# vb.net vb.net-to-c#

19
推荐指数
2
解决办法
1835
查看次数

为什么Option Strict On允许分配Double to Single

为什么以下代码不会导致编译错误,即使我有Option Strict On

Dim value As Single = 12345.12345  ' No error
Run Code Online (Sandbox Code Playgroud)

默认情况下,数字文字由编译器解释为Double.从转换DoubleSingle被收缩转换(分配,在这种情况下,实际上是舍入值12345.123).根据MSDN文章,Option Strict On具有以下效果:

将隐式数据类型转换限制为仅扩展转换,禁止后期绑定,并禁止导致Object类型的隐式类型.

基于该描述,我的示例代码应该导致错误.实际上,即使我在文字后明确指定了类型字符,它仍然不会将其视为错误:

Dim value As Single = 12345.12345R   'Still no error, despite the "R"
Run Code Online (Sandbox Code Playgroud)

即便这样也不会导致错误:

Dim value As Single = CDbl(12345.12345)   'Still no error, despite the CDbl() conversion
Run Code Online (Sandbox Code Playgroud)

但是,这确实会导致错误,正如我所期望的那样:

Dim value1 As Double = 12345.12345
Dim value2 As Single = value1    ' Causes "Option Strict On disallows implicit conversions from 'Double' …
Run Code Online (Sandbox Code Playgroud)

.net vb.net visual-studio

7
推荐指数
1
解决办法
324
查看次数

标签 统计

.net ×3

vb.net ×2

c# ×1

stringbuilder ×1

vb.net-to-c# ×1

visual-studio ×1