一、变量
1、变量的声明
变量的声明有三种方法
1 、先声明,后赋值。 例: int age; age = 28;
2、定义变量时,直接赋值。例: int age = 28;
3、一次同时声明多个同类型的变量,变量之间用逗号隔开。例:int a = 1,b,c,d = 4;
注意:变量一定要先声明、后赋值、然后再使用(取值、或者调用或写)
2、变量的命名
就是给变量取名字,变量命名规则:
1、必须以“字母”_或@符号开头(第一个字不能以数字开头);
2、后面可以跟任意“字母”、数字、下划线。
注意:
1、在C#中,是区分大小写的,变量名不要与C#系统中的关键字重复(比如
在编写代码时变蓝色的字不能用)且不能重复定义。
2、变量需用有意义的名称且不宜太长,尽量精简,便于人机交互、团队合作。
3、为保证美观及可读性,我们命名类和方法时使用Pascal(帕斯卡)样式(首字母大写),
命名变量使用Camel(骆驼)样式(如:printEmployeePaychecks)。
3、变量的作用域
简单来说,变量的作用域就是指变量可以使用的代码范围。
所以就可以分成:全局变量、局部变量。
C#:在变量之间有一个基本的区分,把声明为类型级的变量看作是字段,而把在方法中声明的变量看作局部变量。
1、全局变量
在类里定义(非方法里)的变量,那么在这个类中都可以使用。或者也可以称做属于类里面的局部变量。
2、局部变量
在方法中定义的变量,这个变量一旦出了这个方法,就不能调用了。
3、修饰符
现在暂时学到的是:访问修饰符:public 、private、 protected、 internal、 protected internal。
- public
public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制
- private
private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。
私有成员只有在声明它们的类和结构体中才是可访问的。
- protected
protected 关键字是一个成员访问修饰符。受保护成员在其所在的类中可由派生类实例访问。
特别注意:要派生类的实例才访问得到。
- internal
internal 关键字是类型和类型成员的访问修饰符。只在同一程序集的文件中,内部类型或成员才是可访问的。
- protected internal
访问仅限于从包含类派生的当前程序集或类型。可以看成是protected 和internal的访问权限之与(&&)。
练习小程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace class_diannao
{
class Program : Computer
{
static void Main(string[] args)
{
Computer c = new Computer();
Program p = new Program();
float f1 = p.protectedprice;
//调用public声明的变量;
Console.WriteLine("public电脑的价格是:" + c.publicprice);
//用Getprice()方法调用private声明的变量;
Console.WriteLine("private电脑价格是:" + c.Getprice());
//调用protected声明的变量;
Console.WriteLine("protected电脑价格是:" + f1);
//调用internal声明的变量;
Console.WriteLine("protected电脑价格是:" + c.internalprice );
Console.ReadKey();
}
}
public class Computer
{
private float privateprice = 8799.99F;
public float publicprice = 9899F;
protected float protectedprice = 5699F;
internal float internalprice = 4599F;
public float Getprice()
{
return privateprice;
}
}
}
二、屏幕的输入输出
- 打印输出
Console.Write(" 输出的内容 ");
Console.WriteLine(" 输出的内容");
- 输入
Console.ReadLine();
Console.ReadKey();
三、数据类型
1、值类型
基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
值类型 | 简单介绍补充 |
---|---|
bool | 存储 布尔值 true 和 false |
byte | 表示一种整型,范围:0 到 255 |
sbyte | 表示一种整型,范围:-128 到 127 |
int | 表示一种整型,范围:-2,147,483,648 到 2,147,483,647 |
uint | 表示一种整型,范围:0 到 4,294,967,295 |
short | 表示一种整型,范围:-32,768 到 32,767 |
ushort | 表示一种整型,范围:0 到 65,535 |
long | 表示一种整型,范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
ulong | 表示一种整型,范围:0 到 18,446,744,073,709,551,615 |
float | 表示存储 32 位浮点值的简单类型,范围:±1.5 × 10^-45 到 ±3.4 × 10^38,如:float a=5.2F |
double | 表示存储 64 位浮点值的简单类型,±5.0 × 10^-324 到 ±1.7 × 10^308 |
decimal | 表示 128 位数据类型,具有更高的精度和更小的范围,这使它适合于财务和货币计算。如:decimal a=5.2M |
char | 声明 U+0000 到 U+ffff 范围内的 Unicode 字符,注意:转义字符 |
string | 表示零或更多 Unicode 字符组成的序列,是引用类型,但在相等运算符(== 和 !=)中是比较的值 |
enum | 声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型 |
struct | 是一种值类型,通常用来封装小型相关变量组。现在struct和class的功能很相似。一般的,你觉得你要做的更像是一种数据结构的话,那么用struct,如果你要做的更像是一种对象的话,那么用class来定义 |
2、引用类型 (后面更新)
四、类型转换
1、同一类型转换
- 隐式转换
由于该转换是一种安全类型的转换,不会导致数据丢失,因此不需要任何特殊的语法。
例如,从较小整数类型到较大整数类型的转换以及从派生类到基类的转换都是这样的转换。
- 显式转换(强制转换)
显式转换需要强制转换运算符。源变量和目标变量兼容,
但由于目标变量的类型大小比源变量小(或者目标变量是源变量的一个基类),因此存在数据丢失的风险。
2、不同类型转换:Convert
可以实现基本数据类型的转换,其中支持的转化类型有:Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime 和 String
方法 | 说明 |
---|---|
Convert.ToInt32() | 转换为整型(int) |
Convert.ToChar() | 转换为字符型(char) |
Convert.ToString() | 转换为字符串型(string) |
Convert.ToDateTime() | 转换为日期型(datetime) |
Convert.ToDouble() | 转换为双精度浮点型(double) |
Convert.ToSingle() | 转换为单精度浮点型(float) |
练习小程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace convert
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入任意一个整数数字:");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请再输入一个任意数字,可以有小数为:");
double b = Convert.ToDouble(Console.ReadLine());
double c = a + b; //隐式转换;
int d = (int)(a + b); //显式转换;
Console.WriteLine("你输入的两数之和是:"+c + '\n');
Console.WriteLine("转换成整数是:" + d);
// 不同类型转换;
Console.WriteLine("转换成字符是:{0} ", Convert.ToChar(d%127));
Console.WriteLine("转换成字符串是:{0} ",Convert.ToString(c));
Console.WriteLine
("转换成时间是:"+d+"秒="+(d/3600)+"小时"+(d%3600/60)+"分"+(d%60)+"秒");
Console.ReadKey();
}
}
}