这些都相等吗?在什么情况下,我应该 Select 一个而不是其他的呢?

  • var.ToString()

  • CStr(var)

  • CTYPE(var,string)

  • DirectCast(var,String)


EDIT: Suggestion from NotMyself

  • TryCast(变量,字符串)

推荐答案

这些都略有不同,通常有一个可接受的用法.

  • var.ToString()将为您提供对象的字符串表示,而不管它是什么类型.如果var不是字符串,则使用此选项.
  • CStr(var)是VB字符串转换运算符.我不是一个喜欢VB的人,所以我建议避免使用它,但是它不会真的伤害到任何东西.我觉得基本上跟CType差不多.
  • CType(var, String)将使用任何提供的转换运算符将给定类型转换为字符串.
  • DirectCast(var, String)用于将对象向上投射为字符串.如果你知道一个对象变量实际上是一个字符串,那么使用这个.这与C#中的(string)var相同.
  • TryCast(如@NotMyself所述)类似于DirectCast,但如果变量无法转换为字符串,它将返回Nothing,而不是抛出异常.这与C#中的var as string相同.MSDN上TryCast页的内容也有很好的对比.

.net相关问答推荐

.NET restore/build在使用组织包的Github Action工作流中调用时获得401

获取Ef-Core集合的DeleteBehavior

C#:如何构造异步/等待代码,其中许多请求是针对相同的、返回缓慢的数据发出的,这可以满足所有请求

Azure SignalR 和微服务

如何在选项卡中 Select Winforms NumericUpDown 中的所有文本?

我应该创建一个 DateRange 对象吗?

标签从右向左增长

为什么 StyleCop 建议在方法或属性调用前加上this?

设置日志(log)文件名以在 Log4j 中包含当前日期

生产代码中的 System.Diagnostics.Debug.WriteLine

编译错误:显式实现接口时修饰符 'public' 对此项目无效

序列化私有成员数据

如何在 C# 7 中返回多个值?

Double.TryParse 或 Convert.ToDouble - 哪个更快更安全?

X509Certificate 构造函数异常

解密 .NET clr20r3 异常参数 P1..P10

仅使用 XAML 绘制纯色三角形

Linq to SQL - 返回前 n 行

如何以编程方式删除 WebClient 中的 2 个连接限制

如何向 C# Winforms 中的标签添加提示或工具提示?