对@ 的作用不是很清晰,学习了一下,站在巨人的肩膀上总结如下:

1.忽略转义字符

例如

  1. string fileName = "D:\\文本文件\\text.txt";

使用@后

  1. string fileName = @"D:\文本文件\text.txt";

2.让字符串跨行

例如

  1. string strSQL = "SELECT * FROM HumanResources.Employee AS e"
  2. + " INNER JOIN Person.Contact AS c"
  3. + " ON e.ContactID = c.ContactID"
  4. + " ORDER BY c.LastName";

使用@后

  1. string strSQL = @"SELECT * FROM HumanResources.Employee AS e
  2. INNER JOIN Person.Contact AS c
  3. ON e.ContactID = c.ContactID
  4. ORDER BY c.LastName";

3.在标识符中的用法

C#是不允许关键字作为标识符(类名、变量名、方法名、表空间名等)使用的,但如果加上@之后就可以了
例如

  1. public static void @static(int @int)
  2. {
  3. if (@int > 0)
  4. {
  5. System.Console.WriteLine("Positive Integer");
  6. }
  7. else if (@int == 0)
  8. {
  9. System.Console.WriteLine("Zero");
  10. }
  11. else
  12. {
  13. System.Console.WriteLine("Negative Integer");
  14. }
  15. }

4.在SQL T-CODE中的用法

  1. comStr = $@"SELECT vrs.*, BinToDefect.XML_BinCode,BinToDefect.XML_Defect_Name, BinToDefect.Result, aos.Rework_Status
  2. FROM ( SELECT * FROM [CustomDB].[dbo].[Orbo_VRS_Data]
  3. WHERE ID > '{startId.ToString()}'
  4. AND DateEnterMES BETWEEN @startTime AND @endTime
  5. AND LotNO_MES='605000228877'
  6. AND Classify !=''
  7. AND BC_2DID !='' AND BC_2DID !='0' AND BC_2DID !='-1'
  8. AND Unit_ID !='' AND Unit_ID !='0' AND Unit_ID !='-1'
  9. AND Array_ID !='' AND Array_ID !='0' AND Array_ID !='-1' ) as vrs
  10. LEFT join [CustomDB].[dbo].[Orbo_AOS_Data] as aos
  11. ON vrs.BC_2DID=aos.BC_2DID
  12. AND vrs.Array_ID = aos.Array_ID
  13. AND vrs.Unit_ID = aos.Unit_ID
  14. AND vrs.x = aos.x
  15. AND vrs.y = aos.y
  16. LEFT join [CustomDB].[dbo].[MES_DefectToBinCode] as BinToDefect
  17. ON BinToDefect.Classify = vrs.Classify AND BinToDefect.Station='VRS'
  18. ORDER BY vrs.BC_2DID,vrs.Layer_Name,vrs.Array_ID,vrs.Unit_ID,vrs.x,vrs.y";