补充C#基础1

C#前端基础知识的补充 标签 <small>小号文本</small> 换行:<br/> 2<sup>7</sup> //结果是2的7次方 <u>带下划线</u> &nbsp; //空一个空格 &amp; //等于号 &reg; //注册商标 &times; //乘号 &d... 阅读详情

《c#与.net3.0高级程序设计》

3.5设置成员的可见性
public:
private:
protected:不能从对象访问,可以从定义它的类中或者是这个类的派生类中访问。
internal:同一个程序集的任意类型都是可以访问,但不能被程序集以外的类型访问。
protected internal:6∩7

设置类型可见性
类型(类,接口,结构,枚举,委托)只能使用public和internal
public:
internal:只能在定义它的程序集中使用。

成员变量的初始化语法
C#允许在声明的时候给类型的成员数据赋初始化值。

常量数据:
class Person
{
 pubic const string name = "BaoBao";
}
赋给常量的值必须在编译时就确定,常量字段隐含为静态的。所以可以用Person.name来访问。

只读字段:
class Person
{
 public readonly string name;
}
只读字段允许建立在编译时不知道值的数据,但是一旦赋值,就永远不能被改变。
只读字段可以在构造函数的作用域内赋值。、
只读字段不隐含为静态的,需要加static关键字来实现Person.name的访问。
class Person
{
 public static readonly string name;
}

静态方法只能调用静态数据,但是非静态方法可以调用静态的和非静态的数据。
静态数据只分配一次,并在所有的同类型的对象实例之间共享。
定义了非静态数据,每一个对象都保存着字段的一份私有副本。

静态构造函数:
一个给定的类(或是结构)只能定义一个静态构造函数。
静态构造函数只能执行一次,与创建了多少个这种类型的对象无关。
静态构造函数不带访问修饰符,也不带任何参数。
当静态构造函数创建这个类的实例时,或在调用者访问第一个静态成员之前,运行库会调用静态构造函数。
静态构造函数在任何实例级别的构造函数之前执行。


静态类:
只能包含静态的成员或是字段。

参数修饰符:
无:按值传递。调用的方法收到的是原始数据的一个副本。如果按值传递引用类型(复制了指向调用者对象的引用),被调用者可以改变对象的状态数据,但是不能把引用赋值给一个新的对象。
out:按引用传递。不需要在他们被传递方法之前初始化,所以方法退出之前必须给输出参数赋值。
params:
ref:如果按引用传递引用类型,被调用者可以改变对象的状态数据和所引用的对象。


值类型与引用类型:
值类型:分配在栈上,值类型一旦离开其定义的作用域,就立即从内存中删除。
引用类型:分配在托管堆上,这些对象一直保留在内存中,直到.net垃圾回收器将它们销毁。默认情况下,一个引用类型的赋值将产生一个对该堆上同一个对象的新引用。

装箱和拆箱
当将自定义的结构或枚举传递给原型中带有System.Object参数的方法时,也会发生,装箱操作,在拆箱这个类型之前,将不能访问这个结构(或枚举)的任何成员。

枚举:
在后台,枚举的每个项目的存储类型默认映射到一个System.Int32,可以更改这个设置:
enum EmpType : byte
{
 Manger = 10;
 Grunt = 1;
 VP =9;
}

 

 

//2009年6月28日  15:37:46

对象的生命周期
CAR refcar  = new CAR();
在托管堆上创建一个新的CAR对象,返回指向这个对象的引用,此引用保存在栈上。

垃圾回收法则:
1、如果托管堆上没有足够的内存来分配所请求的对象,就会进行垃圾回收。
2、重写Finalize()的唯一理由:c#类通过PInvoke或复杂的COM互操作性任务使用了非托管资源。
 结构类型重写Finalize()不合法,因为是值类型,从来不分配在堆上。
