C#入门经典—第五章

第五章 变量的更多内容

本章内容:

  • 如何在类型之间进行隐式和显式转换
  • 如何创建和使用枚举类型
  • 如何创建和使用结构类型
  • 如何创建和使用数组
  • 如何处理字符串值

5.1 类型转换

5.1.1 隐式转换

隐式转换不需要做任何工作,也不需要另外编写代码。

可以隐式执行的数值转换:

类型可以安全转换为
byteshort,ushort,int,uint,long,ulong,float,double,decimal
sbyteshort,int,long,float,double,decimal
shortint,long,float,double,decimal
ushortint,uint,long,ulong,float,double,decimal
intlong,float,double,decimal
uint long,ulong,float,double,decimal
longfloat,double,decimal
ulongfloat,double,decimal
floatdouble
charushort,int,uint,long,ulong,float,double,decimal
注:任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以隐式转换为类型B。

5.1.2 显式转换

checked和unchecked,表达式的溢出表达上下文。

也可以修改项目属性来实现:

在VS中右击“解决方案资源管理器”,选择“属性”,单击窗口左边的生成。


单击“高级(Advanced)”按钮,在打开的对话框中,选中“检查运算上溢/下溢(Check for Arithmetic Overflow/Underflow)”。


5.1.3 使用Convert命令进行显示转换

命令结果
Convert.ToBoolean(var)var转换为bool
Convert.ToByte(var)var转换为byte
Convert.ToChar(var)var转换为var
Convert.ToDecimal(var)var转换为decimal
Convert.ToDouble(var)var转换为double
Convert.ToInt16(var)var转换为short
Convert.ToInt32(var)var转换为int
Convert.ToInt64(var)var转换为long
Convert.ToSByte(var)var转换为sbyte
Convert.ToSingle(var)var转换为float
Convert.ToString(var)var转换为string
Convert.ToUInt16(var)var转换为ushort
Convert.ToUInt32(var)var转换为uint
Convert.ToUInt64(var)var转换为ulong

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            short shortResult, shortVal = 4;
            int integerVal = 67;
            long longResult;
            float floatVal = 10.5F;
            double doubleResullt, doubleVal = 99.999;
            string stringResult, stringVal = "17";
            bool boolVal = true;
            Console.WriteLine("Variable Conversion Example.\n");
            doubleResullt = floatVal * shortVal;
            Console.WriteLine("Implicit,->double:{0}*{1}->{2}",floatVal,shortVal,doubleResullt);
            shortResult = (short)floatVal;
            Console.WriteLine("Explicit,->short:{0}->{1}",floatVal,shortResult);
            stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);
            Console.WriteLine("Explicit,->string:\"{0}\"+\"{1}\"->{2}",boolVal,doubleVal,stringResult);
            longResult = integerVal + Convert.ToInt64(stringVal);
            Console.WriteLine("Mixed,->long:{0}+{1}->{2}",integerVal,stringVal,longResult);
            Console.ReadKey();
        }
    }
}

5.2 复杂的变量类型

5.2.1 枚举

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    enum orientation : byte
    {
        north = 1,
        south = 2,
        east = 3,
        west = 4
    }
    class Program
    {
        static void Main(string[] args)
        {
            orientation myDirection = orientation.north;
            Console.WriteLine("my direction={0}",myDirection);
            Console.ReadKey();
        }
    }
}

注:Enum.Parse(),将string转换为枚举值。typeof,得到操作数的类型。

5.2.2 结构

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    enum orientation : byte
    {
        north = 1,
        south = 2,
        east = 3,
        west = 4
    }
    struct route
    {
        public orientation direction;
        public double distance;
    }
    class Program
    {
        static void Main(string[] args)
        {
            route myRoute;
            int myDirection = -1;
            double myDistance;
            Console.WriteLine("1) North\n2) South\n3) East\n4) West");
            do
            {
                Console.WriteLine("Select a direction:");
                myDirection=Convert.ToInt32(Console.ReadLine());
            } while ((myDirection < 1) || (myDirection > 4));
            Console.WriteLine("Input a distance:");
            myDistance = Convert.ToDouble(Console.ReadLine());
            myRoute.direction = (orientation)myDirection;
            myRoute.distance = myDistance;
            Console.WriteLine("myRoute specifies a direction of {0} and a "+" diatance of {1}",myRoute.direction,myRoute.distance);
            Console.ReadKey();
        }
    }
}

5.2.3 数组

foreach循环

5.3 字符串的处理

string类型变量可以看作是char变量的只读数组。

.ToCharArray()转化为数组

.ToLower()转化为小写

.ToUpper()转化为大写

.ToTrim()删除输入字符串中的空格

.TrimStrart()删除字符串前面的空格

.TrimEnd()删除字符串后面的空格

.PadLeft()在字符串的左边添加空格,使字符串达到指定的长度

.PadRight()在字符串的右边添加空格使字符串达到指定的长度

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    
    class Program
    {
        static void Main(string[] args)
        {
            string myString = "This is a test.";
            char[] seperator = { ' '};
            string[] myWords;
            myWords = myString.Split(seperator);
            foreach (string word in myWords)
            {
                Console.WriteLine("{0}",word);
            }
            Console.ReadKey();
        }
    }
}

.Split()将string转换为string数组,把它在指定的位置分隔开。

输入字符串,按相反顺序输出:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter a string:");
            string myString = Console.ReadLine();
            char[] seperate=myString.ToCharArray();
            Array.Reverse(seperate);
            for (int i = 0; i < myString.Length; i++)
            {
                Console.Write("{0}", seperate[i]);
            }
            Console.ReadKey();
        }
    }
}

编写一个控制台应用程序,它接收一个字符串,用yes替换字符串中所有的no:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter a string:");
            string myString = Console.ReadLine();
            Console.WriteLine("{0}", myString.Replace("no", "yes"));
            Console.ReadKey();
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值