随笔分类 - C#
摘要:string str1 = @"ftp://admin:111@172.16.145.121";int i = str1.IndexOf("//");int j = str1.LastIndexOf(":");int k = str1.IndexOf("@");label1.Text = str1.Substring(i+2, j-i-2);//adminlabel2.Text = str1.Substring(j+1,k-j-1);//111label3.Text = str1.Substring(k+1,str
阅读全文
摘要:ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。使用ref前必须对变量赋值,out不用。out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。 区别可以参看下面的代码:using System;class TestApp{ static void outTest(out int x, out int y) {//离开这个函数前,必须对x和y赋值,否则会报错。 //y = x; //上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行 x = 1; y =
阅读全文
摘要:5. 正确使用值类型和引用类型这一部分主要参考《Effective C#》,并非本人原创,希望能让你加深对值类型和引用类型的理解。5.1 辨明值类型和引用类型的使用场合C#中,我们用struct/class来声明一个类型为值类型/引用类型。考虑下面的例子:TestType[] testTypes = new TestType[100];如果TestTye是值类型,则只需要一次分配,大小为TestTye的100倍。而如果TestTye是引用类型,刚开始需要100次分配,分配后数组的各元素值为null,然后再初始化100个元素,结果总共需要进行101次分配。这将消耗更多的时间,造成更多的内存碎片。
阅读全文
摘要:从概念上看,值类型直接存储其值,而引用类型存储对其值的引用。这两种类型存储在内存的不同地方。在C#中,我们必须在设计类型的时候就决定类型实例的行为。这种决定非常重要,用《CLR via C#》作者Jeffrey Richter的话来说,“不理解引用类型和值类型区别的程序员将会给代码引入诡异的bug和性能问题(I believe that a developer who misunderstands the difference between reference types and value types will introduce subtle bugs and performance i
阅读全文
浙公网安备 33010602011771号