【问题标题】:string to char in c#在c#中将字符串转换为char
【发布时间】:2020-03-20 11:55:41
【问题描述】:

我有一个类,我在其中分配货币变量如下:

示例货币格式美元、欧元等

public class codes{
  public char currency{get;set;}
}

所以我有另一个类调用代码将其分配给货币变量,如下所示:

public async Task<Codes> ExecuteAsync(hCommand command){
Codes c = new Codes();
//i do some coding to get the currency back then i assign it as follows from a string
 c.currency = Convert.ToChar(currency);
}

但它会在该行 System.FormatException: 'String must be exactly one character long.' 引发错误,并且输出返回为 "currency": "\u0000"

我怎样才能让它成为一个 char(3)

【问题讨论】:

  • 你应该使用string而不是char
  • 为什么不这样:public string currency { get; set; }?因为你想要像 USDEUR 这样的价值
  • 不,我不能将它用作当前的字符串,因为请求的端点需要它作为 char 字符
  • currency 变量来自哪里?它设置为什么?如果您打算将它分配给一个字符,为什么它是一个字符串?为什么不使用枚举?
  • C# 没有你所说的char(3)。您可以使用string,或者您可以创建自己的类型Currency,其中包含一个确保具有正确格式的字符串(例如,不要太长)。

标签: c# string char


【解决方案1】:

我认为,如果您想存储货币之类的东西,例如“USD”,那么 string 是正确的类型,而不是 char。 Char 存储一个单个字符。

在任何情况下,如果您仍想使用 char,则对于这种特殊情况,您应该使用 chars 数组:

public class codes{
    public char[] currency { get; set; }
}

然后使用 ToCharArray 代替:

c.currency = Convert.ToCharArray();

【讨论】:

    【解决方案2】:

    你可以像这样声明你的类

    public class Сodes
    {
        public string Сurrency { get; set; }
    }
    

    并按以下方式使用

    Codes c = new Codes();
    c.Сurrency = currency;
    

    C# 中的String 表示char 元素的只读序列,您不能将"USD" 之类的字符串分配给单个字符。

    另一种选择是为此使用 char 数组,例如

    public class Сodes
    {
        public char[] Сurrency { get; set; }
    }
    

    并使用ToCharArray 赋值

    Codes c = new Codes();
    c.Сurrency = currency.ToCharArray();
    

    对类和属性名称使用 PascalCase 是一个很好的规则(顺便说一句,您的 codes 类声明与用法示例 Codes 不匹配)。

    如果想将货币代码转换为货币符号也可以参考这个问题3 Digit currency code to currency symbol,如$

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 2013-05-13
      • 2012-01-16
      • 2018-09-02
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2012-03-07
      相关资源
      最近更新 更多