C# 是一种类型安全的语言吗?我的例子怎么样

use*_*250 4 c# typesafe

我正在用 C# 测试以下代码,它可以成功运行。我的问题是我可以在下面的例子中将一种类型的数据分配给另一种类型的数据,但为什么它仍然被称为类型安全语言?谢谢。

using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;

    namespace Rextester
    {
        public class Program
        {
            public static void Main(string[] args)
            {
               var intNum = 5;
               var strNum = "5";
               var result = intNum + strNum;         
               Console.WriteLine(result);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

可以编译成功,结果是55。

Nix*_*een 5

要在评论中回答您重复的问题:

  1. C# 是一种类型安全的语言吗?是还是不是。

是的。

  1. 如果答案是肯定的,那么为什么我的代码可以成功编译。这是否意味着我的示例与类型安全问题无关。

您的示例与类型安全问题无关。
首先请注意,这var只是一个语法糖,编译器将根据右侧为您的变量分配正确的类型。

换句话说,您要问为什么以下内容有效:

int intNum = 5;
string strNum = "5";
string result = intNum + strNum;
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为 .NET 支持这种字符串连接,请参阅以下Concat 方法

string result = string.Concat(intNum, strNum);
Run Code Online (Sandbox Code Playgroud)

该方法通过对它们调用 ToString 方法来连接两个参数。