徐宝吧 关注:4贴子:645
  • 4回复贴,共1

C#点滴积累

只看楼主收藏回复

字符串相关

在 Java 和 C# 中,字符串类型表现出相似的行为,只有一些细微的差别。二者的字符串类型均是不可改变的,这意味着一旦字符串创建完毕,就不能改变字符串的值。在二者的实例中,看起来像修改字符串实际内容的方法实际上创建一个新的字符串供返回,而保留原始的字符串不变。在 C# 和 Java 中,比较字符串值的过程是不同的。在 Java 中,为了比较字符串的值,开发人员需要按照字符串类型调用 equals() 方法,正如在默认情况下 == 运算符比较引用类型一样。在 C# 中,开发人员可以使用 == 或 != 运算符来直接比较字符串的值。在 C# 中,尽管字符串是引用类型,但是在默认情况下,== 和 != 运算符将比较字符串的值而不是引用。在本文后面,我们将讨论值类型和引用。 

正如在 Java 中一样,C# 开发人员不应该使用字符串类型来连接字符串,以避免每次连接字符串时都创建新的字符串类的开销。相反,开发人员可以使用 System.Text 命名空间中的 StringBuilder 类,它在功能上等同于 Java 中的 StringBuffer 类。

C# 提供了避免在字符串常量中使用转义序列(如代表制表符的“\t”或代表反斜杠字符的“\”)的功能。要这样做,可以在为字符串赋值之前使用 @ 符号来声明字符串。下面的示例显示了如何使用转义字符以及如何为字符串赋值: 

//Using escaped characters
string path = "\\\\FileShare\\Directory\\file.txt";

//Using String Literals
string escapedPath = @"\\FileShare\Directory\file.txt";



IP属地:江苏1楼2006-06-16 10:07回复
    值类型和引用类型

    C# 支持两种变量类型:• 值类型 — 这些是内置的基本数据类型,例如 char、int、float 和用 struct 声明的用户定义类型。 
     
    • 引用类型 — 从基本类型构造而来的类和其他复杂数据类型。这种类型的变量并不包含类型的实例,而只是包含对实例的引用。 
     

    让我们略微深入地研究一下这个问题。如果我们创建两个值类型变量 i 和 j,比如:

    int i = 10;
    int j = 20;

    图 1:值类型的内存位置


    IP属地:江苏2楼2006-06-16 10:11
    回复
      则 i 和 j 彼此完全独立,并且分配了不同的内存位置:

      如果我们改变这些变量中的某一个的值,另一个自然不会受到影响。例如,如果我们有一个这样的表达式:

      int k = i;

      则变量之间仍然没有联系。也就是说,之后如果我们改变 i 的值,k 还会保留赋值时 i 具有的值。

      然而,引用类型的做法却不同。例如,我们可以这样声明两个变量:

      myClass a = new myClass();
      myClass b = a;

      现在,因为类是 C# 中的引用类型,所以 a 称为对 myClass 的引用。上面两行中的第一行在内存中创建了 myClass 的一个实例,并且将 a 设置为引用该实例。因此,当我们将 b 设置为等于 a 时,它就包含了对内存中类的引用的重复。如果我们现在改变 b 中的属性,a 中的属性就将反映这些改变,因为这两者都指向内存中的相同对象,如下图所示:


      IP属地:江苏3楼2006-06-16 10:12
      回复
        • 220.249.128.*
        很仔细,很好!谢谢回复帖子的广大人士,因为有了你们,才能让大家遇任何问题百度一下就OK


        5楼2007-08-11 19:37
        回复
          楼上


          IP属地:江苏6楼2007-08-11 20:49
          回复