Bootstrap

C#-WPF 常见类型转换方法(持续更新)

目录

一、普通类型转换

1、Convert类

2、Parse(转String)

3、TryParse(转String)

4、ToString(转String)

5、int转double

 6、自定义类型的显示/隐式转换

二、byte[]转ImageSource

方法一

方法二


一、普通类型转换

1、Convert类

提供了一种安全的方式来执行类型转换,可处理 null值,格式错误,会抛出FormatException

var num = Convert.ToInt32("123");

2、Parse(转String)

Parse 方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常。

var dNum = double.Parse("2.22");

3、TryParse(转String)

TryParse 方法类似于 Parse,但它不会抛出异常,而是返回一个布尔值指示转换是否成功。

double.TryParse("2.22",out var dNum2);

4、ToString(转String)

var str=2.33.ToString();

5、int转double

var num1 = 233*1.0;

 6、自定义类型的显示/隐式转换

public class Test
{
    public double TestValue { get; set; }
    public Test(double d)
    {
        TestValue = d;
    }

    // 隐式转换从Test到double
    public static implicit operator double(Test f)
    {
        return f.TestValue;
    }

    // 显式转换从double到Test
    public static explicit operator Test(double d)
    {
        return new Test(d);
    }
}

    public static void Main(string[] args)
    {
        Test test = new Test(2.33);
        Console.WriteLine(test);
        double test2 = test;   
        Console.WriteLine($"隐式转换 {test2}");
        var test3 = (Test)3.22;
        Console.WriteLine($"显示转换 {test3.TestValue}");
    }

二、byte[]转ImageSource

方法一

 private ImageSource ByteArrayToImageSource(byte[] data)
 {
     System.Drawing.Image image;
     using (MemoryStream ms = new MemoryStream(data))
     {
         image = System.Drawing.Image.FromStream(ms);
     }
     var bitmap = new Bitmap(image);
     return Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
 }

方法二

 private ImageSource ByteArrayToImageSource(byte[] data)
 {
     BitmapImage image = new BitmapImage();
     using (MemoryStream ms = new MemoryStream(data))
     {
         ms.Position = 0;
         image.BeginInit();
         image.CacheOption = BitmapCacheOption.OnLoad;
         image.StreamSource = ms;
         image.EndInit();
         image.Freeze();
     }
     return image;
 }

;