c#随笔记01

C#语言的特点

  • 不允许直接操作内存,去掉了指针操作。
  • 彻底的面向对象设计:封装、继承、多态
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace studyDaily
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("人因梦想而伟大");
            Console.WriteLine("             --雷军");
                Console.ReadLine();
        }
    }
}

image

C#命名空间

存储了不同类型物品的仓库,通过using指令获取所需物品

一种数据结构
可以封装数据成员、方法成员和其他的类
C#支持自定义类

使用类

先声明

class [类名]
{
   [类中的代码]
}

Main方法

一般是创建项目时自动生成的

  • 在类或结构内声明,必须是static的而不是公用public的。
  • 返回类型为:void或int
  • 可以包含命令行参数string[]args,也可以不包括

Console类

控制台应用程序的标准输入输出流和错误流

  • Read
  • ReadLine
  • Write
  • WriteLine

Read和ReadLine区别

  • Read:返回值为int类型,只能记录int类型的数据
  • ReadLine:返回值为string,可以将控制台输入的任何类型数据存储为字符串类型
    经常使用它俩固定控制台窗体

Write和WriteLine区别

  • Write:输出后不换行
  • WriteLine:输出后换行

代码规则

  • 尽量使用接口,然后使用类实现接口,以提高程序的灵活性
  • 生成和构建一个长字符串时,尽量使用StringBuilder类型而不是string类型
  • switch语句一定要有default语句来处理意外情况
  • 接口的名称前加前缀“I”
  • 方法命名为动宾短语
  • 定义成员变量时,最好加前缀“_”

变量

一种技术使用户能够方便地访问到二进制数据的内存地址
主要用来存储特定类型的数据,用户可以根据需要随时改变变量中所存储的数据值。

变量的声明及初始化

  • 对变量命名的过程就是声明一个变量
  • 变量在使用之前,必须进行声明并初始化
  • 变量的初始化实际上就是给变量赋值

成员变量

根据变量的“有效范围”将变量分为成员变量和局部变量

静态变量

class Test
{
	int x=45;
	static int y=90;
}
  • 在类体中定义的变量称为成员变量,成员变量在整个类中都有效。又分为静态变量和实例变量。x:实例变量
    类变量,在成员变量的类型前面加上关键字static
    静态变量的有效范围可以跨类,甚至可达到整个应用程序之内。可使用“类名.静态变量”的方式在其他类中使用

局部变量

局部变量的声明周期取决于方法,当方法被调用时,C#编译器为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将被销毁。

数据类型

  • 值类型
  • 引用类型

值类型

  • 简单类型
  • 复合类型

简单类型

整数

整数表示方式

十进制、八进制(0开头)、十六进制(0x开头)

整数类型

  • sbyte:8位有符号整数 -128-127
  • short:16位有符号整数
  • int:32位有符号整数
  • long:64位有符号整数
  • byte:8位无符号整数 0-255
  • ushort:16
  • uint:32
  • ulong:64
    有符号可存正数与负数,无符号之恶能存放不带符号的整数

浮点

  • float:精确到7位数
  • double:精确到15-16位数
    包含小数点的数默认是double类型
float Sum=9.2f;
float Sum=9.2F;

浮点类型的变量默认值是0

  • decimal类型
    128位数据类型,精度可达28位。
    用于财务和货币计算
decimal Money=1.2m;

布尔

bool x=true;

字符

C#中使用Char类来表示,主要用来存储单个字符,占用16位(两个字节)的内存空间。

  • 用单引号表示
  • 双引号表示的是字符串
    Char类只能定义一个Unicode字符
Char类的使用

IsDigit:指示某个Unicode字符是否属于十进制数据类别
IsLetter:是否属于字母类别
IsLetterOrDigit:是属于字母还是十进制
IsLower:是否小写字母
IsNumber:
IsPunctuation:是否属于标点符号类型
IsSeparator:是否分隔符
IsUpper:是否大写字母
IsWhiteSpace:是否空白
Parse:将指定字符串的值转换为它的等效Unicode字符
ToLower:转小写
ToString:转字符串
ToUpper:转大写
TryParse:将字符串转Unicode

char a='a';
Console.WriteLine("IsLetter方法判断a是否为字母:{0}",Char.IsLetter(a));
转义字符
  • \n:回车换行
  • \t:横向跳到下一制表位置
  • \":双引号
  • \b:退格
  • \r:回车
  • \f:换页
  • \:反斜杠
  • \':单引号
  • \uxxxx:四位十六进制所表示的字符

复合类型

  • 枚举类型
  • 结构类型

引用类型

  • 预定义引用类型
  • 自定义引用类型

预定义引用类型

  • object
  • string

自定义引用类型

  • 数组
  • 接口
  • 委托

常量

程序运行过程中,值不能改变的量。

  • const
  • readonly

const

静态常量:在编译时就已经确定了的值
在声明时就进行初始化,而且之后不可以再进行更改

readonly

动态常量:可以进行动态赋值
只能在构造函数中赋值

const与readonly区别

  • const必须在声明时初始化,而readonly可以延迟到构造函数中初始化。
  • const在编译时就被解析,即将常量的值替换成了初始化的值,而readonly常量的值需要在运行时确定。
  • const可以在类或方法体中定义,而readonly只能在类中定义。

运算符

  • 自增自减
    ++x;--x;前置表示:x自身先加一或减一,其运算结果是自身修改后的值,再参与其他运算
    x--;x++;后置表示:自身加一或减一,运算结果是自身未修改的值。先参与其他运算,再自增自减1。
b=a++;

相当于:

b=a;
a++;
//先取值后自增
b=--a;

相当于:

--a;
b=a;

自增自减操作符只能作用于变量。
如果程序中不需要操作原来的值,可选用前置。
后置必须要先保存原来的值。

低精度类型自增

byte a=1;//创建byte变量a
a=a+1;//让a的值加1:无法将int数转换为byte

a+1的结果没进行强制类型转换时,结果是一个int值,无法直接赋值给byte变量

btye a=1;
a+=1;

数据类型转换

  • 隐式转换
  • 显示转换

隐式转换

  • 低精度数据类型向高精度数据类型转换
  • 永远不会溢出
    不需要声明就能进行的转换

显式转换

  • 高精度数据向低精度数据转换
  • 必然会有信息丢失甚至可能失败
  • 强制类型转换
  • 需要再代码中明确声明要转换的类型
(类型说明符)表达式
(float)x;

使用Convert类进行转换

也可以进行显式转换
将一个基本数据类型转换为另一个基本数据类型

  • ToBoolean
  • Tobyte
  • ToChar
  • ToDateTime
  • ToDecimal
  • ToDouble
  • ToInt32:转换为有符号32位整数
  • ToInt64
  • ToSByte:转换为8位有符号整数
  • ToSingle:转换为单精度浮点数
  • ToString
  • ToUInt32:32位无符号
  • ToInt64
double x=198.23;
int y=Convert.ToInt32(x);

打印九九乘法表

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

namespace studyDaily
{
    class Program
    {
        static void Main(string[] args)
        {

            int iRow, iColumn;
            for (iRow = 1; iRow < 10; iRow++)
            {
                for (iColumn = 1; iColumn < iRow; iColumn++)
                {
                    Console.Write("{0}*{1}={2} ", iColumn, iRow, iRow * iColumn);
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}
posted @ 2023-03-06 21:57  flyall  阅读(57)  评论(0)    收藏  举报