开源 C# 快速开发(一)基础知识

文章的目的为了记录使用C# 开发学习的经历。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

相关链接:

开源 C# 快速开发(一)基础知识

开源 C# 快速开发(二)基础控件

开源 C# 快速开发(三)复杂控件

开源 C# 快速开发(四)自定义控件--波形图

开源 C# 快速开发(五)自定义控件--仪表盘

开源 C# 快速开发(六)自定义控件--圆环

开源 C# 快速开发(七)通讯--串口

开源 C# 快速开发(八)通讯--Tcp服务器端

开源 C# 快速开发(九)通讯--Tcp客户端

开源 C# 快速开发(十)通讯--http客户端

推荐链接:

开源 C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

开源 C# .net mvc 开发(六)发送邮件、定时以及CMD编程-CSDN博客

开源 C# .net mvc 开发(七)动态图片、动态表格和json数据生成-CSDN博客

开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用-CSDN博客

开源 C# .net mvc 开发(九)websocket--服务器与客户端的实时通信-CSDN博客

本章节主要内容是:C#开发中工程结构,和基础知识。

一、基本介绍

C#(发音为 "C Sharp")是一种现代的、面向对象的、类型安全的编程语言。它由微软团队在 Anders Hejlsberg(Turbo Pascal 和 Delphi 之父)的领导下开发,并于 2000 年首次发布。

C# 的根源可以追溯到 C 语言家族(如 C, C++),因此语法上与 Java 和 C++ 非常相似,但它在设计上吸取了多种语言的优点,并加入了许多创新特性。它的核心目标是让开发者能够构建在 .NET 平台上运行的各种各样健壮、高性能且安全的应用程序。

优点

优点 说明
易于学习 语法清晰、结构良好,尤其对有 C++ 或 Java 背景的开发者非常友好。
功能强大 拥有丰富的语言特性和庞大的类库,几乎能应对任何开发场景。
高性能 持续的版本更新(如 .NET Core 以来)使其性能达到了顶级水平,可与 Go、Java 等媲美。
强大的工具支持 Visual Studio 被誉为世界上最好的 IDE 之一,提供了无与伦比的调试、代码补全和项目管理体验。Visual Studio Code 也是一个轻量级但强大的选择。
强大的社区和企业支持 拥有庞大的开发者社区和微软的强力支持,文档齐全,遇到问题容易找到解决方案。
跨平台 现代的 .NET 是真正的跨平台框架,为开发者提供了极大的灵活性。

二、工程结构

分解决方案和项目

1.解决方案的结构

MyCompany.MyApplication/ # 解决方案根目录

├── MyCompany.MyApplication.sln # 解决方案文件

├── src/ # 源代码目录(存放所有项目)

│ ├── MyCompany.MyApplication.Web/ # Web API 项目

│ │ ├── Controllers/

│ │ ├── Models/

│ │ ├── Program.cs # 程序入口(.NET 6+)

│ │ ├── Startup.cs # 程序入口(.NET 5及以前)

│ │ └── MyCompany.MyApplication.Web.csproj

│ │

│ ├── MyCompany.MyApplication.Core/ # 核心业务逻辑类库

│ │ ├── Entities/ # 实体类

│ │ ├── Services/ # 业务服务

│ │ ├── Interfaces/ # 服务接口(依赖注入)

│ │ └── MyCompany.MyApplication.Core.csproj

│ │

│ └── MyCompany.MyApplication.Infrastructure/ # 基础设施类库

│ ├── Data/ # 数据访问层(DbContext)

│ ├── Repositories/ # 仓储实现

│ └── MyCompany.MyApplication.Infrastructure.csproj

├── tests/ # 测试项目目录

│ ├── MyCompany.MyApplication.Web.Tests/ # Web 项目测试

│ └── MyCompany.MyApplication.Core.Tests/ # Core 项目测试

└── docs/ # 文档目录(可选)

2.项目结构(最常用)

最常用的Form1.cs为窗体,

Program.cs为程序入口

三、设计器和代码编辑器

从工具箱中可以直接拖动控件到设计器,在属性窗口中可以设置选中的控件的属性。

代码编辑器用于

四、清晰度问题

我用的vs是2019版本的,VS2019在Windows 10下显示不清晰,通常和高分辨率屏幕下的缩放设置、硬件加速或DPI适配有关。在网上有许多方法,试了以后显示还是模糊。

在Program.cs中,使用以下代码,可以程序显示清晰

复制代码
/*
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace ctrl
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
*/


using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace ctrl
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

            if (Environment.OSVersion.Version.Major >= 6)
                SetProcessDPIAware();
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //此处设置启动窗口
            Application.Run(new Form1());
            //Application.Run(new McuConfig());
        }
        [System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern bool SetProcessDPIAware();
    }
}
相关推荐
睡不醒男孩0308234 小时前
第二篇:深入探索开源数据库高可用:构建基于CLup的PostgreSQL生产级高可用与读写分离架构
数据库·postgresql·开源·clup
凌云拓界8 小时前
文件管理:让AI安全操作你的电脑 ——CogitoAgent开发实战(三)
javascript·人工智能·架构·开源·node.js
冬奇Lab9 小时前
每日一个开源项目(第126篇):turbovec - 向量索引的内存杀手,1千万文档从31GB压到4GB
人工智能·开源·llm
CRMEB系统商城10 小时前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php
leo__52012 小时前
C# 虚拟键盘(软键盘)实现
单片机·c#·计算机外设
网络研究院12 小时前
AgentGG:开源的代理式 SAST 扫描器
开源·github·工具·网络研究观·agentgg
sbjdhjd12 小时前
面试(5)| 3.5 小时面试复盘第五弹:加班出差 + 客户响应 + 压力面全拆解
经验分享·程序人生·面试·职场和发展·开源·跳槽·求职招聘
梦梦代码精13 小时前
为什么这个开源的AI平台会火?有点东西。。。
人工智能·算法·机器学习·docker·开源
周杰伦fans14 小时前
AutoCAD C# 二次开发:如何精确监听工作空间切换事件
前端·c#
用户37215742613514 小时前
如何使用 C# 自动调整 Excel 行高和列宽
c#