C#学习笔记(四)——变量的更多内容
一、类型转换
1、转换的类型

2、隐式转换
bool 和string 没有隐式转换,具有隐式转换的都列在下面的表格
、

记住一个规律,就是由精度低的类型转到精度高的类型是很容易的。
3、显式转换
(1)强制类型转换
double c=2.2;
int a = (int)c;
但是会有数据丢失的情况,但是C#为我们提供了关键字让我们很方便的来查询是发生了数据的丢失
(2)check() uncheck()
a、格式

b、例子
byte destinationVar;
short sourceVar = ;
destinationVar = unchecked((byte)sourceVar);
Console.WriteLine("sourceVar val:{0}", sourceVar);
Console.WriteLine("destinationVar val:{0}", destinationVar);
Console.ReadKey();
执行这段代码的时候程序就会崩溃,然后就会在错误窗口中显示这个错误。

如果是uncheck的话

所以是很有用的哦、
c、我们可以设置VS让其直接对每个类型转换进行check而不需要我们自己重复性的写这个关键字,如果不想check的话只需要打上uncheck的关键字就好了。
步骤如下:

打开项目属性

点击高级。

勾上这个就好了。
(3)使用convert进行转换

这个很方便我们进行转换,而且这个会自动进行check操作,不需要设置也可以,所以很方便的。
二、复杂的变量类型
1、枚举
(1)用enum关键字来定义一个枚举类型

a、在默认情况下,每个值会根据定义的顺序(0,1,2,3……),当然也可以在定义的时候使用赋值符号“=”来重新定义顺序.,没有定义的就是比前一个多1.
b、而且还可以选择指定数据的基类型(underlyinType)这个类型。是不是很赞!这个用法就可以让我用一个枚举类型作为另一个枚举类型的基类,这是一个很方便的地方哦。
(2)把字符串转换成枚举类型

(enumerationType)是使用显示转化,强行转化成枚举类型;
而后面这个方法Enum.Parse(,)会将字符串转换成枚举其中的一个子值。
2、结构
(1)定义

跟C语言基本一样一样的。但是其中的<memberDeclarations>有不同,需要按照下面的格式定义。

accessibility:关键字可以填public private public,现在我们先默认使用public,这样的话就可以随意访问结构体中的数据成员。
type:数据的类型
name:变量的名字。
(2)例子
namespace Exercise
{
enum oriantation :byte
{
north =,
south=,
east=,
west=
} struct route
{
public oriantation direction;
public double distance;
} class Program
{
static void Main(string[] args)
{
route myRoute;
int myDirection = -;
double myDistance;
Console.WriteLine("1) North\n2) South\n3) East \n4) West\n");
do
{
Console.WriteLine("Select a direction");
myDirection = Convert.ToInt32(Console.ReadLine()); } while ((myDirection < ) || (myDirection > )); Console.WriteLine("Input a distance");
myDistance = Convert.ToDouble(Console.ReadLine()); myRoute.direction = (oriantation)myDirection;
myRoute.distance = myDistance; Console.WriteLine("myRoute spacifies a direction of {0} and distance of {1}", myRoute.direction, myRoute.distance); Console.ReadKey();
}
}
}
ps:这个例子是一个包括了枚举和结构体的一个简单的demo
3、数组
(1)声明数组
<baseType>[] name;
其中baseType可以是各种类型,无论是枚举还是结构体还是其他的简单变量都是可以的。
(2)初始化方式
a、以字面的形式指定数组的完整内容
int[ ] myIntArray = {,,,,,}
b、指定数组大小,然后再用new来初始化
int[] myIntArray = new int[];
对于数组变量的话,每个元素的默认值为0,而不是一个乱码。且也可以指定内容
int[] myIntArray = new int[]{,,,,};
但注意new开了几个空间就一定要定义几个空间,否则报错。
c、当然也可只声明,暂时不初始化也是可以的
int[] myIntArray;
myIntArray = new int[];
(3)例子
namespace Exercise
{ class Program
{
static void Main(string[] args)
{
string[] myString = { "a", "b", "c" };
int i;
Console.WriteLine("Here are {0} of my string:", myString.Length);
for(i=;i<myString.Length;i++)
{
Console.WriteLine(myString[i]); }
Console.ReadKey();
}
}
}
执行结果

