0
点赞
收藏
分享

微信扫一扫

java jvm什么是记忆集,卡表?

爱做梦的老巫婆 2023-07-06 阅读 65
c#笔记

1.1、数据类型

值类型

在这里插入图片描述
需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。

using System;

namespace DataTypeApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

引用类型

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。

换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。

对象类型

对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

# 当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。
object obj;
obj = 100; // 这是装箱

int var;
object obj1 = 10;
var = (int)obj1; // 这是拆箱

指针类型

指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。
声明指针类型的语法:

char* cptr;
int* iptr;

1.2、变量

定义

在这里插入图片描述

1.3、常量

定义

using System;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            const double pi = 3.14;     // 定义一个常量
           
            double r;
            Console.WriteLine("本程序可以计算圆的面积,请输入一个数字作为圆的半径: ");
            r = Convert.ToDouble(Console.ReadLine());
           
            double areaCircle = pi * r * r;
            Console.WriteLine("半径为: {0}, 圆的面积为: {1}", r, areaCircle);
            Console.ReadKey();
        }
    }
}

1.4、运算符

算术运算符
在这里插入图片描述

关系运算符
在这里插入图片描述

逻辑运算符
在这里插入图片描述
位运算符
赋值运算符

1.5、判断

if 语句

if … else语句

嵌套 if 语句

switch 语句

switch(expression){
    case constant-expression  :
       statement(s);
       break; 
    case constant-expression  :
       statement(s);
       break; 
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
       break; 
}

嵌套 switch 语句

条件运算符

1.6、循环

while 循环

  //--------------------------while循环---------------------------------

            Console.Write("\n" + "while循环" + "\n");
            int a = 1;
            while (a<10)
            {
                Console.Write(a + "     ");
                a++;             
            }

for/foreach 循环

  //---------------------------for循环--------------------------------

            Console.Write("for循环"+"\n");
            for (int i = 1; i < 10; i++)
            {
                Console.Write(i + "     ");
            }
 //----------------------------foreach循环-------------------------------

            Console.Write("\n"+"foreach循环" + "\n");
            int[] d = new int[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9};
            foreach (var item in d)
            {
                Console.Write(item + "     ");
            }

do … while 循环

 //-------------------------do...while循环----------------------------------

            Console.Write("\n" + "do...while循环" + "\n");
            int b = 1;
            do
            {
                Console.Write(b+ "     ");
                b++;
            } while (b < 10);

goto

        
            //--------------------------goto---------------------------------

            Console.Write("\n" + "goto" + "\n");
            int c = 1;

            aaa: //aaa是一个标签 在语句前面声明了标签,goto才能调用

            {
                if (c < 10)
                {
                    Console.Write(c + "     ");
                    c++;
                    goto aaa;
                }
            }
            Console.ReadLine();

嵌套循环
break 语句
continue 语句

1.7、数组

声明

int[] array = new int[5];

array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;

for (int i = 0; i < array.Length; i++)
{
    Console.WriteLine(array[i]);
}

初始化
赋值
访问
遍历
多维数组
Array与ArrayList的区别

1.8、枚举

枚举是一个值类型, 包含一组命名的常量, 枚举类型用 enum 关键字定义
声明
访问
与int、string的转换**
判断枚举是否包含id

public enum Color
{
    Red,
    Green,
    Blue    // 注意最后一个常量值没有逗号
}
Color c1  = Color.Red;
Console.WriteLine( c1 );
 
// 控制台输出
// Red

1.9、字符串

字符串比较
字符串替换
字符串连接
判断是否含有字符串
复制字符串
判断是否是以某个字符串结尾
判断是否是以某个字符串开头
字符串判等
字符串格式化
求索引
字符串判空
使用分隔符连接字符串数组
使用分隔符分割字符串
插入字符串
移除字符串
转char[]
大小写转换
去除前后空白字符

1.10、命名空间

定义
using
嵌套命名空间

namespace A{
	namespace B{
		namespace C{
		   ///
		}

   }

}


namespace A.B.C{

}

1.11、类

定义

class(类),是面向对象中的概念,是面向对象编程的基础。类是对现实生活中一类具有共同特征的事务的抽象,用来清晰管理你的行为。

class Program
{
    private int age; // 字段
    public int Age { get; set; }; // 属性
    public Program (age) // 构造函数
    {
      this.age = age;
    }
    
    public int Next() // 方法
    {  
      return age + 1;
    }
 }

# 创建类
Program p = new Program(22);
Program p = new Program() { Age = 22 };

构造函数

成员函数

析构函数

静态成员

在成员前面加上static关键字修饰,可以使其成为静态成员。
静态成员通过类名访问,无法通过实例访问。
静态成员和实例成员不能重名(因为变量是可以和它自己的类名同名,如果同名会无法区分)

class{
	public int 身高;
	public int 体重;
	public static int 腿的数量;
}

密封类

静态类

1.12、结构体

定义

概念:C#的结构体类型(或称为结构)是用户自定义类型的一种, 它为用户将实际应用中数据类型不同,但互相联系的数据看作 一个整体提供了类型支持。

public struct Student//结构体类型名
{
	 //各种成员...:
	 
	 //成员定义格式为: 访问修饰符 成员类型 成员名称
	 //例:
	 public string name;
	 int age;
}

