.net笔记

一 .net简介

2002年微软公司发布的第一个.NET框架————.NET Framework;.NET Core是一个开源的模块化的Framework,不管是开发web或移动设备都在同一个Framework(.NET Core)下运行,而且 .NET Core也可在不同的操作系统上运行,包括Windows、linux、MacOS,实现了跨平台跨设备。

.NET Core & .NET Framework 都是 NET Standard Library 的实现,一种是跨平台,而另一种是Windows下特有的,除实现NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的实现。.NET Standard Library 是跨操作系统的关键所在,它定义了一组接口,而每个操作系统有各自的实现,.NET Core通过nuget可以动态下载当前操作系统的实现,从而实现跨操作系统(暨跨操作系统共享代码)*。

(Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。)*

.NET Core 更依赖于Nuget,允许本地application在部署时动态下载需要的class library。而.NET Framework需要在系统中预装。这样.NET Core的部署比.NET Framework 更简单快速同样也更轻便。

.net framwork和 .net core区别

Docker容器支持都支持,.net Core就是以Docker为基础的
在命令行上重复回复net Core更快
跨平台仅.net Core支持
已经有一个预配置的环境和系统.net framwork
系统稳定性net framwork 更胜一筹,毕竟.net core才刚发布
是否有一个成熟的团队net core 需要一个学习曲线

在以下情况,对服务器应用程序使用 .NET Core:

  1. 用户有跨平台需求。
  2. 用户正在面向微服务。
  3. 用户正在使用 Docker 容器。
  4. 需要高性能和可扩展的系统。
  5. 需按应用程序提供并行的 .NET 版本。

在以下情况,对服务器应用程序使用 .NET Framework :

  1. 应用当前使用 .NET Framework(建议扩展而不是迁移)。
  2. 应用使用不可用于 .NET Core 的第三方 .NET 库或 NuGet 包。
  3. 应用使用不可用于 .NET Core 的 .NET 技术。
  4. 应用使用不支持 .NET Core 的平台。

详细网络来源

创建一个.net core项目

1.要开始构建.NET应用程序,您只需下载并安装.NET SDK(软件开发工具包)即可。
下载.NET SDK

2.检查所有安装正确
安装完成后,打开新的命令提示符并运行以下命令:!#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET在这里插入图片描述
帮助指令 dotnet --help
3.创建应用
dotnet new 创建各种类型的项目
在这里插入图片描述
该dotnet命令为您创建new类型的应用程序console。该-o参数创建一个名为myApp存储应用程序的目录,并使用所需文件填充该目录。该cd myApp命令将您带入新创建的app目录。

4. 编译项目

dotnet  build

5.运行你的程序
在这里插入图片描述

项目目录

在这里插入图片描述

目录说明
objobj 目录包括项目运行需要引用的一些类、方法和接口
binbin 目录是项目程序目录,包括运行时配置文件等等
Program.cs这个文件包含了 ASP.NET Core 应用的 Main 方法,负责配置和启动应用程序
myApp.csproj项目的配置文件 包括当前项目的.netcore版本,还有引用的nuget包信息;

vscode项目创建和引用的例子

项目创建引用详情

扩展nuget包管理器
1.安装
扩展组件中搜索NuGet Package Manager,安装nuget包管理器
2.使用nuget包管理器
ctrl+shift+p,弹框中输入nuget package manager:add package;回车后按需引入包,在项目.csproj查看对应配置

二 C#简介

C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。

C# 成为一种广泛应用的专业语言的原因:

  1. 现代的、通用的编程语言。
  2. 面向对象。
  3. 容易学习。
  4. 结构化语言。
  5. 它产生高效率的程序。
  6. 它可以在多种计算机平台上编译。
  7. .Net 框架的一部分。

C# 一些重要的功能:

  1. 布尔条件(Boolean Conditions)
  2. 自动垃圾回收(Automatic Garbage Collection)
  3. 标准库(Standard Library)
  4. 组件版本(Assembly Versioning)
  5. 属性(Properties)和事件(Events)
  6. 委托(Delegates)和事件管理(Events Management)
  7. 易于使用的泛型(Generics)
  8. 索引器(Indexers)
  9. 条件编译(Conditional Compilation)
  10. 简单的多线程(Multithreading)
  11. LINQ 和 Lambda 表达式
  12. 集成 Windows

C# 数据类型

  1. 值类型(Value types)
  2. 引用类型(Reference types)
  3. 指针类型(Pointer types)

