zoukankan      html  css  js  c++  java
  • c#中@标志的作用

      前言:今日遇到了一个问题:怎么将含有单引号和双引号的复杂sql放入,string.farmat(@"");  中?   这其中遇到了一个关键字@,  我使用@的目的是让sql语句可以换行写,但是遇到了里面含有双引号的问题。

    突然忘了怎么该把双引号给转义了,使用反斜杠:""  不好用,因为有@关键字,   在@关键字中想转义双引号,需要使用一对才行,后台百度查询了其他道友的文章,记录下做分享吧:

    重点:在字符串前加@,字符串中的转义字符串将不再转义。例外:""仍将转义为",{{和}}仍将转义为{和}。在同时使用字符串内插和逐字字符串时,$要在@的前面

    道友文章:https://www.cnblogs.com/zhaochenxi/p/10570482.html

    参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/verbatim

    1、在变量名前加@,可以告诉编译器,@后的就是变量名。主要用于变量名和C#关键字重复时使用。

    string[] @for = { "John", "James", "Joan", "Jamie" };
    for (int ctr = 0; ctr < @for.Length; ctr++)
    {
       Console.WriteLine($"Here is your gift, {@for[ctr]}!");
    }
    // The example displays the following output:
    //     Here is your gift, John!
    //     Here is your gift, James!
    //     Here is your gift, Joan!
    //     Here is your gift, Jamie!

    2、在字符串前加@,字符串中的转义字符串将不再转义。例外:""仍将转义为",{{和}}仍将转义为{和}。在同时使用字符串内插和逐字字符串时,$要在@的前面

    string filename1 = @"c:documentsfilesu0066.txt";
    string filename2 = "c:\documents\files\u0066.txt";
    
    Console.WriteLine(filename1);
    Console.WriteLine(filename2);
    // The example displays the following output:
    //     c:documentsfilesu0066.txt
    //     c:documentsfilesu0066.txt

    3、类似于第一条,用于在命名冲突时区分两个特性名。特性Attribute自定义的类型名称在起名时应以Attribute结尾,例如InfoAttribute,之后我们可以用InfoAttribute或Info来引用它。但是如果我们定义了两个自定义特性,分别命名Info和InfoAttribute,则在使用Info这个名字时,编译器就不知道是哪个了。这时,如果想用Info,就用@Info,想用InfoAttribute,就把名字写全。

    using System;
    
    [AttributeUsage(AttributeTargets.Class)]
    public class Info : Attribute
    {
       private string information;
       
       public Info(string info)
       {
          information = info;
       }
    }
    
    [AttributeUsage(AttributeTargets.Method)]
    public class InfoAttribute : Attribute
    {
       private string information;
       
       public InfoAttribute(string info)
       {
          information = info;
       }
    }
    
    [Info("A simple executable.")] // Generates compiler error CS1614. Ambiguous Info and InfoAttribute. 
    // Prepend '@' to select 'Info'. Specify the full name 'InfoAttribute' to select it.
    public class Example
    {
       [InfoAttribute("The entry point.")]
       public static void Main()
       {
       }
    }
  • 相关阅读:
    在VisualStudio2013,2015中如何安装自定义项目模板
    获取assemblies信息in .net core
    Entity Framework Code Migration 新建、更新数据库
    TFS命令tf:undo(强制签入签出文件)
    教你在Android手机上使用全局代理
    双因素认证(2FA)教程
    ubuntu 禁用 guest 账户
    ffmpeg综合应用示例(三)——安卓手机摄像头编码
    linux 查看cpu的使用百分比
    加密货币 (Cryptocurrency) 市值 (market capitalization) 列表
  • 原文地址:https://www.cnblogs.com/lxhbky/p/11996513.html
Copyright © 2011-2022 走看看