C#我的笔记

c#学习笔记

一、C# 语言及其特点

C# 语言概念及其特点 C# 是微软发布的一种面向对象的、运行于 .NET Framework 和 .NET Core(完全开源,跨平台)之上的高级程序设计语言;

  • C# 是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的 面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性;

  • 面向对象与面向过程编程语言的区别:
    面向过程:是一种以过程为中心的编程思想。它是一种基础的顺序思维方式,是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响;特性:模块化、流程化;常见的面向过程编程语言 有: C语言、COBOL 语言、Fortran语言 等。(优点:性能比面向对象高,面向对象类调用需要实例化,消耗资源)

    面向对象:是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。它是直接把所有事物都当作独立的对象,处理问题过程中所思考的不再主要是怎样用数据结构来描述问题,而是直接考虑重现问题中各个对象之间的关系。(面向对象方法的基础实现中也包含面向过程思想);特性:抽象 封装 继承 多态;常见的支持面向对象的编程语言有:C++ 语言、C# 语言、Java 语言、Python等。(优点:有封装、继承、多态的特性,故而易维护、易复用、易扩展)

  • Console.Write(); 输出不换行 Console.WriteLine(); 输出并换行

  • Console.ReadLine(); 读取键盘输入的所有字符,返回字符串。按下回车键退出

  • Console.Read(); 读取键盘输入的第一个字符,返回其对应的ASCII值。按下回车键退出

  • Console.ReadKey();
    等待用户按下任意键并执行退出,(此函数的作用是为了在控制台窗口停留一下,直到用户敲击键盘为止。不然运行时,“Hello World!”
    这句话会在控制台窗口一闪而过,没法查看。)

  • ?? “null coalescing” operator 是c#新提供的一个操作符,
    这个操作符提供的功能是判断左侧的操作数是否是null, 如果是则返回结果是右侧的操作数;非null则返回左侧的操作数。

Console.WriteLine()与MessageBox.Show()的区别

Console.WriteLine(); 将当前行终止符写入标准输出流 在学习控制台应用程序时经常用,输出到控制台

MessageBox.Show(); 显示可包含文本、按钮和符号(通知并指示用户)的消息框 在windows窗体应用程序中弹出消息框

foreach

C# 也支持 foreach 循环,使用 foreach 可以迭代数组或者一个集合对象。

C# 的 foreach 循环可以用来遍历集合类型,例如数组、列表、字典等。它是一个简化版的 for 循环,使得代码更加简洁易读。

以下是 foreach 循环的语法:

foreach (var item in collection)
{
    // 循环
}

collection 是要遍历的集合,item 是当前遍历到的元素

以下实例有三个部分:

通过 foreach 循环输出整型数组中的元素。
通过 for 循环输出整型数组中的元素。
foreach 循环设置数组元素的计算器。

class ForEachTest
{
    static void Main(string[] args)
    {
        int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };
        foreach (int element in fibarray)
        {
            System.Console.WriteLine(element);
        }
        System.Console.WriteLine();


        // 类似 foreach 循环
        for (int i = 0; i < fibarray.Length; i++)
        {
            System.Console.WriteLine(fibarray[i]);
        }
        System.Console.WriteLine();


        // 设置集合中元素的计算器
        int count = 0;
        foreach (int element in fibarray)
        {
            count += 1;
            System.Console.WriteLine("Element #{0}: {1}", count, element);
        }
        System.Console.WriteLine("Number of elements in the array: {0}", count);
    }
}

以下实例我们使用 foreach 来遍历一个列表:

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个字符串列表
        List<string> myStrings = new List<string>();

        // 向列表添加一些字符串元素
        myStrings.Add("Google");
        myStrings.Add("Runoob");
        myStrings.Add("Taobao");

        // 使用 foreach 循环遍历列表中的元素
        foreach (string s in myStrings)
        {
            Console.WriteLine(s);
        }

        // 等待用户按下任意键后退出程序
        Console.ReadKey();
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