值类型的变量可存储数据,引用类型的变量可存储对实际数据的引用。 引用类型的实例也被称作对象。 仅在不安全模式下才可使用指针类型。

c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)
1、整型
在这里插入图片描述
2、浮点类型
在这里插入图片描述
3、decimal类型
在这里插入图片描述
4、bool(布尔)类型
在这里插入图片描述
5、char字符类型
在这里插入图片描述
6、引用类型(Object类型和字符串类型)
在这里插入图片描述

C# 类型转换
namespace TypeConversionApplication
{
class StringConversion
{
static void Main(string[] args)
{
int i = 75;
float f = 53.005f;
double d = 2345.7652;
bool b = true;

        Console.WriteLine(i.ToString());
        Console.WriteLine(f.ToString());
        Console.WriteLine(d.ToString());
        Console.WriteLine(b.ToString());
        Console.ReadKey();
        
    }
}

}
更多转换方式

C# 运算符

  1. 算术运算符
    算术运算符

  2. 关系运算符
    关系运算符

  3. 逻辑运算符
    在这里插入图片描述

  4. 位运算符
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190514180357951.png

  5. 赋值运算符
    在这里插入图片描述

  6. 其他运算符
    在这里插入图片描述
    C#运算符优先级
    在这里插入图片描述
    C# 判断
    在这里插入图片描述
    C# 循环

{

class Program
{
    static void Main(string[] args)
    {
        /* for 循环执行 */
        for (int a = 10; a < 20; a = a + 1)
        {
            Console.WriteLine("a 的值: {0}", a);
        }
        Console.ReadLine();
    }
}

}

C# 封装
封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。

  1. public:所有对象都可以访问;
  2. private:对象本身在对象内部可以访问;
  3. protected:只有该类对象及其子类对象可以访问;
  4. internal:同一个程序集的对象可以访问;
  5. protected internal:访问限于当前程序集或派生自包含类的类型。

C# 方法
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类。

要使用一个方法,您需要:

  • 定义方法
  • 调用方法

C# 可空类型(Nullable)

C# 单问号 ? 与 双问号 ??
? : 单问号用于对 int,double,bool 等无法直接赋值为 null 的数据类型进行 null 的赋值,意思是这个数据类型是 NullAble 类型的。
?? : 双问号 可用于判断一个变量在为 null 时返回一个指定的值。
Null 合并运算符( ?? )
Null 合并运算符用于定义可空类型和引用类型的默认值。Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 Null。Null 合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。
{
class NullablesAtShow
{

  static void Main(string[] args)
  {
     
     double? num1 = null;
     double? num2 = 3.14157;
     double num3;
     num3 = num1 ?? 5.34;      // num1 如果为空值则返回 5.34
     Console.WriteLine("num3 的值: {0}", num3);
     num3 = num2 ?? 5.34;
     Console.WriteLine("num3 的值: {0}", num3);
     Console.ReadLine();

  }

}
}
num3 的值: 5.34
num3 的值: 3.14157

C# 数组(Array)
数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。

声明数组 datatype[] arrayName;
其中,datatype 用于指定被存储在数组中的元素的类型。
[ ] 指定数组的秩(维度)。秩指定数组的大小。
arrayName 指定数组的名称。

double[] balance;
初始化数组 double[] balance = new double[10];
赋值给数组 double[] balance = new double[10]; balance[0] = 4500.0;
{
class MyArray
{
static void Main(string[] args)
{
int [] n = new int[10]; /* n 是一个带有 10 个整数的数组 */
int i,j;

     /* 初始化数组 n 中的元素 */         
     for ( i = 0; i < 10; i++ )
     {
        n[ i ] = i + 100;
     }

     /* 输出每个数组元素的值 */
     for (j = 0; j < 10; j++ )
     {
        Console.WriteLine("Element[{0}] = {1}", j, n[j]);
     }
     Console.ReadKey();
  }

}
}

C#字符串
class StringProg
{
static void Main(string[] args)
{
string str1 = “This is test”;
string str2 = “This is text”;

     if (String.Compare(str1, str2) == 0)
     {
        Console.WriteLine(str1 + " and " + str2 +  " are equal.");
     }
     else
     {
        Console.WriteLine(str1 + " and " + str2 + " are not equal.");
     }
     Console.ReadKey() ;
  }

}