(4)foreach循环
foreach(<baseType> <name> in <array>)
{
//can use <name> for each element
}
这个循环会迭代每个元素,依次把每个元素放在变量<name>中,且不存在访问非法元素的危险,因此不需要考虑数组中有多少个元素,并可以确保将在循环中使用每个元素。然后我们修改下上面的例子,
namespace Exercise
{ class Program
{
static void Main(string[] args)
{
string[] myString = { "a", "b", "c" }; Console.WriteLine("Here are {0} of my string:", myString.Length); foreach(string mystring in myString)
{
Console.WriteLine(mystring);
} Console.ReadKey();
}
}
}
但这样使用的话,只能访问数组中的元素而不可以对他进行修改。
(5)多维数组
a、声明
二维数组的声明方法
<baseType>[,] <name>;
多维数组的声明方法
<baseType>[,,,] <name>;
这里是一个四维数组的声明方法。
b、初始化
double[,] hillHeight = new double [,];
c、依旧可以使用foreach对多维数组进行遍历。
(6)数组的数组
a、初始化
int[][] jaggedIntArray;
jaggedIntArray = new int[][];
jaggedintArray[] = new int [];
jaggedintArray[] = new int [];
b、使用foreach的时候也要嵌套2层进行使用
foreach(int[] a in aArray)
{
foreach(int element in a)
{ }
}
4、字符串的处理
(1)string类型变量可以看作是char数组的只读书组。所以我们可以对string的每个字符进行访问,但是没有办法对其进行修改。
(2)但是C#封装好了从string 转换成char类型数组的方法
string myString = "A string";
char [] maChars = myString.ToCharArray();
之后我们就可以对char数组进行处理。
(3)然后string也有封装好直接获得长度的方法,即Length
(4)将字符串全部转换为小写
<string>.ToLower()
将字符串全部转换为大写
<string>.ToUpper()
但是请留意,这两个函数是有返回值的,即就是把转换好的字符串返回回来,而不是直接对原字符串进行修改
(5)删除字符串中的空格
<string>.Trim();
也可以用这个指令删除其他的字符,只要在一个char数组中保存这些字符就好了。
char[] trimChars = {' ','e','s'};
string userRsponse = Console.ReadLine();
userRespone = userRespone.ToLower();
userRespone = userRespone.Trim(trimChars);
if(userResponse == "y")
{
//do something
}
这里的代码就可以删除字符串中的空格,e和s。
<string>.TrimStar(); // 把字符串前面的空格删掉
<string> TrimEnd(); //把字符串后面的空格删掉
(6)在左边或者右边添加字符
<string>.PadLeft();
<string>.PadRight();
//语法如下
<string>.PadX{<desiredLength>};
例如:
myString = "Aligned";
myString = myString.PadLeft();
就是在字符串的左边加上了3个空格,这样的话,长度就是10啦。
然后不仅仅可以加空格,亦可以是其他的字符。
myString = "Aligned";
myString = myString.PadLeft(,‘-’);
这样就是在前面添加3个减号。
(7)例子
namespace Exercise
{ class Program
{
static void Main(string[] args)
{
string myString = "This is a string";
char[] separator = { ' ' }; string[] myWords; myWords =
myString.Split(separator);//将句子在空格处分割开来,然后变成新的字符串,存进去。
foreach(string word in myWords)
{
Console.WriteLine(word);
} Console.ReadKey();
}
}
}
运行结果

这一章就可以到此结束啦,大家快去实践实践吧。
C#学习笔记(四)——变量的更多内容的更多相关文章
- [C语言学习笔记四]变量与系统的交互
使用 const 创建常量和使用 volatie 优化变量 C语言中使用 const 定义常量. 例如: const INT a = 10; 此处如果添加a = 20;,编辑器则会报错,因为此处 a ...
- 【Python学习笔记四】获取html内容之后,如何提取信息:使用正则表达式筛选
在能够获取到网页内容之后,发现内容很多,那么下一步要做信息的筛选,就和之前的筛选图片那样 而在python中可以通过正则表达式去筛选自己想要的数据 1.首先分析页面内容信息,确定正则表达式.例如想获取 ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
- Linux学习笔记(四) vi编辑器
一.vi 编辑器 vi 编辑器 (Visual Interface) 是所有 Unix 及 Linux 系统下标准的编辑器,相当于 Windows 系统中的记事本 它有三种模式,分别是: Comman ...
- MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
- 官网实例详解-目录和实例简介-keras学习笔记四
官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras 版权声明: ...
随机推荐
- windows下安装redis以及简单的事例
1.安装服务端下载地址:http://code.google.com/p/servicestack/wiki/RedisWindowsDownload我下载了一个 redis-2.0.0服务器包,解压 ...
- iOS开发——底层OC篇&运行时常用
运行时常用 什么是Runtime(前面的文章已经说的很清楚了,这里就简单的介绍一下) 我们写的代码在程序运行过程中都会被转化成runtime的C代码执行,例如[target doSomething]; ...
- iphone/ipad图标尺寸
http://www.yixieshi.com/ucd/13759.html APP界面设计规范指导APP设计过程中的设计标准,根据统一的设计标准,使得整个APP在视觉上统一.提高用户对APP的产品认 ...
- [BZOJ2959]长跑——新技能:LCT+缩圈
[BZOJ2959]长跑 试题描述 某校开展了同学们喜闻乐见的阳光长跑活动.为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上熙熙攘攘 ...
- Redis快速入门
Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...
- Linux SUID SGID 讲解
SUID属性 UNIX的内核是根据什么来确定一个进程对资源的访问权限的呢? 是这个进程的运行用户的(有效)ID,包括user id和group id.用户可以用id命令来查到自己的或其他用户的user ...
- WINDOWS和Linux上安装php7 alpha 并安装 yaf
WINDOWS和Linux上安装php7 alpha 并安装 yaf PHP技术 widuu 2个月前 (06-15) 126浏览 0评论 windows 1.windows上安装 php7 ...
- PHP 的__call()
PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法.如果你试着调用一个对象中不存在或被权限控制中的方法,__call 方法将会被自动调用. 例七:__call ...
- 【leetcode】Longest Consecutive Sequence
Longest Consecutive Sequence Given an unsorted array of integers, find the length of the longest con ...
- 62. 链表重排[Reorder List]
[本文链接] http://www.cnblogs.com/hellogiser/p/reorder-list.html [题目] Given a singly linked list L: L0→L ...