error CS1056: 意外的字符“$” Unexpected character ‘$‘

解决

先说原因,c#的字符串拼接方式中,有一种叫内插字符串 interpolation ,形如:

string name = "张三";
int age = 22;
string gender = "男";
string result2 = $"{name} {age} {gender}";

正常编译运行的结果,result2的值为张三 22 男
但是这种语法并不是支持所有的编译器/.net运行环境,所以在环境变迁的时候,会报语法错误。

error CS1056: Unexpected character '$'
// 或
error CS1056: 意外的字符“$”

解决:
- 尝试切换开发编译环境下的一些环境依赖配置。 需要应对新环境可能带来的的其他问题。
- 手动修改所有内插字符串为String.Format()方式。 手动工作量大,易出错。

Intro

两种场景:多个变量拼接为一个字符串变量,多个变量一次性输出。
不同语言有自己的多种写法。
所有语言通用的方式是使用字符串拼接符+,不过会有性能影响、代码书写麻烦、阅读纷乱等缺点。

  • JavaScript中的模板字符串
    console.log()本身就可以传入多个变量进行输出。

  • Python中的%x占位符 result = "%s %d"%("asdasd", 22)
    以及format() result = 'Hello {0}! My name is {1}.'.format('World', 'test')

  • Java中的System.out.printf("%s %d", "name zhang", 22)
    String result = String.format("%s %d", "name zhang", 22)

而c#中,也有几种方式。

c#中的字符串拼接方式

  • 字符串拼接符 +
  • public static String Format(String format, object? arg0) 默认推荐(最通用)
string name = "张三";
int age = 22;
string gender = "男";

string result = String.Format("{0} {1} {2}", name, age, gender);
Console.WriteLine(result);	// "张三 22 男"

能否支持该语法,取决于使用的编译器版本.net运行环境

比如:在VSCode中配置了C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe作为.cs源码文件的编译器。

C:\>C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
Microsoft (R) Visual C# Compiler version 4.8.3752.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240

warning CS2008: 未指定源文件
error CS1562: 必须为没有源的输出指定 /out 选项

此时使用内插字符串是会报错的:

error CS1056: Unexpected character '$'
// 或:
error CS1056: 意外的字符“$”

而使用 Visual Studio 新建 ASP.NET Web 应用程序 (.NET Framework) C# 项目时,要选一个.net framework的版本:
在这里插入图片描述

但是我在Visual Studio中使用这种语法,编译通过+运行成功。
(Visual Studio中编译c#项目使用的编译器/.net运行环境,我还不知道查看/修改方式)。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值