`
pcajax
  • 浏览: 2159046 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

总结@ 在C# 中的用法

阅读更多

总结@ 在C# 中的用法


 

一 字符串中的用法
    1. 地球人都知道 C# 中 字符串常量可以以 @ 开头声名,这样的优点是转义序列“不”被处理,按“原样”输出,即我们不需要对转义字符加上 \ (反斜扛),就可以轻松coding。如,

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->string filePath = @"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"

 

    2. 如要在一个用 @引起来的字符串中包括一个双引号,就需要使用两对双引号了。这时候你不能使用 \ 来转义爽引号了,因为在这里 \ 的转义用途已经被 @  “屏蔽”掉了。如,


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@"""Ahoy!"" cried the captain." // 输出为: "Ahoy!" cried the captain.

   

     有点像SQL中的单引号常量处理方式:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->DECLARE @msg varchar(100)
SET @msg
= ''Ahoy!'' cried the captain.' -- 输出为: 'Ahoy!' cried the captain.

 

    3. @会识别换行符其实这个特性,我不知道怎么描述,只是偶然发现的,先看下面的代码吧:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->string script = @"
<script type=""type/javascript"">
function doSomething()
{
}
</script>
";

   

    安逸吧,在cs文件中写js,结构就很清晰了,正常情况我们是这样coding的:

 


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->string script2 =
"<script type=\"type/javascript\">function doSomething(){}</script>";
// or
string script3 =
"<script type=\"type/javascript\">" +
"function doSomething(){ " +
"}</script>";

 

    通常我们会选择后者,因为js代码一般比较长,或者方法体很大,或者需要连接其他变量,这样结构比较清晰。注意:如果“拼接”的次数很多,应该考虑使用StringBuilder了,有助于提高性能。还有一种场景,也很常见,在程序中拼接 SQL 语句,如


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->private const string SQL_INS_USER = @"
INSERT INTO t_User([UserName], [Password], Email)
VALUES(@UserName, @Password, @Email)
";

 

哈哈,这样就像写存储过程一般,保持相当高的代码清晰度。然而,我们需要关注一个问题:字符串长度看下面的测试代码:

 

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->private const string SQL_INS_USER1 = @"
INSERT INTO t_User([UserName], [Password], Email)
VALUES(@UserName, @Password, @Email)
";

private const string SQL_INS_USER2 = @"INSERT INTO t_User([UserName], [Password], Email)
VALUES(@UserName, @Password, @Email)
";

private const string SQL_INS_USER3 = @"INSERT INTO t_User([UserName], [Password], Email) VALUES(@UserName, @Password, @Email)";

static void Main(string[] args)
{
Console.WriteLine(SQL_INS_USER1.Length);
// 126
Console.WriteLine(SQL_INS_USER2.Length); // 112
Console.WriteLine(SQL_INS_USER3.Length); // 86
}

 

可以看到三个字符串长度分别相差了,14=126-112和26=112-86,注意观察了,在代码编辑器中,SQL_INS_USER1 中第一个换行符号之后,我缩进13个空格(INSERT之前),而
SQL_INS_USER2 中第一个换行符号之后,我缩进25个空格(VALUES之前),
那么,加上一个换行符,刚刚好 14和26
My GOD!
如此编写代码,虽然提高了代码的清晰度和简便性,却无行中带来了另一个问题:字符长度!很多场景下我们希望字符串越短越好,如,通过ADO.NET 发送 SQL 语句给数据库执行。
所以还是慎用之

二 标识符中的用法
update 2007年7月29日
在 C#  规范中, @  可以作为标识符(类名、变量名、方法名等)的第一个字符,以允许C# 中保留关键字作为自己定义的标识符。

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->class @class
{
public static void @static(bool @bool)
{
if (@bool)
System.Console.WriteLine(
"true");
else
System.Console.WriteLine(
"false");
}
}
class Class1
{
static void M()
{
cl\u0061ss.st\u0061tic(
true);
}
}

 

注意,@ 虽然出现在标识符中,但不作为标识符本身的一部分。
因此,以上示例,定义了一个名为 class 的类,并包含一个名为 static 的方法,以及一个参数名为了 bool 的形参。
这样,对于跨语言的移植带来了便利。因为,某个单词在 C#  中作为保留关键字,但是在其他语言中也许不是。

 

分享到:
评论

相关推荐

    C#中DataBindings用法实例分析

    在C#编程中,DataBindings是一个强大的特性,用于在用户界面(UI)控件与数据源之间建立双向数据绑定。这种绑定允许数据源的变化自动反映到UI上,反之亦然,极大地简化了数据驱动的应用程序开发。下面我们将通过实例...

    C#中checkboxList控件用法总结

    C#中checkboxList控件用法总结 CheckboxList控件是C#中常用的控件之一,主要用于显示多选项列表。以下是关于CheckboxList控件的17种常用方法的总结。 一、添加项 CheckboxList控件可以使用Items.Add方法来添加新...

    C#设计技巧总结

    在 C# 语言中,主要属性是指类或结构体中的成员变量,它们是对象的基本组成部分。主要属性可以分为两类:字段和属性。字段是类或结构体中的变量,而属性是对字段的访问控制。了解主要属性的概念和使用方法是学习 C# ...

    c# DATAGRID使用方法

    本篇文章将详细探讨C# DATAGRID的使用方法,包括基本概念、初始化、数据绑定、自定义列以及事件处理。 一、DataGrid基本概念 DataGrid控件是Windows Forms应用程序中的一个组件,主要用于展示结构化数据。它可以与...

    c#中串口组件的使用方法总结及上位机制作方法

    添加SerialPort组件 设置串口属性 串口操作(打开关闭) private void btn_open_Click(object sender, EventArgs e) { if (btn_open.Text == "打开串口") { btn_open.Text = "关闭串口"; serialPort1.Open();...

    C#窗体中Invoke和BeginInvoke方法详解

    在探讨C#窗体中`Invoke`和`BeginInvoke`方法的使用及其重要性之前,我们首先需要理解.NET框架下的多线程与GUI操作的基本原则,以及为何这两者在跨线程更新GUI时不可或缺。 #### 一、为什么Control类提供了Invoke和...

    C# lua库 支持中文函数名中文变量

    要在C#中使用LuaInterface,你需要先将其添加为项目的引用。然后,你可以通过以下步骤进行C#与Lua的交互: 1. 初始化Lua环境:创建一个LuaState实例,这是执行Lua脚本的基础。 ```csharp using LuaInterface; ... ...

    C#中的委托、事件和Observer设计模式使用方法示例

    总结一下,C#中的委托允许我们传递方法作为参数,实现回调和事件处理。事件是委托的一种特殊形式,常用于组件间的通信,提供了一种安全的发布/订阅机制。Observer设计模式则更广泛地描述了这种观察者和被观察者之间...

    C#中使用WinGraphviz实现dot脚本语言绘图

    总结起来,C#中使用WinGraphviz和dot语言进行绘图是一种高效且灵活的方法,它可以帮助开发者直观地呈现复杂的数据结构和流程。通过学习和实践WinGraphvizDemo示例项目,你可以更好地理解和掌握这一技术,并将其应用...

    c#全面经典总结

    C#是一种广泛应用于软件开发,尤其是Windows平台和.NET框架中的高级编程语言,由微软公司于2000年推出。它的设计目标是提供一种类型安全、面向对象的编程语言,支持现代软件工程的需求,包括网络分布式应用和组件...

    c#10 中文文档 C#最新语法

    以下是 C# 10 中文文档的知识点总结: 入门和简介 * C# 文档简介 * C# 语言入门 * 类型系统概述 * 命名空间和类 * 记录和接口 * 泛型和匿名类型 * 面向对象的编程概述 * 对象、继承和多形性 程序结构和语法 * ...

    号称最经典c#总结可提高水平

    "C#常用函数"这部分内容可能会涵盖C#标准库中的常用方法和类,如数组操作、字符串处理、集合类的使用等。"c#对一些文件的操作"可能讲解了如何使用C#读写文件、处理目录、流操作等IO相关的知识。 标签“c#经验总结”...

    C#的一些小总结有关于C#中一些string和String的比较等等

    总结一下,C#中的`string`和`String`虽然在日常使用中差异不大,但理解它们的本质区别对于编写高效的代码至关重要。同时,掌握字符串比较、格式化和正则表达式的使用也是提升C#编程能力的关键点。希望这些知识点能对...

    C#调用COM组件方法总结

    C#调用COM组件方法总结 本篇文章总结了C#调用COM组件的方法...本篇文章总结了C#调用COM组件的方法,涵盖了将COM类型信息转换为.NET元数据、查看元数据、测试程序等多个步骤,并讨论了COM组件在托管代码中的应用价值。

    C# DllImport的用法

    通过以上内容的介绍,我们了解了`DllImport`在C#中的作用及其基本使用方法。它为我们提供了与非托管代码交互的能力,使得我们可以更灵活地利用现有的资源,同时也扩展了C#的应用场景。在实际应用中,我们需要根据...

    C#_经典项目经验总结

    这些经验总结涵盖了C#语言中的基本类型使用以及系统级命令的运用,对于提升C#项目开发的效率和代码质量有着重要的指导意义。在实际开发中,理解并熟练掌握这些知识,能够帮助开发者写出更稳定、高效的代码。

    C#word大总结

    在C#编程领域,Word文档处理是一个常见的需求,无论是在企业级应用开发还是个人项目中。本总结将探讨C#与Microsoft Word交互的关键知识点,帮助开发者更好地理解和掌握这一技术。 首先,C#与Word交互主要依赖于...

    C#中使用SendMessage在进程间传递数据的实例

    调试此解决方案可以帮助理解整个过程,并了解如何在C#中有效地使用`SendMessage`进行进程间通信。 需要注意的是,虽然`SendMessage`简单易用,但它的同步特性可能导致阻塞,即发送方会等待接收方处理完消息才能继续...

    C#常用工业控件及使用方法

    本篇文章将深入探讨C#中常见的工业控件及其使用方法。 一、模拟仪表控件 模拟仪表控件如指针式仪表盘,常用于显示实时数据,如温度、压力等。C#中可以使用第三方库如DevExpress或Telerik提供的控件来实现。设置模拟...

    C#正则提取中文

    在C#语言中,正则表达式的应用非常广泛,尤其在处理中文字符时,其灵活性和效率更是得到了充分的体现。下面将深入探讨如何使用C#的正则表达式来提取中文字符,这不仅适用于简单的文本处理,也广泛应用于网页抓取、...

Global site tag (gtag.js) - Google Analytics