首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何摆脱转换开销?

如何摆脱转换开销?
EN

Stack Overflow用户
提问于 2010-10-28 23:41:28
回答 2查看 120关注 0票数 0

举个例子:

代码语言:javascript
运行
复制
customer.Salary = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));

(1)为什么在C#中我们总是需要把.ToString()放在正确的地方?

(2) Convert.To...它不会产生不必要的管理费用吗?

在下面给出的代码中:在接受用户输入后,它给出错误:“输入字符串格式不正确”。

代码语言:javascript
运行
复制
    // Main begins program execution.
    public static void Main()
    {
        Customer customer = new Customer();
        // Write to console/get input
        Console.Write("Enter customer's salary: ");
        customer.Salary = Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
        Console.WriteLine("Salary in class variable is: {0}", customer.Salary.ToString()); 
        Console.Read();
    }

    class Customer
    {
        public Decimal Salary { get; set; }
    }

同样,我必须使用以下两种方法:

代码语言:javascript
运行
复制
string sal =  Convert.ToDecimal(string.Format("{0}! ", Console.ReadLine().ToString()));
customer.Salary = Convert.ToDecimal(sal);

或者,我必须在Customer类中更改数据类型本身。

泛型中的任何东西都可以避免这种开销吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-28 23:44:00

  1. 你不需要调用.ToString().
  2. Yes,,它会调用。

你在试着写

代码语言:javascript
运行
复制
customer.Salary = Decimal.Parse(Console.ReadLine());

您当前的代码执行以下操作:

  • Console.ReadLine():从控制台读取一行,返回一个object.
  • (...).ToString()返回相同的String!.
  • Convert.ToDecimal((...)):返回一个包含原始字符串的新String对象,然后尝试将其解析为Decimal值。

由于字符串以!结尾,因此失败

票数 4
EN

Stack Overflow用户

发布于 2010-10-28 23:50:06

我认为如果您使用Decimal.ParseDecimal.TryParse进行转换,而不是依赖Convert.ToDecimal,您会更高兴。你可以这样写:

代码语言:javascript
运行
复制
Decimal tempSal;
string sal = Console.ReadLine();
if (Decimal.TryParse(sal, out tempSal))
{
    customer.Salary = tempSal;
}
else
{
    // user entered bad data
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4044541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档