3、如果对象支持IDisposalbe,总是要对任何直接创建的对象调用Dispose()。应该认为,如果设计者选择支持Dispose()方法,这个类必须要执行清除工作。
 if (rw is IDisposable)
  rw.Dispose();
 当退出using作用域时,自动调用Dispose():
  using(MyResoure rw = new MyResource)
   {//使用rw对象}

结构化异常处理
自定义异常需要:
1、继承自Exception/ApplicationException类
2、打上System.Serializable特性标志
3、定义一个默认的构造函数
4、定义一个设定继承的Message属性的构造函数
5、定义一个处理"内部异常"的构造函数
6、定义一个处理类型序列化的构造函数


第七章 接口
public class AnotherClass : BaseClass,Interface
 {}
最直接的基类是在冒号后面的第一个成员,结构总是派生自?System.ValueType,仅需在结构定义后面列出接口即可。

判断指定类是否支持一个接口:
 as is
Hexagon hexz = new Hexagon();

IPointy itptz = hexz as IPointy;
if(itptz != null)
 {}

if(hex2 is IPointy)
 {}

显示接口实现:

Operater关键字只能和静态方法联合使用。
1、同一个类型中定义显示和隐式函数是非法的。
2、当一个类型定义了隐式转换例程后,调用方使用显式转换时合法的。

处理程序中的溢出或下溢情况的有两种办法:
1、首选是手工处理所有的溢出条件。
2、checked

设定项目级溢出检查:
启用/checked后,所有算法计算溢出而不必使用checked关键字。
unchecked用于允许溢出的一个代码段。

指针类型
1、要绕过CLR管理直接操作指针以优化应用程序的特定部分
2、要调用基于c的*.dll或调用需要指针作为参数的COM服务器。

启用/unsafe

不安全上下文中,可以直接调用栈分配内存的局部变量。
unsafe
 {
  char* p = stackalloc char[256];
  for (int k=0; k<256; k++)
   p[k] = (char)k;
 }
fixed语句设置指向托管类型的指针并在执行过程中固定该变量。
Point pt = new Point();//Point是个类
fixed(int* p = @pt.x)
{
 //使用int*变量
}
//pt现在未被固定,可以被GC清除。

任何时候在不安全代码上下文之中与应用类型交互都要固定该引用。

sizeof用来获取值类型的字节大小,仅可被用于不安全上下文。

预处理指令:
 #region,#endregion:标记源代码区块。
 #define,#undef:定义或取消定义条件编译符。
 #if,#elif,#else,#endif:用来基于指定编译符号有条件的略过源代码区块。

【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数 C#补充知识点——命名参数和可选参数 阅读详情

相关推荐

【从零开始入门unity游戏开发之——C#篇51】C#补充知识点——out关键字

【从零开始入门unity游戏开发之——C#篇51】C#补充知识点——out关键字

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 874

【书】C#高级编程(第7版) C# 4 and .NET 4(百度云免费下载链接)

下载 链接:https://pan.baidu.com/s/10bwk6-hcXjRExIvRBaST9A 提取码:x5ep

GreAmbWang的博客 2664

《C#与.NET 3.0高级程序设计》[源代码+英文PDF电子书]

本书是C# 领域久负盛名的经典著作,深入全面地叙述了C# 编程语言和.NET 平台核心,并以大量示例剖析相关概念。书中介绍了C# 的各种语言构造、.NET 2.0 的类、核心API、公共中间语言(CIL)、动态程序集和ASP.NET 扩展等内容;同时也介绍了.NET 3.0 中的新的编程API 包括WPF、WCF 和WF 的功能;另外,还介绍了最新的C# 3.0 编程语言和LINQ 编程技术。本书由微软C# MVP Andrew Troelsen 编写,历经多次修订,适合各层次.NET 开发人员阅读。

C# 学习笔记:序列化

序列化在C#中运用的非常多,由于我是学Unity的,Unity中的序列化特性也比较常用,所以这篇文章我们讲讲序列化的用法。 在编码时,我们的代码中的对象们都是保存在内存中的。 如果我们关闭一个软件,那么里面的内容就随着进程的消失而消失了。我们之前保存一个类,可以使用反射来调用DLL库来生成一个这个类的对象。 但是如果说是代码中的对象的保存,就是需要用序列化相关的API来对代码中的对象进行保存...

MEIGAZAMU 1856

[C#与.NET.3.5高级程序设计(第4版)]

[C#与.NET.3.5高级程序设计(第4版)]

安捷伦示波器实战指南:从基础操作到精准触发

本文详细介绍了安捷伦示波器的基础操作与高级功能,包括精准触发配置、波形分析和常见问题排查。通过实战技巧和优化建议,帮助工程师快速掌握示波器的核心功能,提升调试效率。特别适合电子工程师和测试技术人员参考使用。

weixin_30839881的博客 135

【书】C#高级编程(第9版) C# 5.0 & .NET 4.5.1(百度云免费下载链接)

下载 链接:https://pan.baidu.com/s/1f1hd_Isr-xR-kK8pX0JTeA 提取码:l4lr

GreAmbWang的博客 7038

深入浅出PWM:用示波器带你理解占空比与滤波效果

本文通过示波器实测,深入浅出地解析了PWM(脉宽调制)的核心原理。从占空比与平均电压的关系入手,详细演示了RC及有源滤波器如何将数字方波“翻译”为平滑模拟电压,并探讨了PWM-DAC的精度、响应速度等关键设计考量,为硬件调试与电路设计提供了实用的实践指导。

weixin_29292431的博客 345

csharp基础练习题:保持水分!【难度:0级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

csharp基础练习题:保持水分!【难度:0级】: 弥敦道喜欢骑自行车. 由于弥敦道知道要保持水分是很重要的,他喝每骑自行车的每小时0.5公升的水. 你得到给出小时的时间,你需要返回升弥敦道会喝酒,四舍五入至最小的值的数量. 例如: 时间= 3 – ...

景越c#经典编程题库(csharp programming training) 134

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月14日-Clamshell 拆卸与安装

Clamshell 拆卸与安装。

weixin_46735260的博客 1690

华为交换机实战:如何用ACL+流分类精准限制特定IP的网速(附完整命令)

本文详细介绍了华为交换机如何通过ACL+流分类技术实现精准IP限速,包括ACL规则配置、流分类关联、流行为定义及流策略应用等完整步骤。文章提供了实战命令和配置验证方法,帮助网络管理员有效管理带宽资源,解决特定IP占用过多带宽的问题。

weixin_29229055的博客 100

C#知识点入门、基础、核心、进阶

成员类型:抽象类可以包含抽象方法、非抽象方法、字段、属性等;接口只能包含方法、属性、索引器和事件的声明。访问修饰符:抽象类中的成员可以使用各种访问修饰符;接口中的成员默认是public且不能有访问修饰符。

weixin_46012816的博客 6928

Palantir解密:说人话,到底什么是“本体”?

笔者2018年在云计算公司开展政企数字化专项时,便意识到全面数字化进程背后存在大量未知领域,尤其是未来数字世界的底层架构如何构建这一关键问题。可惜因为种种原因,连那几个小专项最终都未能落地,也就无从深入了。近期看了很多有关Palantir的材料,倒觉得这像是新硅谷(区别于比尔盖茨、扎克伯格等主导的硅谷时代)交出的一份关于“数字世界底层架构”的答案,至于这个答案是否成立、有没有更优解、我们本土对标的版本是什么,可能都还待看。《Palantir解密》系列尝试通过解析Palantir,来系统回答这一问题。

SZSDQJC的博客 2157

UNITY C#相关语法补充

学习笔记 供以后复习使用

m0_65357206的博客 776

验证 helm Chart 的正确性

验证 helm Chart 的正确性

小橙子的笔记屋 281

Python爬虫实战:爬取ETF基金持仓变化

在python复制编辑本文详细介绍了如何使用Python的Scrapy框架爬取ETF基金的持仓变化信息,包括项目的搭建、数据的提取与存储、以及数据的可视化分析。通过本项目,读者可以掌握基本的网页爬虫技术,并应用于实际的财经数据采集与分析中。

2201_76125261的博客 629

C#基础补充

C#基础补充 A.对值类型的分配。 虚拟内存中存在一个叫堆栈的区域,我们并不知道它到底在地址空间的什么地方,在一般开发过程中也没有必要知道,我们知道的是值类型就分配于此。值类型在堆栈上分配的时候,是自上而下填充的,也就是从高内存地址开始填充。 比如当前的堆栈指针为100000,这表明它的下一个自由存储空间从99999开始,当我们在C#中声明一个int类型的变量A,因为int类型是四个字节,所以它将分配在99996到99999这个存储单元中。如果我们接着声明double变量B(8字节),该变量将分配在9998

Echo_Wish 402

linux驱动由浅入深系列:基于高通平台分析触摸屏(TP)、虚拟按键驱动

触摸屏的触摸板(touch panel简称TP)驱动的基本架构和普通按键驱动基本一致,可以参考文章:linux驱动由浅入深系列:输入子系统之二(编写一个gpio_key驱动)。只是其功能稍稍复杂些,配置也多些,下面一起来看一下。 TP包括 触摸屏、虚拟按键、虚拟按键背光灯 TP驱动芯片厂商主要有:Goodix(汇顶),FocalTech(敦泰科技),cypress(赛普拉斯),synapt

Radia的专栏 4768

Unity进阶之C#知识补充

C#增加的一些方法,重点是Unity跨平台的原理、C#新增语法异步方法Async和Await、模式匹配等内容

SunsetSunup的博客 1357

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Unity进阶--C#补充知识点--【C#各版本的新功能新语法】C#1~4与C#5

本文大致介绍了Unity与C#版本的间的关系,以及C#1~5版本的功能与特别的新功能,以及这些功能在Unity中的常见使用方法与场景。

misco43的博客 2191

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C#基础知识点

目录课程一、C#基础1.C#编译环境、基础语法2.Winform-后续未学完课程二、Timothy C#底层讲解一、类成员0常量1字段2属性3索引器5方法5.1值参数(创建副本,方法内对值的操作,不会影响原来变量的值)5.2引用参数(传的是地址,方法内对值的操作,出了方法后原来的值也被修改)5.3 输出参数(普通方法一次调用只产出一个返回值,但希望一次调用返回多个输出值,所以用输出参数)5.4 数组参数 parmas(可供函数输出多个值)5.5 具名参数(调用方法时,参数带有名字,位置随意)5.6 可选参数

Mr_DaYang的博客 1822

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

补充一:C#中的Queue

C#中的Queue是一种基于先进先出(FIFO)原则的数据结构,适用于管理待处理任务、模拟排队等场景。基本操作包括入队(Enqueue)、出队(Dequeue)和查看队头元素(Peek)。通过泛型Queue,可实现类型安全的队列。性能方面,入队和出队操作的时间复杂度为O(1),清空操作也是高效的。在实际应用中,Queue可用于模拟任务队列、广度优先搜索等。然而,需注意线程安全性、元素类型的一致性以及性能上的考虑。总的来说,Queue在C#编程中是一个简单而强大的工具,能有效管理数据流、提高程序效率。

喵叔 2229

【C#】 让数据保留小数后两位,不足的补充0

【C#】 让数据保留小数后两位,不足的补充0

wangnaisheng的专栏 6558

C#的学习基础篇(1)

关于什么时命名空间,在问题1中就解释的差不多了,这里在做些补充,命名空间(namespace)是C#和其他一些编程语言中用于组织和封装代码的机制,它的主要目的是帮助避免名称冲突,尤其是在大型项目或使用多个库的情况下,命名空间可以看作是一个逻辑上的容器,用于分类和分组相关的类型(如类、结构、枚举等等),命名空间是C#中一个重要的特性,它不仅帮助管理代码的结构,还提高了代码的可读性和可维护性。命名空间具有以下属性:它们组织大型代码项目;通过使用运算符分隔它们;using指令可免去为每个类指定命名空间的名称。

qq_63873127的博客 1553

C#笔记11 类:类成员补充01

C#笔记11 类:类成员补充01 ——本系列是基于人民邮电出版社《C#2008 C#图解教程》、清华大学出版社《C#入门经典(第五版)》两本书的自学C#笔记,如果您发现了本文的纰漏,还望不吝指正。 写在前边 *复习:类是一种能存储数据并执行代码的数据结构,它包含: 数据成员——存储数据 包括:字段、常量 函数成员——执行代码 包括:方法,属性,构造函数,索引,运算符,事件,析构函数 上一篇笔记 C#笔记10 类:基础 已经介绍了九种类成员类型中的两种(字段和方法)。这一篇将介绍更多类型的类成员(静态类成

Tervor_HAN的博客 314

c#基础补充

c#基础

u013255730的博客 345
上一篇: Transact-SQL3
下一篇: 1.开发基础
shewolfbfh
博客等级 码龄20年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值