C# 结构体(Struct)
在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。
struct Books
{
public string title;
public string author;
public string subject;
public int book_id;
};

public class testStructure
{
public static void Main(string[] args)
{

  Books Book1;        /* 声明 Book1,类型为 Book */
  Books Book2;        /* 声明 Book2,类型为 Book */

  /* book 1 详述 */
  Book1.title = "C Programming";
  Book1.author = "Nuha Ali"; 
  Book1.subject = "C Programming Tutorial";
  Book1.book_id = 6495407;

  /* book 2 详述 */
  Book2.title = "Telecom Billing";
  Book2.author = "Zara Ali";
  Book2.subject =  "Telecom Billing Tutorial";
  Book2.book_id = 6495700;

  /* 打印 Book1 信息 */
  Console.WriteLine( "Book 1 title : {0}", Book1.title);
  Console.WriteLine("Book 1 author : {0}", Book1.author);
  Console.WriteLine("Book 1 subject : {0}", Book1.subject);
  Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);

  /* 打印 Book2 信息 */
  Console.WriteLine("Book 2 title : {0}", Book2.title);
  Console.WriteLine("Book 2 author : {0}", Book2.author);
  Console.WriteLine("Book 2 subject : {0}", Book2.subject);
  Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);       

  Console.ReadKey();

}
}

C# 结构的特点

  1. 结构可带有方法、字段、索引、属性、运算符方法和事件。
  2. 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义默认的构造函数。默认的构造函数是自动定义的,且不能被改变。
  3. 与类不同,结构不能继承其他的结构或类。
  4. 结构不能作为其他结构或类的基础结构。
  5. 结构可实现一个或多个接口。
  6. 结构成员不能指定为 abstract、virtual 或 protected。
  7. 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
  8. 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

结构和类的区别:
1、结构是值类型,它在栈中分配空间;而类是引用类型,它在堆中分配空间,栈中保存的只是引用。
2、结构类型直接存储成员数据,让其他类的数据位于堆中,位于栈中的变量保存的是指向堆中数据对象的引用。

C# 中的简单类型,如int、double、bool等都是结构类型。如果需要的话,甚至可以使用结构类型结合运算符运算重载,再为 C# 语言创建出一种新的值类型来。

由于结构是值类型,并且直接存储数据,因此在一个对象的主要成员为数据且数据量不大的情况下,使用结构会带来更好的性能。

因为结构是值类型,因此在为结构分配内存,或者当结构超出了作用域被删除时,性能会非常好,因为他们将内联或者保存在堆栈中。当把一个结构类型的变量赋值给另一个结构时,对性能的影响取决于结构的大小,如果结构的数据成员非常多而且复杂,就会造成损失,接下来使用一段代码来说明这个问题。

结构和类的适用场合分析:
1、当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;
2、对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下,使用结构的成本较低;
3、在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。
4、大多数情况下,目标类型只是含有一些数据,或者以数据为主。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET笔记博客源码是一个用于创建和管理个人或团队博客的开源项目。它基于ASP.NET框架,使用C#作为主要编程语言。该项目的目的是为用户提供一个简单易用的平台,方便他们记录和分享个人或团队的经验、知识和想法。 在ASP.NET笔记博客源码中,主要包含以下几个核心模块: 1. 用户认证和授权:该模块负责用户的注册、登录和权限管理。用户可以通过创建自己的账户来使用博客系统,并根据不同的权限设置来管理自己的博客内容,如发布、编辑和删除博文等。 2. 博文管理:该模块用于管理博客的文章。用户可以使用富文本编辑器来撰写文章,并可以对文章进行分类、标签和搜索。此外,用户还可以管理自己的评论和回复。 3. 主题和样式:该模块允许用户自定义博客的主题和样式。用户可以选择不同的主题模板,如布局、颜色等,以满足自己的需求和喜好。 4. 评论和交互:用户可以对其他人的文章进行评论和回复,并可以与其他用户进行互动和讨论。这增加了博客的交互性和社交性。 此外,ASP.NET笔记博客源码还可以进行扩展和定制,以满足特定需求。用户可以添加其他功能模块,如图片库、标签管理和站点统计等,以实现更加丰富和个性化的博客。 总结来说,ASP.NET笔记博客源码是一个基于ASP.NET框架的开源项目,用于创建和管理个人或团队的博客。它提供了用户认证、博文管理、主题样式和评论交互等核心功能,同时支持扩展和定制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值