最新要闻
- 女生靠摆地摊还清百万负债 还有人两周赚1万5、月入万元:摆摊真这么赚钱?
- 【天天速看料】周鸿祎:中国与GPT-4差距两三年 不存在难以逾越技术障碍
- 小彭汽车向小鹏汽车道歉:盘点那些神级模仿的老年代步车
- 【速看料】《三体》动画今日正式完结!豆瓣评分仅3.8:半数一星差评
- 焦点关注:998的比亚迪秦PLUS DM-i多能跑?博主极端工况实测:合资还怎么打
- 速看:76人攻防俱佳夺冠有望,湖人防守第一进攻拉胯,勇士卫冕基本无望
- 全球新资讯:女子模仿网红穿搭遭对方粉丝网暴!法院判网红连续15天道歉、赔偿
- 男子喝红牛味道不对发现是累牛引热议:康帅傅、雷碧等山寨货为何层出不穷
- 用4年不卡!Redmi Note 12 Turbo配置公布:16GB+1TB、5000mAh
- 环球今头条!男子抖音晒夜爬泰山到井盖下躲风 景区回应:核实后会处罚
- 每日速看!因航班延误缺考复试 考研生崩溃大哭:对不起父母 对不起自己的努力
- 猪肉含量≥85% 一口全是肉:亚明猪肉烤肠29.9元2斤大促
- 越秀资本03月24日获深股通增持98.52万股
- 精选!宏基e1471g怎么样
- 英特尔联合创始人戈登·摩尔去世:享年94岁 “摩尔定律”提出者
- 天天热点!公司回应招聘前台要求身材 硬性要求臀围86腰围58:网友吐槽离谱
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
dotnet-csharp
- 为什么要从基础看起
- 从.net framework3.5就开始接触c#,到现在.net7的崛起,期间有大量的新技术和框架冲击着我,MVC1.0的时候放弃过,感觉无所适从,linq也是近几年才开始使用,感觉现在写代码的方式已经被时代所淘汰,因此萌生出了从头捋顺一次。
- 学习的时候并没有通过一个完整的体系去学习,而是在实践中去探索,这样带来一个问题,什么是最佳实践,应该如何去做技术选型。微软创造出了很多轮子,哪一个才是适合的?希望能从微软的官方文档中寻找到答案
.NET体系结构
简而言之,.NET是公共语言运行时(CLR)的虚拟执行系统和一组类库的集合
(资料图片仅供参考)
CLR:公共语言结构(CLI)国际标准的实现
CLI:创建执行和开发环境的基础,语言和库可以无缝的协同工作。
c#编写的代码可以编译成复核CLI规范的中间语言(IL),IL代码和资源存储在.dll的程序集中
程序运行流程
- 程序集加载到CLR中
- CLR直接执行实时编译(JIT),将IL代码转换为本机指令
- CLR可提供自动垃圾回收,异常处理和资源管理的服务
CLR执行的代码成为"托管代码",而"非托管代码"被编译成面向特定平台的本机语言
优势
- 底层编译环境一样,c#生成的IL代码可与.Net其他语言进行交互(底层一样)
- .NET还有大量的库,可以通过引用命名空间来使用
类型和遍历
值类型和引用类型
值类型
简单类型(char是值类型),枚举类型(enum),结构类型(struct),null的值类型(int?),元组值类型
元组值类型(c# 7.0)
// 1.直接声明(double, int) t1 = (4.5, 3)Cosole.WriteLine($"elements is {t1.Item1} and {t1.Item2}");// 2.有变量名(double Sum, int Count) t2 = (4.5, 3);Console.WriteLine($"Sum of {t2.Count} elements is {t2.Sum}.");
引用类型
- 类类型:基类为object的继承类,string(UTF-16代码单元序列),用户定义类(class C{})
- 接口类型(interface I{})
- 数组 int[], int[,] int[i] [j]
- 委托类型(delegate int D{})
- record类型
record类型(C# 9.0)
只读属性的轻量级、不可变数据类型
record Class(class可省略)引用类型记录
public record Params([property: JsonPropertyName("param1")] string Param1,[property:JsonPropertyName("param2")] int Param2);// 等价于 public class Person : IEquatable
{ [JsonPropertyName("param1")] public string Param1 { get; set; } [JsonPropertyName("param2")] public int Param2 { get; set; } }// 可继承public record ExtParams(string Param1, int Param2 string Param3, string Param4):Params(Param1,Param2)// 与元组值类型合用Params params = new Params("param1", 2);var (item1, item2) = params;Console.WriteLine($"item1={item1},item2={item2}");//输出:item1=item1,item2=2// 使用with克隆var pClone1 = params with { }; // Param1 = Param1,Param2 = 2var pClone2 = params with { Param2=4 }; // Param1 = Param1,Param2=4// 可拥有自定义属性public record class Params1(double p1, double p2){ public double p3 { get; set; }} record Struct(c# 10.0)值类型记录
// 与record class类似public record struct RecordS1(int r1, int r2);
record Class和record Struct不同点
record Calss 的实例不可写 record Struct可读可写(readonly除外)
public record class RecordS1(int r1, int r2);public readonly record struct RecordS2(int r1, int r2);public record struct RecordS3(int r1, int r2);var record1 = new RecordS1(1, 2);record1.r1 = 2;//错误var record2 = new RecordS2(1, 2);record2.r1 = 2;//错误var record3 = new RecordS3(1, 2);record3.r1 = 2;//通过
拥有自定义属性不同:record Structural自定义属性必须初始化
// record class public record class RecordS1(int r1, int r2) { public int r3 { get; set; } } // readonly record struct public readonly record struct RecordS2(int r1, int r2) { public int r3 { get; } = default;//必须初始化,r3无法赋值 } // record struct public record struct RecordS3(int r1, int r2) { public int r3 { get; set; } = default;//必须初始化 }
装箱 拆箱
- 装箱 将值类型的放到引用类型中
- 拆箱 从引用类型中拿出值类型来
C#类型和成员
Flag特性
指示可以将枚举作为位域(即一组标志)处理
[Flags]public enum Seasons{ None = 0, Summer = 1, Autumn = 2, Winter = 4, Spring = 8, All = Summer | Autumn | Winter | Spring}Seasons season = Seasons.All// 加上后输出season.ToString()为Summer,Autumn,Winter,Spring// 不加上输出season.ToString()为15// 加上后如何输出15 (int)season
C# 程序构建基块
可访问性
- public不受限制
- private 仅限于此类
- protected 仅限于此类或其派生类
- internal 仅可访问当前程序集(exe或dll)
- protected internal 同一程序集或派生类
- private protected 此类或派生类
属性
在类或方法上的标签
定义
// 创建了一个Help的属性,引用Attribute基类public class HellpAttribute:Attribute{string _url;string _topic;public HelpAttribute(string url)=> _url=url;public string Url => _url;public string Topic{get => _topic;set => _topic = value;}}
使用
// 在类和方法上添加了属性[Help("url")]public class Widget{[Help("url/features", Topic = "Display")]public void Display(string text) { }}
解析和操作 - 利用反射
// 通过Type获得通用的属性Type widgetType = typeof(Widget);// 获得class类的属性object[] widgetAtt = widgetType.GetCustomAttribytes(typeof(HelpAttribute), false);if(widgetAtt.Length > 0){HelpAttribute attr = (HelpAttribute)widgetAttr[0];// 输出 attr.Url attr.Topic}// 获得Display方法的属性System.Reflection.MethodInfo method = widgetType.GetMethod(nameof(Widget.Display));object[] displayMethodAttr = method.GetCustomAttributes(typeof(HelpAttribute), false);if(displayMethodAttr.Length >0){HelpAttribute attr = (HelpAttribute)displayMethodAttr[0];// 输出 attr.Url attr.Topic}
弃元在元组的使用
人为取消的占位符(_)
// 方式一:返回了多个返回值,通过元组返回var (_, _,pop1, _, pop2) = QueryData("New", 1960, 2010);static (string, double, int, int, int)QueryData(string name, int year1, int year2){return (name, year1, year1-year2, yrear2, yrea1+yrea2);}// 方式二 使用Deconstruct(解构)方法并结合out返回元组public class Person{ public Person(){} // 使用结构方法 public Deconstruct(out string fname, out string lname, out string city, out string state){ fname = "w"; lname = "h"; city = "wf"; state = "1"; }}var p = new Person();var (fName, _, city, _) = p;
关键词:
dotnet-csharp
焦点精选!C++ sizeof与strlen,并借此明晰内存对齐
女生靠摆地摊还清百万负债 还有人两周赚1万5、月入万元:摆摊真这么赚钱?
【天天速看料】周鸿祎:中国与GPT-4差距两三年 不存在难以逾越技术障碍
当前热文:Windows OpenGL ES 图像 GPUImageAmatorkaFilter
javascript的基础知识
小彭汽车向小鹏汽车道歉:盘点那些神级模仿的老年代步车
【速看料】《三体》动画今日正式完结!豆瓣评分仅3.8:半数一星差评
焦点关注:998的比亚迪秦PLUS DM-i多能跑?博主极端工况实测:合资还怎么打
当前关注:Office2019永久激活工具_Office2019激活工具神龙版v2023.2
天天快播:What is static and dynamic libraries
[白嫖系列] 白嫖一个永久免费的eu.org域名
速看:76人攻防俱佳夺冠有望,湖人防守第一进攻拉胯,勇士卫冕基本无望
全球新资讯:女子模仿网红穿搭遭对方粉丝网暴!法院判网红连续15天道歉、赔偿
男子喝红牛味道不对发现是累牛引热议:康帅傅、雷碧等山寨货为何层出不穷
资讯推荐:关于aws-s3-bucket-静态网站托管相关的查询-S3.Client.get_bucket_website(**kwargs)
天天速读:西班牙经济连续两年增速达5.5%
用4年不卡!Redmi Note 12 Turbo配置公布:16GB+1TB、5000mAh
环球今头条!男子抖音晒夜爬泰山到井盖下躲风 景区回应:核实后会处罚
【焦点热闻】YCSB工具原理重点内容解读(二)
CSS鼠标样式(cursor)总结(转载)
每日速看!因航班延误缺考复试 考研生崩溃大哭:对不起父母 对不起自己的努力
猪肉含量≥85% 一口全是肉:亚明猪肉烤肠29.9元2斤大促
越秀资本03月24日获深股通增持98.52万股
精选!宏基e1471g怎么样
热文:czide-CALLAN自制语言(python)
环球短讯!《安富莱嵌入式周报》第307期:开源智能制冷板,Keil MDK6发布时间,编程助手Github Copilot X,Matlab2023,高品质电容
英特尔联合创始人戈登·摩尔去世:享年94岁 “摩尔定律”提出者
天天热点!公司回应招聘前台要求身材 硬性要求臀围86腰围58:网友吐槽离谱
每日消息!学习 React 需要具备的 JavaScript 知识
全球观点:gs_probackup增量备份ptrack.cpp : 88
农事贵争时 物资“抢运”忙——黑龙江部分地区备春耕铁路运输见闻
环球观焦点:中国驻科威特大使馆发布斋月期间领事温馨提醒
妮维雅SPA级氨基酸洗面奶19.9元官方大促:原价87.9元
库克中国行:晒和黄龄合影、宣布苹果捐赠增加至1亿元支持教育事业
天天时讯:读Java性能权威指南(第2版)笔记27_线程和同步性能上
热资讯!蓝盘、紫盘、黑盘?2023年机械硬盘怎么买?
世界快看点丨《互联网广告管理办法》公布:弹出广告不能“一键关闭”最高可罚3万
今日精选:在 Ubuntu 和 Fedora 中设置 Python 开发环境
世界今日报丨网友修iPhone偶遇苹果CEO库克:让他在碎了的后盖上签了个名
90后情侣3年存100万裸辞飞荷兰 网友热议:有勇气活的很洒脱
信息:俄称打击乌军人员装备 乌称击退俄军进攻
环球短讯!12-指针02
全球今亮点!C++ 虚函数(virtual) 和纯虚函数(pure virtual) 的区别
40秒看天宇上演“星月神话”:被月亮星星浪漫到了 月牙慢慢掩盖金星
热门:完全禁用汽柴油?中石化及专家回应了
AMD RX 7900 XTX超频3.4GHz:功耗失控650W!还是打不过RTX 4090
环球实时:ChatGPT开放第三方插件!瞬间 其他AI成了绝望的文盲
快消息!英国监管机构相信微软不会独占CoD
全球滚动:安全环保标语8字_安全环保标语有哪些?
信息:中国动力电池发展正当其时 锂电隔膜产业乘势而上
世界今日报丨使用 PC 端浏览器开发者工具对移动端真机环境 Web 页面进行远程调试
每日看点!Microsoft edge锁定在任务栏上,被修改主页360的解决方法
全球热消息:深圳一公司发文拒招已婚未育员工:回应如此大言不惭
世界新动态:郭明錤:iPhone 15全系灵动岛 苹果升级传感器后体验更强大了
全球热点评!蜗牛的资料和特点分别是什么
天天新消息丨Midjourney AI绘画使用指南
Django笔记七之ManyToMany和OneToOne介绍
4K 3D 高帧率重制!《泰坦尼克号》重映预售开启:4月3日上映
热推荐:沪一男子多次在五星级酒店开房,记录和发票被“神秘女”轻松拿走?细思极恐...
【金融街发布】人民银行:2月发行各类债券54724.3亿元
债市日报:3月24日
天天滚动:外卖小哥专属!美团发布头盔新专利:手不脱把接电话
【世界报资讯】库克现身北京三里屯正面“面对”小米!网友手持小米13 Pro合影太吸睛
当前速看:马斯克要建自己的乌托邦城市:美国当地居民这下不淡定了
每日短讯:正式定档4月26日!米哈游大作《崩坏:星穹铁道》公测官宣
快消息!PaddleOCR之高性能Go语言实现OCR识别
环球报道:《暗黑破坏神4》新手入门图文攻略:游戏系统介绍与开荒指南
天天日报丨男孩名字含“坤”被嘲笑抑郁自残 被起绰号“鸡哥”:网友吐槽太过分
环球要闻:监控拍到浙江一车辆撞倒行人后又倒回碾压!官方通报来了
全球快资讯丨金价一路狂飙 有人8斤黄金变现174万:国内中老年狂买 还有人已赚32万元
世界热头条丨暴雪计划进行压力测试:《暗黑破坏神4》公测版排队依旧
以志愿服务赋能基层治理,金山卫镇这样做
9个都要了解的单行Python代码
每日看点!优化不够DLSS来凑 iGame RTX 4080显卡实战《卧龙》:4K轻松百帧
环球热点!男子驾车疯狂违章 上传视频炫耀自曝!后续舒适
169元 红魔散热器4磁吸版上市:20W满血功率、可控RGB灯效
环球热讯:苹果CEO库克现身北京三里屯零售店!众多粉丝合影 有人用小米13自拍
上海嘉定新城发展完成5亿元中票发行 利率3.20%
环球速讯:Leetcode Practice -- 字符串
第133篇:事件处理与常用事件
每日简讯:PLG SaaS 产品 Figma 商业模式拆解
1.爬虫的简介
世界时讯:python超时处理方法eventlet的eventlet.Timeout
全球资讯:【新华解读】REITs推出支持消费重要举措 消费基础设施可发行REITs
环球通讯!【财经分析】瑞信债务减记外溢影响可控 欧洲其他大型银行信用状况未受波及
【金融街发布】证券公司App“一键打新”功能将迎三大变化
每日热议!电池连续6年世界第一 宁德时代表态不会去造车
环球精选!95后设计师辞职当动物饲养员:上班以后非常开心
小金刚品质 Note 12 Turbo首发福利:免费送碎屏险
世界今头条!PC真的没落了!我国网民使用手机上网比例达99.8%:占比遥遥领先
每日关注!2023年国剧最高分!剧版《三体》豆瓣涨至8.7分:超36万人评价
焦点报道:windows安装redis及配置教程
世界微速讯:记一次若依后台管理系统渗透
焦点!记录--用three.js渲染真实的下雨效果
傲软录屏工具使用教程(附工具亲测有效!!!)
天天视点!国际货币基金组织敦促黎巴嫩加快改革以启动一揽子救助计划
全球简讯:论文阅读笔记(五):Hire-MLP Vision MLP via Hierarchical Rearrangement
【焦点热闻】73.迭代器
环球观察:[vue] 脚手架笔记