在c#中,是一个构造函数,能够在某些情况下在不同类型之间进行隐式强制转换

本文关键字:之间 同类型 情况下 转换 构造函数 一个 | 更新日期: 2023-09-27 18:12:22

在c#中,在某些情况下,构造函数是否能够在运行时在不同类型之间进行隐式转换?比如从type 'System '输入。类型'到一些对象或向上铸造一些对象到它的父或从'int'到'double'?

在c#中,是一个构造函数,能够在某些情况下在不同类型之间进行隐式强制转换

为了匹配在重载解析过程中没有直接匹配的构造函数(或任何方法),编译器会在可能的情况下在后台添加显式强制转换。

示例(源):

using System;
public class C 
{
    public void M() 
    {
        int num = 1;
        var f = new Foo(num);
    }
}
public class Foo
{
    public Foo(double a)
    {
    }
}

编译生成的代码:

public class C
{
    public void M()
    {
        int num = 1;
        Foo foo = new Foo((double)num);
    }
}
public class Foo
{
    public Foo(double a)
    {
    }
}