- 浏览: 2159046 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
总结@ 在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# 中作为保留关键字,但是在其他语言中也许不是。
发表评论
-
where T:new() 是什么意思
2014-04-18 09:26 1446where T:new() 是什么意思 经常看到方法后面 ... -
好久没写blog了
2012-05-21 18:43 2好久没写blog了 -
test
2011-03-19 09:48 813testddddddddddd -
QQ自动发日志分析
2011-03-10 18:15 1257首先列举比较重要的问 ... -
test
2011-02-23 18:03 801test -
test
2011-02-23 17:53 873test -
为啥cnblogs的数据不能导了
2011-02-23 11:03 904为啥cnblogs的数据不能导了内容 -
如何保护.net中的dll文件(防破解、反编译)
2010-07-30 00:28 1484.net是一种建立在虚拟机上执行的语言,它直接生成 MSIL ... -
提搞网站访问速度可做哪些优化
2010-08-08 15:30 1116一、 服务器优化 ... -
ASP.NET(c#)如何判断浏览器是否支持cookies
2010-07-29 09:33 1707实例代码: 下面是写cookie ... -
N点虚拟主机管理系统(For Windows2003/2008)功能及介绍
2010-04-09 11:23 2255N点虚拟主机管理系统是 ... -
使用c#+(datagrid控件)编辑xml文件
2010-04-06 09:13 1158对xml文件的记录进行删除,修改,或增加新记录。 利用了d ... -
HTTP代理模块(HTTP Proxy)
2010-04-04 10:19 3043HTTP代理模块(HTTP Proxy ... -
Error 80040154 retreiving COM Class factory
2010-03-29 09:23 22471.ask: Greetings, I have ... -
petshop4.0 详解之二(数据访问层之数据库访问设计)
2010-03-27 11:08 1064在系列一中,我从整体上分析了PetShop的架构设计,并提及了 ... -
分享十五个最佳jQuery幻灯插件和教程
2010-03-25 09:17 2003<p>在网站前端中使用jQuery库已经变得越来越 ... -
20个软件开发常用设计文档大全下载
2009-08-27 10:22 962搜集了一些软件开发的常用文档,分享给大家 总下载地址: h ... -
asp.net 在线 mp3,wma, avi
2009-09-04 13:58 9281.前台js<script type="tex ... -
sql db link string
2009-09-06 21:52 974SQL Server ODBC Standar ... -
ASP.Net2.0小技巧 保持滚动条的位置 焦点移动到某个控件 $符号轻松的使用FindControl
2009-09-11 11:05 1292您可能不知道的ASP.Net2.0 ...
相关推荐
在C#编程中,DataBindings是一个强大的特性,用于在用户界面(UI)控件与数据源之间建立双向数据绑定。这种绑定允许数据源的变化自动反映到UI上,反之亦然,极大地简化了数据驱动的应用程序开发。下面我们将通过实例...
C#中checkboxList控件用法总结 CheckboxList控件是C#中常用的控件之一,主要用于显示多选项列表。以下是关于CheckboxList控件的17种常用方法的总结。 一、添加项 CheckboxList控件可以使用Items.Add方法来添加新...
在 C# 语言中,主要属性是指类或结构体中的成员变量,它们是对象的基本组成部分。主要属性可以分为两类:字段和属性。字段是类或结构体中的变量,而属性是对字段的访问控制。了解主要属性的概念和使用方法是学习 C# ...
本篇文章将详细探讨C# DATAGRID的使用方法,包括基本概念、初始化、数据绑定、自定义列以及事件处理。 一、DataGrid基本概念 DataGrid控件是Windows Forms应用程序中的一个组件,主要用于展示结构化数据。它可以与...
添加SerialPort组件 设置串口属性 串口操作(打开关闭) private void btn_open_Click(object sender, EventArgs e) { if (btn_open.Text == "打开串口") { btn_open.Text = "关闭串口"; serialPort1.Open();...
在探讨C#窗体中`Invoke`和`BeginInvoke`方法的使用及其重要性之前,我们首先需要理解.NET框架下的多线程与GUI操作的基本原则,以及为何这两者在跨线程更新GUI时不可或缺。 #### 一、为什么Control类提供了Invoke和...
要在C#中使用LuaInterface,你需要先将其添加为项目的引用。然后,你可以通过以下步骤进行C#与Lua的交互: 1. 初始化Lua环境:创建一个LuaState实例,这是执行Lua脚本的基础。 ```csharp using LuaInterface; ... ...
总结一下,C#中的委托允许我们传递方法作为参数,实现回调和事件处理。事件是委托的一种特殊形式,常用于组件间的通信,提供了一种安全的发布/订阅机制。Observer设计模式则更广泛地描述了这种观察者和被观察者之间...
总结起来,C#中使用WinGraphviz和dot语言进行绘图是一种高效且灵活的方法,它可以帮助开发者直观地呈现复杂的数据结构和流程。通过学习和实践WinGraphvizDemo示例项目,你可以更好地理解和掌握这一技术,并将其应用...
C#是一种广泛应用于软件开发,尤其是Windows平台和.NET框架中的高级编程语言,由微软公司于2000年推出。它的设计目标是提供一种类型安全、面向对象的编程语言,支持现代软件工程的需求,包括网络分布式应用和组件...
以下是 C# 10 中文文档的知识点总结: 入门和简介 * C# 文档简介 * C# 语言入门 * 类型系统概述 * 命名空间和类 * 记录和接口 * 泛型和匿名类型 * 面向对象的编程概述 * 对象、继承和多形性 程序结构和语法 * ...
"C#常用函数"这部分内容可能会涵盖C#标准库中的常用方法和类,如数组操作、字符串处理、集合类的使用等。"c#对一些文件的操作"可能讲解了如何使用C#读写文件、处理目录、流操作等IO相关的知识。 标签“c#经验总结”...
总结一下,C#中的`string`和`String`虽然在日常使用中差异不大,但理解它们的本质区别对于编写高效的代码至关重要。同时,掌握字符串比较、格式化和正则表达式的使用也是提升C#编程能力的关键点。希望这些知识点能对...
C#调用COM组件方法总结 本篇文章总结了C#调用COM组件的方法...本篇文章总结了C#调用COM组件的方法,涵盖了将COM类型信息转换为.NET元数据、查看元数据、测试程序等多个步骤,并讨论了COM组件在托管代码中的应用价值。
通过以上内容的介绍,我们了解了`DllImport`在C#中的作用及其基本使用方法。它为我们提供了与非托管代码交互的能力,使得我们可以更灵活地利用现有的资源,同时也扩展了C#的应用场景。在实际应用中,我们需要根据...
这些经验总结涵盖了C#语言中的基本类型使用以及系统级命令的运用,对于提升C#项目开发的效率和代码质量有着重要的指导意义。在实际开发中,理解并熟练掌握这些知识,能够帮助开发者写出更稳定、高效的代码。
在C#编程领域,Word文档处理是一个常见的需求,无论是在企业级应用开发还是个人项目中。本总结将探讨C#与Microsoft Word交互的关键知识点,帮助开发者更好地理解和掌握这一技术。 首先,C#与Word交互主要依赖于...
调试此解决方案可以帮助理解整个过程,并了解如何在C#中有效地使用`SendMessage`进行进程间通信。 需要注意的是,虽然`SendMessage`简单易用,但它的同步特性可能导致阻塞,即发送方会等待接收方处理完消息才能继续...
本篇文章将深入探讨C#中常见的工业控件及其使用方法。 一、模拟仪表控件 模拟仪表控件如指针式仪表盘,常用于显示实时数据,如温度、压力等。C#中可以使用第三方库如DevExpress或Telerik提供的控件来实现。设置模拟...
在C#语言中,正则表达式的应用非常广泛,尤其在处理中文字符时,其灵活性和效率更是得到了充分的体现。下面将深入探讨如何使用C#的正则表达式来提取中文字符,这不仅适用于简单的文本处理,也广泛应用于网页抓取、...