c# 本质论学习笔记——(1)数据类型


基本数值类型


 整数类型: sbyte byte(8)/ short ushort(16) / int uint(32)/ long ulong(64) [u\l\lu\ul]

 浮点类型:float(32)[f] doubel(64)

 decimal(128)[m/M]

 *decimal 与c#的浮点类型的区别
   decimal 基数为十进制的浮点类型,而c#的浮点类型是基数为二进制的。decimal 是精确的,c#的浮点类型是不精确的。

 字面值(literal value)
 
 直接将一个值放到源代码中的行为称为硬编码(hardcoding)

 十六进制记数法   (每位十六进制的数字是4bit,以0x开头。)
  0x000A   表示 10 
  0x002A   表示 42
 **如果向显示一个数的十六进制形式
 //display "0x2A"
 System.Console.WriteLine("0x{0:X}",42);//X的大小写决定了十六进制字母的大小写形式

 Boolean bool类型(8)
   true false

     string option = "HeLp";
            //  比较两个指定的 System.String 对象(其中忽略或考虑其大小写),并返回一个整数,指示二者在排序顺序中的相对位置。
            int comparison = string.Compare(option,"/help",true);
            Console.WriteLine(comparison);
 char 类型 其取值范围对应于Unicode字符集
    包括转义字符
         \0 null
         \b 退格
         \f 换页
         \r 回车

 *处理转义字符
 1、使用@"……"
 2、使用转换符号\

  Console.Write(@"begin
            /\
           /  \
          /__\
end" );

         原样输出三角和bejin, end

 **round-trip 格式化
 为了更准确的判断与一个double值对应的字符串形式,,我们可以使用一个格式字符串和一个round-trip格式说明符R(或者r)进行转换。round-trip格式说明符返回的是一个字符串,假如将该字符串转换回数值,        那么能获得原始值。

     const double number = 1.618033988749895;
            double result;
            string text;

            text = string.Format("{0}",number);
            result = double.Parse(text);
            System.Console.WriteLine("{0}:number !=result",number !=result);
            Console.WriteLine(result);//显示为1.61803398874989

            text = string.Format("{0:R}", number);
            result = double.Parse(text);
            System.Console.WriteLine("{0}:number ==result", number == result);
            Console.WriteLine(result);//显示为1.61803398874989


 string的静态方法
  string.Fromat();
  string.Concat();
  string.Compare();
 string的实例方法
 以变量名作为前缀。
  string name;
  name.EndsWith("Ph.D");
  name.StartsWith("Dr.");
  name.ToUpper("");
  name.ToLower("");
  name.Trim();
  name.TrimEnd();
  name.TrimStart();
  name.Repalce(old,new);

* 换行符
 System.Console.WriteLine("hello world")等价于 System.Console.Write("hello world"+System.Environment.NewLine);

 **C#属性
   Length是string的一个属性。c#允许像访问一个成员变量(字段)那样访问属性,并有赋值方法(setter)和取值方法(getter)

 

***String
 字符串长度 stringName.Lenth。
 字符串是不可变的(immutable)。text1=text.ToUpper();//text.ToUpper()产生一个新的字符串,赋值给text1。text本生没有变化。
***System.Text.StringBuilder
 一些Append()AppendFormat() Insert() Remove() Replace()这样的方法是修改变量中的数据,而不是像string那样生成新的字符串。

 

***null和void
    null是相对于引用类型、指针类型、可空类型。
 
    //和只声明变量不同,将null赋给一个引用类型是指变量已被设置,而未进行赋值的变量未被设置,所以在赋值前使用变量,通常会造成编译错误。
    string name;
    name=null;

    void 用于指示方法没有返回值。

**隐式类型的局部变量 var(implicitly typed local variable)
 
 不是显示的指定数据的类型,而是用var(C# 3.0)这个上下文关键字来声明一个隐式类型的局部变量。
 
          var text = Console.ReadLine();
          var uppercase = text.ToUpper();

 var的目的是支持匿名类型(anonymous type),匿名类型是在方法内部动态声明的数据类型,而不是通过显示的类定义来声明的。
 一下的方法是连接(joining或者associating)数据类型的关键,能将特定的类型缩减为更少的数据元素,从而有效的减小类型的大小。

 
     var patent1=
                new { Title ="Bifocals",YearOfPublication="1784"};
      var patent2 =
                new { Title = "Phonograph", YearOfPublication = "1877" };
            Console.WriteLine("{0},{1}", patent1.Title, patent1.YearOfPublication);
            Console.WriteLine("{0},{1}", patent2.Title, patent2.YearOfPublication);

 

 **值类型和引用类型
 栈 -->值
 堆 -->引用 

 

 **可控修饰符 ?
 为了声明可以存储null的变量,要使用可空修饰符?。在数据库编程尤其有用,在数据表中经常有值类型的列允许为空的时候。
 
 int? count =null;
 do
 {
 ……
 }
 while(count==null);
 

 **数据类型之间的转换

  转型(casting)
显示转型(explicit cast):有可能造成丢失数量级或者引发异常的转换都需要显示转型。
隐式转型(implicit cast):不会引发异常的任何转换。

            long longNum = 19216815154;
            int intNum = (int ) longNum;//intNum的值是错误的,没有处理。

 checked和unchecked

//会出现OverflowException。如果不用checked语句块,输出为负值。

 checked
            {
                int numMax = int.MaxValue;
                numMax = numMax + 1;

                Console.WriteLine(numMax);

                Console.ReadKey();
            }

//c# 提供了一个命令行选项将默认行为从unchecked改成checked,此外,c#还支持unchecked块,会将数据截断,而不是为块中的赋值引发异常。

unchecked
            {
                int numMax = int.MaxValue;
                numMax = numMax + 1;

                Console.WriteLine(numMax);

                Console.ReadKey();
            }

  隐式转型

 int intNum=31416;

 long longNum=intNum;//也可进行显示转换。

 不进行转型的类型转换

 int.parse();

 System.Convert.ToDouble();    //conver转换从基本类型到基本类型。

 System.Convert.ToBoolean();

 .Tostring();

 TryParse()

基本数据类型都包含一个静态的方法TryParse() 。该方法与Parse()方法相似,只是返回值在转换失败的时候返回false。

 

**数组

int[] ;

int [,];

string[]=new []{  ……}

string [] languages=new string[9];//声明分配数组但不指定初始值。类型相对应的默认值如下:

引用类型 null

数值类型 0

bool          false

char        '\0'

多为数组中的每一维的大小都必须具有一致的大小。另外一种交错数组(jagged array)

int [][] cells={

new int[]{1,0,2,0},

new int[]{1,2,0},

new int[]{1}

};

数组长度

    cells.length

数组的方法

 System.Arrary.Sort(arraryName);

 index=System.BinarySearch(arraryName,searchString);//在使用BinarySearch()的时候有必要对数组先排序。

 System.Array.Reverse(arraryName);

 System.Array.Clear(arrayNme,0,arrayName.Length);//Clear()方法将数组中每个元素都设置为其默认值(false ,0 , null)

 

 数组的实例方法

GetLength()//获取特定维的大小;

Rank();

Clone();//创建一个全新的副本

            string reverse, palindrome;
            Console.Write("enter a palindrome");
            palindrome = Console.ReadLine();

            reverse = palindrome.Replace(" ","");
            reverse = reverse.ToLower();

            char[] temp = reverse.ToCharArray();

            System.Array.Reverse(temp);

            if (reverse == new string(temp))
            {
                System.Console.WriteLine("\"{0}\"is a palindrome.", palindrome);
            }
            else
            {
                System.Console.WriteLine("\"{0}\"is not a palindrome.", palindrome);
            }

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值