如果在定义结构体时,某个数据成员之前没有public访问修饰符,则结构体类型变量不能访问这个数据成员。(如上面结构体的age变量是不能被访问的)

结构体类型的定义是借助struct关键字向编译器声明了一种新的数据类型;对于该数据类型并没有分配相应的存储空间,因此不能直接对结构体中的变量成员进行访问,赋值等操作;只能在其被实例化之后才可以对其进行操作

结构是密封的、不能继承的。

特点

类与结构体的区别

1.13、接口

定义
在 C# 语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计的。

一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继承。

接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 “是什么” 部分,派生类定义了语法合同 “怎么做” 部分。接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构


interface 接口名称
{
    接口成员;
}

继承
(1)继承的概念
继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。
当创建一个类时,我们不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。
这个已有的类被称为的基类,也叫父类,这个新的类被称为派生类,也叫子类。
继承的思想实现了属于(IS-A)关系。例如,哺乳动物属于(IS-A)动物,狗属于(IS-A)哺乳动物,因此狗属于(IS-A)动物。

 class Animial
    {
        public string name;
        public int age;
        public string  love;
        public void Fisft()
        {
            Console.WriteLine("吃饭不是为了吃,关键是气氛搞起来!");
        }
        public void Second()
        {
            Console.WriteLine("经常被自己的聪明所秀到!");
        }
    }

 class Dog:Animial
    {
    }

 class Program
    {
        static void Main(string[] args)
        {
            Dog dog = new Dog();
            dog.name = "哈士奇";
            dog.age = 02;
            dog.love = "拆家,搞事情,瞪眼睛";
            Console.WriteLine("我的名字叫{0},我今年{1}岁啦,我的爱好是{2}", dog.name, dog.age, dog.love);
            Console.ReadLine();
            dog.Fisft();
            Console.ReadLine();
            dog.Second();
            Console.ReadLine();
        }
    }

1.17、多态性

函数重载

运算符重载

抽象类

虚方法

1.18、运算符重载

定义
运算符重载:通过特定的语法,是某些运算符可以具备特殊的功能。关键字operator,修饰符必须为public static。

using System;

public  struct Point
{
    public double x;
    public double y;
    public Point(double x,double y)
    {
        this.x = x;
        this.y = y;
    }
//运算符重载,使加号具有新的功能
//可以实现两个Point对象直接相加,得到一个新的点
    public static Point operator +(Point p1,Point p2)
    {
        return new Point(p1.x + p2.x, p1.y + p2.y);
    }
    //参数类型可以不相同
    public static Point operator + (Point p1,int a)
    {
        return new Point(p1.x + a, p1.y + a);
    }
//*号是二元运算符,因此必须有两个参数
    public static Point operator *(Point p1,Point p2)
    {
        return new Point(1, 1);
    }
//-号的身份有两种:1是加减乘除的减号,2是负号。为前者时是二元运算符,为后者是一元运算符。
    public static Point operator - (Point p1)
    {
        return new Point(1, 1);
    }
    //【重载--运算符】练习
    public static Point operator --(Point p1)
    {
        return new Point(p1.x-1,p1.y-1);
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        Point p1 = new Point(1, 2);
        Point p2 = new Point(2, 3);
        Point p = p1 + p2;
        //【重载--运算符】练习
        Point p3 = new Point(1, 3);
        p3--;
        Console.WriteLine(p3.x);
        Console.WriteLine(p3.x);
        Console.WriteLine(p3.y);
        p3 = new Point(1, 3);
        --p3;
        Console.WriteLine(p3.x);
        Console.WriteLine(p3.y);
    }
}

1.19、IO操作

File类

Directory类

#C#的System.IO.Directory可以新建目录、删除目录、移动目录、判断目录是否存在。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnCreate_Click(object sender, EventArgs e)
        {
            string dir = Environment.CurrentDirectory + @"\test";
            string dest = Environment.CurrentDirectory + @"\dest";

            if(!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
                MessageBox.Show("目录创建成功!");
            }
            else
            {
                MessageBox.Show("目录已存在!");
            }

            if (Directory.Exists(dir))
            {
                if (Directory.Exists(dest))
                    Directory.Delete(dest);
                Directory.Move(dir, dest);
            }
            MessageBox.Show("目录创建时间:" + Directory.GetCreationTime(dest).ToString());
        }
    }
}


Path类

string filePath = "D:\\Program\\Test\\Config.txt";

#下面是Path类中的一些常用方法及执行的结果:

Path.GetFullPath(filePath);   //执行结果为==>"D:\\Program\\Test\\Config.txt";

Path.GetDirectoryName(filePath); //执行结果为==>D:\\Program\\Test

Path.GetFileName(filePath);  //执行结果为==>Config.txt

Path.GetFileNameWithoutExtension(filePath); //执行结果为==>Config

Path.GetExtension(filePath); //执行结果为==>.txt

Path.GetPathRoot(filePath); //执行结果为==>D:\

FileStream类

StreamReader类

StreamWriter类

BinaryReader类

BinaryWriter类

1.20、预处理

#define
#undef
#if
#else
#elif
#endif
#region
#endregion

在这里插入图片描述

1.21、异常处理

try、catch、finally 、throw
异常类
自定义异常

举报

相关推荐

0 条评论