易截截图软件、单文件、免安装、纯绿色、仅160KB

c# ref参数传递真面目

   c#中两种参数传递方式,ref和非ref,一些人会觉得是否采用ref传递会有更高的效率,实际呢?下面分别看下。
   1、值类型参数void FuncA(int iArg1,double dArg1,ref int iArg2,ref double dArg2)。
       iArg1和dArg1不加ref,此时的确会在栈里拷贝一份值,但同时要注意到,当添加ref修饰,编译器会创建一个指针指向iArg2和dArg2,然后把指针值拷贝入栈。对于<=指针大小的数据,实际上会造成更大的拷贝空间成本,而时间上也不能有什么提高。而对于大于指针大小的值类型。实际上由于栈的效率,这点根本不会形成问题,尤其在服务器普遍64位的情况下,即使double也只是8个字节而已。
   2、引用类型,实际编译器本身对引用的类型的参数传递已经是仅传递指针,并不会多拷贝任何东西,有什么理由说明ref会有更高效率呢?而使用ref后会创建指针的指针,反而要多一次解引用。
   还有一点,实际上ref修饰会对编译器优化造成干扰,尤其本可以使用内联的函数可能因ref而放弃内联。
   以上就性能而言,就设计而讲,ref 会造成数据被修改的危险。
   总而言之,非必要的使用ref可谓的不偿失,纵观framework的代码,有几个地方使用ref了?
  


相关文档:

C#与Flash交互

C#与Flash交互 (转自小磊在线)
C#与Flash交互
前段日子公司要求做一个C#与Flash交互的东西,用来C#与短信猫通讯将数据传到Flash上显示与操作的应用。
第一步C#添加组件
打开VS2005-工具-选择工具箱项-COM组件-选择Shockwave Flash Object-确定
添加好组件往场景上拖放,如果提示注册需求注册
c# 注册控件-在运行输 ......

C# Home / 详解Asp.Net Sql数据库连接字符串

1.连接数据库文件
<add name="LocalSqlServer" connectionString="Data Source=.\SQLExpress;Integrated Security=True;AttachDBFilename=|DataDirectory|TimeTracker.mdf;User Instance=true" />
SqlConnectionStringBuilder实例化时,要用到connectionString,如:SqlConnectionStringBuild builder = new SqlCon ......

C#获取字符串的长度

C#获取字符串的长度
作者:ylclass  来源:博客园  发布时间:2009-10-30 16:25  阅读:193 次  原文链接   [收藏]  
1、    使用g.MeasureString()获得
使用MeasureString测量出来的字符宽度,总是比实际宽度大一些,而且随着字符 ......

ASP.NET验证码(C#)

* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */
 public class ValidateCode : System.Web.UI.Page
 {
  private void Page_Load(object sender, System.EventArgs e)
  {
   this.CreateCheckCodeImage(GenerateCheckCode());
  }
&nb ......

C#中的==,!=等符号重载,以及重载等号操作

通过一个实际的例子来介绍。其中重载==,!=,Equal,GetHashCode函数。
public class Record
{
public string[] arr = null;
public bool hasEqual = false;
//重载一个下标运算符号
public string this[int index]
{
get
{
return arr[index];
}
set
{
arr[index] = value;
}
}
public override int GetHas ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号