Google
Runoob
Taobao

隐式类型转换和显示类型转换

  1. 自动类型转换(隐式类型转换)
    不同类型之前进行计算时,数据类型会往大的数据类型转换
  2. 强制类型转换(显示类型转换)
    强制类型转换往往是从宽大的类型转换为小的数据类型
  int a = 10;
	double b = 20.5;
	double c = a +b;//低级转高级,自动转换
	int d = (int) c;//高级转低级,强制转换

使用Parse进行数据类型转换

int.Parse(string value)	//字符串类型转换成整数类型(int)
char.Parse(string value)	//字符串类型转换成字符类型(char)
double.Parse(string value)	//字符串类型转换成单精度浮点类型(double)
Single.Parse(string value)	//字符串类型转换成双精度浮点类型(float)

注意:

  • 该方式是将字符串转换为整数类型;
  • 如果字符串内容为空或者null时,则抛出ArgumentNullException异常;
  • 如果字符串内容不是数字,则抛出FormatException异常;
  • 如果字符串内容所表示数字超出指定的数据类型可表示的范围,则抛出OverflowException异常。

使用TryParse进行数据类型转换

int.TryParse(string s, out int result)	//字符串类型转换成整数类型(int)
char.TryParse(string s, out char result )	//字符串类型转换成字符类型(char)
double.TryParse(string s, out double result)	//字符串类型转换成单精度浮点类型(double)
Single.TryParse(string s, out float result)	//字符串类型转换成双精度浮点类型(float)

注意:

  • 该方式是将字符串转换为整数类型,但是它不会出现异常。
  • 如果转换成功返回 true,如果转换失败返回 false。
  • 很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。
Console.Write("请输入int类型的整数:");
int result = 0;
bool flag = int.TryParse(Console.ReadLine(),out result);
if(flag)
{
	Console.WriteLine($"您输入的数字为{result}");
}
else
{
	Console.WriteLine("输入错误!");
}

convert

C# Convert 方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值转换成任意数据类型,前提是不要超出指定数据类型的范围。
具体的语法形式如下。

数据类型 变量名 = convert.To数据类型(变量名);

这里 Convert.To 后面的数据类型要与等号左边的数据类型相匹配。

Convert.ToInt16() 转换为整型(short)
Convert.ToInt32() 转换为整型(int)
Convert.ToInt64() 转换为整型(long)
Convert.ToChar() 转换为字符型(char)
Convert.ToString() 转换为字符串型(string)
Convert.ToDateTime() 转换为日期型(datetime)
Convert.ToDouble() 转换为双精度浮点型(double)
Conert.ToSingle() 转换为单精度浮点型(float)

注意:

  • 不完全遵循四舍五入,如果value为两个整数中间的数字,则返回二者中的偶数。
  • 如果相兼容的两个变量,可以使用自动类型转化或者强制类型转换.
  • 如果两个变量不兼容,我们就需要用到convert类进行转换。
  • 转换为int型数据后进行 了四舍五入的计算。
  • 使用Convert进行强制类型转化也要满足一个条件;那就是面上要过得去。例如:string num =“123abc”;不能转换成数值数值型

使用 is 进行数据类型转换

object o = "abc";
if (o is string) //执行第一次类型兼容性检查
{
    string s = (string)o; //执行第二次类型兼容性检查,并转换
    MessageBox.Show("转换成功!");
}
else
{
    MessageBox.Show("转换失败!");
}

is转换规则:

  • 检查对象类型的兼容性,并返回结果true(false);
  • 不会抛出异常;
  • 如果对象为null,刚返回false;

使用 as 进行数据类型转换

 object o = "abc";
string s = o as string; //执行第一次类型兼容性检查,并返回结果
if (s != null)
{
    MessageBox.Show("转换成功!");

}
else
{
    MessageBox.Show("转换失败!");
}

as转换规则:

  • 检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null; 不会抛出异常;
  • 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
  • as 比 is 少执行一次兼容性检查,性能可能会高一点点。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值