C#入门经典学习阶段小结(凌乱)

CLR: common language runtime(.net 公共语言运行库)管理.net库开发的所有应用程序的执行

cts: common type system (通用类型系统)指定最基本类型有助于使用.net framework的各种语言之间进行交互操作
cil:common intermediate language (通用中间语言) 编译代码为该语言,cil代码独立于计算机、os、cpu的,由jit编译器使用创建所需的本机代码
jit: just in time (cil代码仅在需要时才编译)
托管代码:将代码编译为cil,存储在程序集中,再用jit编译器将它编译为本机所需代码,还需要管理正在执行的用.net framework编写的代码。

创建.NET应用程序所需步骤:
->使用C#编写应用程序代码
->把代码编译为CIL,存储在程序集中
->执行代码时,必须使用JIT编译器将代码编译为本机代码
->在托管的CLR环境下运行本机代码

重置vs c#development settings设置:错误 1: 为“CoffeeScript”[代码 5297] 导入设置时出错。

转义序列 例如用\“来转义“双引号,用\n是换行符的转义序列
字符串插入:如输出Console.WriteLine($”{outline}”);
运算符优先级:++,–用作前缀,(),+,-一元时,!,~
*,/,%
+,-
>
,=
==,!=
&
^
|
&&
||
=,*=,/=,%=,+=,-=,>=,&=,^=,|=
++,–用作后缀

C#的分支技术:三元运算符,if语句,switch语句
switch语句在C++中可以运行完一个case语句后运行另一个case,但在C#中这样做是非法的,每个case语句需要一个break中断switch执行
          另外可以使用return语句,不仅中断switch结构,还中断当前函数的执行;还可以用goto语句
三种循环:do循环,while循环,for循环
循环的中断命令:break,continue,return

使用checked设置溢出检查上下文

枚举:枚举值转换为其他类型,需要显式转换

用replace(“str1″,”str2”),替换函数,用str2替换字符串中所有的str1
.Trim()命令,删除空格,可以添加char数组定义删除字符,测试代码时发现trim()出现问题,反而trim(mycahr),[]mychar={‘ ‘}

引用传递参数   ref关键字,改变调用的参数值,必须使用初始化之后的‘非常量const’的变量。
或者使用输出参数  out关键字,可以使用未赋值的变量,函数使用out时必须将其看作尚未赋值。
static关键字定义全局变量,const定义全局常量

函数的签名包含函数的名称及其参数,不包含其返回类型
委托:一种存储函数引用的类型,不带函数体,使用delegate关键字,委托声明指定了一个返回类型和一个参数列表

类:理解为车规划图纸,对象:理解为汽车本身。
类决定了对象将要拥有的属性和行为。
class progrem
{  //可以写字段、函数、属性、构造函数。。
   //字段:存储数据      属性:保护字段 get set (对自动属性进行保护的时候需要实例化)       函数:描述对象的行为      构造函数:初始化对象,给对象的每个属性进行赋值
}

传智播客 基础加强1:
    oop:
                封装:
        —>减少了大量的冗余代码
        —>封装将一坨很难理解的功能封装起来,但是对外提供了一个很简单的使用接口。我们会使用就OK。
    继承:
        —>减少了类中的冗余代码
        —>让类与类产生了关系,为多态打下了基础。
        特性:
            单根性:一个子类只能有一个父类
            传递性:爷爷类 爹类 儿子类
        里氏转换:
            1、子类可以赋值给父类
            2、如果父类中装的是子类对象,则可以将这个父类转换为对应的子类对象
            —->关键字
                1、is:返回bool类型,指示是否可以做这个转换
                2、as:如果转换成功,则返回对象,否则返回null
            作用:我们可以将所有的子类都当做是父类来看,针对父类进行编程,写出通用的代码,适应需求的不断改变。    
    多态:
        —>虚方法
            virtual override
        —>抽象类
            abstract override
        —>接口
            interface 

    关键字
        new
            1、创建对象
                —>在堆中开辟空间(对象是引用类型,引用类型的值都在堆里)
                —>在开辟的堆空间中创建对象
                —>调用对象的构造函数
            2、隐藏父类的成员    (当子类的函数名和父类一样时)
        this
            1、代表当前类的对象
            2、显示的调用自己的构造函数
        base
            1、显示调用父类的构造函数(并不是父类的对象)
            2、调用父类的成员

静态构造函数只能在以下情况下执行:
*创建包含静态构造函数的类实例时
*访问包含静态构造函数的类的静态成员时

string和object是简单的引用类型,数组是隐式的引用类型,创建的每个类都是引用类型
编译器不允许派生类的可访问性高于基类。
接口的指定必须放在基类继承之后,用逗号隔开。
接口没有关键字abstract和sealed(它们不包含实现代码,不能直接实例化,且必须是可以继承)。接口不是类,所以没有继承System.Object

system.Object包含的方法:
    Equals()   bool
    ReferenceEquals() bool:比较传送给它的两个对象,是不是同一个实例的引用
    ToString()   String:返回对应于对象实例的字符串
    MemberwiseClone()  object:创建一个新对象实例并复制成员,以复制该对象
    GetType()  System.Type:返回对象类型(typeof运算符:可以把类名转换为System.Type对象)
    GetHashCode() int:返回一个以压缩形式表示对象状态的值

构造函数初始化器,它把代码放在方法定义的冒号后面。例如可在派生类的构造函数定义中指定所使用的基类构造函数。
    用base()关键字指定.NET实例化过程使用基类中具有指定参数的构造函数

定义不能创建的类:将其定义为静态类,或者将其所有的构造函数定义为私有。
    不能创建的类可通过它们拥有的静态成员来使用。

对于ArrayList集合,使用对象的Add()方法添加新项;

yield 迭代

封箱是把值类型转换为System.Object类型,或者转换为由值类型实现的接口类型。拆箱则相反。
    作用:它允许在项的类型是object的集合中使用值类型,其次,有一个内部机制允许在值类型上调用object方法。

is运算符: is 注意如果是一个值类型,而也是该类型,或者可以拆箱到该类型里,则为true。

不能重载赋值运算符,例如+=,也不能重载&&和||

IComparable在要比较的对象的类中实现,可以比较该对象和另一个对象:提供CompareTo(),int,接受一个对象
IComparer在一个单独的类中实现,可以比较任意两个对象:提供Compare(),int,接受两个对象
类Comparer提供了ICompare接口的默认实现方式:Comparer.Default.Compare(one,two)。CaseInsensitiveComparer类:不区分大小写

声明可空类型:  int? nullableInt;     int?是System.Nullable的缩写,更便于读取

空合并运算符??与空条件运算符?.可以在结果是null时候设置一个默认值:
        int? count=customer.order?.Count() ?? 0;
另外,空条件运算符的另一个用途是触发事件。

协变、抗变:
    泛型类型参数定义为协变,加out关键字,反之,抗变用in关键字

传智播客:
1、导入命名空间
    命名空间就是类的”文件夹”。类就是”文件夹”中的文件。需要导入命名空间
    添加引用:
        如果我需要在一个项目中,访问另一个项目中的某一个类
            —>添加对另一个项目的引用
            —>导入命名空间

2、静态和非静态
    静态成员:被static修饰
    实例成员:不被static修饰
    静态成员先于实例成员被加载到内存中,只有创建了对象,才有实例成员。
    静态类中只能存在静态成员
    调用:
        静态成员调用:
            类名.静态成员名;
        实例成员调用:
            实例名.实例成员;(实例就是我们的对象)
    什么时候使用静态?
        —->作为工具类,比如所有的扩展方法!都需要static
        —->在整个项目中资源共享,正因为它是资源共享的,所以静态成员必须要等到整个项目都结束的时候
        才会被资源释放。
        在我们的项目中应该尽可能的少使用静态成员。
        继承是创建对象的过程。
3、设计模式
        —->单例设计模式
            在整个程序中,我们要保证对象必须是唯一的。
            实现:
                —->第一步:构造函数私有化
                —->第二步:声明一个静态字段,作为全局唯一的单例对象
                —->第三步:声明一个静态函数,返回全局唯一的对象
        示例:
           //第一步:构造函数私有化
            private Form2()
                {
                    InitializeComponent();
                }

            //第二部:声明一个静态的字段用来存储全局唯一的窗体对象
                private static Form2 _single = null;
                       //第三步:通过一个静态函数返回一个全局唯一的对象
            public static Form2 GetSingle()
            {
                if (_single == null)
                {
                    _single = new Form2();
                }
                return _single;
            }
        —->简单工厂设计模式
            核心:把所有的子类都当做父类来看待
            练习:
                提示用户分别的输入两个数字:
                再输入运算符:返回一个计算的父类,并调用方法得到结果。
                Add Sub Cheng Chu
    建筑行业最早应用到设计模式这个概念
        1、注册一个公司
                
        2、招兵买马
        3、投标买地
        4、安排施工队开始施工
        5、卖楼  
        设计模式就是用来专门解决一些特定的问题。        
4、类库
    .dll文件,我们使用类库来帮助我们封装一些常用的功能      
5、值类型和引用类型        
    值类型:int double char bool decimal struct enum
    引用类型:string 数组 自定义类 接口 委托 
    值类型的值存储在内存的栈上,引用类型的值存储在堆中。
    栈上存储数据的效率要高于堆。
        
    值传递:把值类型作为参数传递,把值本身进行传递。
        注意:
        ref可以把值传递改变为引用传递。
    引用传递:把引用类型的值作为参数传递,传递的是引用。

6、字符串的学习
    重要特性:
        不可变性,我们不管对字符串做什么操作,都会在内存中产生一块新的实例。
        驻留池
        我们可以将一个字符串看作是char类型的只读数组。
    GC:Garbage Collection垃圾回收    ,每隔一段时间,会扫描整个内存,发现,如果有的空间没有被指向。则立即把它销毁。       

    1.说明字符串的不可变性2.字符串常量的“暂存池”特性。

    String 字符串,字符串可以看成字符数组,不可变特性(通过for循环,修改string中的元素,失败!)。
    属性
        Length //获得字符串中字符的个数。”aA我你他”→5
    方法
        IsNullOrEmpty()    静态方法,判断为null或者为”” (静态方法)
        ToCharArray() 将string转换为char[]
        ToLower()    小写,必须接收返回值。(因为:字符串的不可变);
        ToUpper()   大写。
        Equals()    比较两个字符串(地址/对象的状态,而==是比较对象引用)是否相同。忽略大小写的比较,StringComparation.
            //对于string类型而言,不管是等号还是Equals比较的都是值本身。
            //Equals默认比较的是地址,但是我们在自己定义的类中如果用到Equals,都会将Equals进行重写,使之按照我们自己的需求进行比较
        IndexOf() 如果没有找到对应的数据,返回-1.//面试题:统计一个字符串中,”天安门”出现的次数。    
        LastIndexOf()    如果没有找到对应的数据,返回-1
        Substring()    //2个重载,截取字符串。
        Split()   //分割字符串。        
        Join()        静态方法
        Replace()

对象初始化器:采用非默认的构造函数/不必添加额外代码,为每个属性使用键值对提供其值。
    合并对象、集合初始化器(适合于LINQ技术一起使用)(编译器为在集合初始化器中提供的每一项调用集合的Add()方法)

var关键字,隐式推理变量类型,可以是int、string、数组(数字值从来都不会被解释为可空类型,除非是定义new int?[ ] )等等
    如果要在数据存储对象中修改属性的值,就不能使用匿名类型(因为被定义为只读属性)

dynamic关键字,动态变量类型,

可选参数,没有默认值的参数不能放在有默认值参数的后面。

命名参数,参数顺序任意并且可选。但如果混合使用命名参数和位置参数,就必须包含所有的位置参数,其后是命名参数。

Lambda表达式:是一个委托,赋给一个委托类型的变量;解释为表达式树
    表现:  括号中的参数列表=>C#语句/{多行代码+如果还不是void的委托,需要加return}
    LINQ框架包含一个泛型类,可用于封装Lambda表达式,使用该类的一种方式是提取用C#编写的Lambda表达式,将它转换为相应的SQL脚本

扩展方法Aggregate(),表示把一个累加器函数应用于集合中从开始到结束的每对元素上。

传智播客 基础加强3:
    1、StringBuilder:进行大量字符串操作的时候的工具。String对象是不可变的。
        将StringBuilder转换为String用ToString();
        仅仅是拼接字符串的工具,大多还会转换为String
        *StringBuilder sb=new StringBuilder();
        *sb.Append();//追加字符串
        *sb.ToString();//ToString(“x2”),表示转换为16进制,并且是两位的。
        *sb.Insert();
        *sb.Replace();
        使用程序拼接html中的table:WPF中没有窗体应用程序的DocumentText,只能使用webBrow.NavigateToString(sb.ToString());
    2、out:out参数侧重于在函数中返回多个值;参数要求必须在方法的内部为其赋值
    3、ref参数:ref参数侧重于将一个值带澳函数中进行改变,再讲改变后的值带出去。ref参数在函数内不用赋值,函数外必须为ref参数赋值
    4、
    5、集合的学习:
        非泛型集合:
            ArrayList
            Hashtable
        泛型集合:
            List:相对于数组,不用确定初始范围
                Capcity:集合中可以包含的元素的个数(初始值为4,每次翻倍)
                Count:获取集合中实际包含的元素的个数
                Add():添加单个元素
                AddRange():添加一个集合
                Insert():插入一个元素
                InsertRange():插入一个集合
                Remove():移除指定的元素
                RemoveAll():里面是lambda表达式,例如list.RemoveAll(n => n > 3)凡是大于3的数据全部删除
                RemoveAt():根据下标移除元素
                RemoveRange():移除一定范围内的元素
                ToArray():集合转换成数组
                ToList():数组转换成集合 

            Dictionary
    6、装箱和拆箱:
        装箱:值类型—>引用类型
        拆箱:引用类型—>值类型
        我们判断是否发生了拆箱或者装箱,首先要判断这两种数据类型是否存在继承关系。
        装箱的时候用什么类型装的箱,拆的时候就拿什么类型拆。
    7、编码格式:
        将字符串是怎样的形式保存为二进制。
            ascii 256
            6000 GB2312
            GBK  GB18030

            ISO
                Unicode
                    utf-16
                    utf-8
            出现乱码的原因:我们保存这个文件的时候采取的编码跟打开这个文件的时候采取的编码格式不一致。
            文本文件:拖到txt中还能看得懂得就是文本文件。
                    .txt   .html   .ini        .xml
        File的基本操作:操作文件
            Exist():判断指定的文件是否存在
            Create():创建
            Move():剪切
            Copy():复制
            Delete():删除
            ReadAllLines() ReadAllText()默认采用的编码格式是utf-8
        Directory:操作的是文件夹
            CreateDirectory:创建一个新的文件夹
            Delete:删除
            Move:剪切
            Exist()判断指定的文件夹是否存在
            GetFiles()获得指定目录下所有文件的全路径
                Directory.GetFiles(@”E:\download”, “*.avi”)获得所有的.avi文件
            GetDirectories()获得指定目录下所有的文件夹
                只能获得当前第一目录下所有的文件夹
    正则表达式  主要类:Regex
        就是一个模板,我们可以使用这个模板,去一坨字符串中找到我们想要的数据。
        注意:正则表达式是操作字符串的。
        组成:
            限定符,元字符,常用的表达式
        判断是否匹配:Regex.IsMatch(“字符串”,”正则表达式”);
        字符串提取:Regex.Match(“字符串”,”要提取的字符串的正则表达式”);
            (循环提取所有):Regex.Matches()
        字符串替换:Regex.Replace(“字符串”,”正则”,”替换内容”);
        .+?  匹配大量字符
        (?  )  可以给括号匹配部分起名
        贪婪模式:
            “1111。11。11。11111。”
            贪婪: .+。  尽可能多的匹配
            非贪婪:  .+?。尽可能的少匹配,1个

样式:批量设置要应用到控件上的某些属性
模板:在其基础上设置控件外观的控件 
触发器:
    要定义Tigger对象监视的属性,应使用Trigger.Property属性
    要定义何时激活Trigger对象,应设置Trigger.Value属性
    要定义Trigger触发的操作,应将Trigger.Setters属性设置为Setter对象的一个集合
动画:通过故事板创建,storyboard对象包含在资源字典中,必须通过x:Key属性来识别
    

    不含关键帧的时间线:DoubleAnimation、PointAnimation和ColorAnimation

依赖属性:输入propdp+两下Tab键,即可插入属性模板

XML:可扩展的标记语言
    与HTML的区别:XML中的元素必须关闭!XML中元素的属性必须用引号
    语法规范:标签(Tag)、嵌套(Nest)、属性。
            标签(即元素Element)要闭合,属性值要用“”包围,标签可以互相嵌套。
            在XML中是节点(Node)包含元素(Element)。
    大小写敏感
    创建XML:DOM文档对象模型
            XmlDocument doc=new XMLDocument();
            XmlElement order = doc.DocumentElement;//根节点
    使用XPath查询XML:
             XmlNode xn = order.SelectSingleNode(“/Order/Items/OrderItem[@Name=’雨衣’]”);
    根节点不允许删除,即doc.RemoveAll();不可以
                    但是order.RemoveAll();可以,移除根节点下的所有子节点
            删除子节点:ITems.RemoveChild(xn);
            删除某节点的属性值:xn.Attributes.RemoveNamedItem(“Count”);

ctrl+K和S/X,快捷键插入代码段/外侧代码,比如#region

委托delegate:使用委托把一个函数作为参数传递
        函数可以直接赋值给一个委托对象 委托的签名必须跟函数的签名一样(即返回值和参数类型一致)
        DelSayHi del = SayHiChinese;//new DelSayHi(SayHiChinese);
    对比:    委托是不安全的,
            事件本身是一个安全的委托

定义事件:
        public delegate void delTest();     //注册事件时需要一个委托
        public event delTest eventTest;     //不要小括号
    注册事件:    
        eventTest += new delTest(method1);
        eventTest += new delTest(method2);
总结:
    委托的作用:
        占位,在不知道将来要执行的方法的具体代码时,可以先用一个委托变量来代替方法调用(委托的返回值和参数列表要确定)
    事件的作用:
        事件的作用与委托变量一样,只是功能上比委托变量有更多限制。
        比如:一、只能通过+=或-=来绑定方法,二、只能在类内部调用(触发)事件。

程序集的好处:
    程序中只引用必须的程序集,减少程序的尺寸;
    程序集可以封装一些代码,只提供必要的访问接口。

第16章:
云:只是运行在一个数据中心的大量商品化的计算机硬件,这个数据中心可以运行程序,存储大量数据。
        具有弹性,即动态向上扩展的能力(例如增加内存和CPU)和/或动态向外扩展的能力(增加虚拟服务器实例的数量)
云服务模式:
    1、基础设施即服务(IaaS):要从操作系统开始向上负责。
    2、平台即服务(PaaS):值负责运行在所选操作系统上的程序及其依赖项。
    3、软件即服务(SaaS):通过互联网访问的设备上使用的一个软件程序或服务。

相关推荐:

【c#教程】C# 数据类型 

通过静态局部变量看C,C++,C#,Java,PHP的特点

以上就是C#入门经典学习阶段小结(凌乱)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:40:17
下一篇 2025年12月17日 08:40:29

相关推荐

  • C# 使用NPOI生成Word文档(按照模板)

    项目需要集成word导出,做的时候网上文档资源不是很多,也比较杂乱,所以查了查,整理了整理,做个记录,也顺便把NPOI操作Word文档的一些基本操作分享给有需要的朋友。   本篇包括生成word对word文本的操作,表格的操作,以及图片的操作,都为生成word基础的一些操作。 以下只是我的个人理解所…

    好文分享 2025年12月17日
    000
  • 从事C/C++开发多年,给零基础想学习C/C++的几点建议

    我在C++领域也从事了好多年了,也是有一些经验心得的,想分享给那些零基础入门C语言的伙伴们。从C++入门到精通各需要学习什么以及注意事项,避免不必要的麻烦,也很浪费时间,经验交流,如有不足之处多多谅解,我也只是简单的介绍。apache php mysql 从事C/C++开发多年,给零基础想学习C/C…

    2025年12月17日
    000
  • 案例分享c++ map的使用和 查找性能测试

    最近在为推荐服务作性能调优,这个服务的主要逻辑是用离线计算的模型数据给请求中的每个广告打分,再返回这些广告的排序结果,这里面打分的过程其实就用请求中的数据拼成各种key,去查一个大的 map,这种计算非常多,成为了主要的性能瓶颈,代码比较老,使用的是 boost::unordered_map,为了解…

    好文分享 2025年12月17日
    000
  • 基于汇编的 C/C++ 协程(用于服务器)的实现

    本篇文章,是 对c++/c++ 协程的实现。我们需要实现这两个目标: 有同步式服务器编程的顺序思路,便于功能设计和代码调试——我使用了 libco 中的协程部分 有异步 I/O 的性能——我使用了 libevent 中的 event I/O     apache php mysql 结构上,就是将 …

    2025年12月17日 好文分享
    000
  • C++ 布尔类型和引用的用法详解

    1、布尔类型 c++kquote>C++中的布尔类型C++在C语言的基本类型系统之上增加了boolC++中的bool可取的值只有true和false理论上bool之占用一个字节注意:true代表真值,编译器内部用1来表示false代表非真值, 编译器内部用0来表示C语言中:用整型值来代替boo…

    2025年12月17日
    000
  • C++引用的意义与引用的本质

    1、引用的意义 引用作为变量别名而存在,因此在一些场合可以替代指针,引用相对于指针来说具有更好的可读性和实用性 // swap函数的实现对比void swap(int& a, int& b){ int t = a; a = b; b = t;}void swap(int* a, in…

    2025年12月17日
    000
  • 第一章C++:函数返回值、GNU编译器命令

    c++bce3b83f770dfdf50c5dae0e4360a>函数返回值 返回值类型必须和函数的返回类型相同 对于main函数,返回值必须是int型。大多数系统中,main函数的返回值是一个状态指示器。返回值为0表示main函数成功执行完毕;返回非零表示有错误出现。 GNU编译器命令 vi…

    好文分享 2025年12月17日
    000
  • 第二章C++:变量和基本类型

    c++bce3b83f770dfdf50c5dae0e4360a>介绍语言的基本知识和标准库 第二章 变量和基本类型 一些语言,如smalltalk和python等,在程序运行时检查数据类型;与之相反,c++是一种静态数据类型语言,它的类型检查发生在编译时。 – 内置类型(buil…

    好文分享 2025年12月17日
    000
  • 第三章C++:字符串string、向量vector和数组

    第二章介绍内置类型,本章介绍抽象数据类型库。  – 其中string和vector是两种最重要的标准库类型,前者支持可变长字符串,后者表示可变长的集合。 – 还有一种标准库类型是迭代器,它是string和vector的配套类型,常被用于访问string中的字符和vector中…

    好文分享 2025年12月17日
    000
  • 利用Unity脚本自定义分辨率实现相机截一张高清截图

    最近做项目的时候需要在游戏里截一张高清截图,研究了一下写成脚本,方便以后使用。脚本可以自定义分辨率,用相机截高清截图。可以用代码动态截图,也可以在编辑模式下截图。注意截图宽高比要正确,宽高比不正确时可能会出问题。 截图效果: 脚本:CameraCapture.cs using UnityEngine…

    2025年12月17日
    000
  • 技术解答CSV 文件的一个 .NET 库:CsvHelper 中文文档

    csvhelper 是读写 csv 文件的一个 .net 库。可以通过 visual studio 的包管理器下载 csvhelper。自动映射定义:没有提供映射文件的情况下,默认为自动映射,自动映射会按顺序依次映射到类的属性中去。 GitHub 地址 读取 读取所有的记录 var csv = ne…

    好文分享 2025年12月17日
    000
  • 简要分析Unity计时器脚本Timer的用法(附代码)

    计时器效果图: Timer用法:第一种:脚本加到物体上,勾选”自动计时”。第二种:脚本加到物体上,调用timer.start()方法启动。第三种:代码中动态添加Timer脚本。 using UnityEngine;public class TimerTest : MonoBe…

    2025年12月17日
    000
  • 常见的C++中const常量用法分析讲解

    先对c++语言中的const和c++中的const进行讲解,前者const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边。后者c++在c的基础上对const进行了进化处理。 1、C语言中的const: const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上…

    好文分享 2025年12月17日
    000
  • 深入理解C#设计模式之策略模式 角色具体案例分享

    策略模式(Stragety Pattern) 策略模式属于行为型模式,它定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。 使用策略模式可以把行为和环境分割开来。环境类负责维持和查询行为类,各种算法则在具体策略类中提供。 角色: 1、抽象策略(S…

    2025年12月17日
    000
  • 最新使用C#生成二维码方案,详解及实例 ( QRCoder )

    不知道大家有制作多二维码吗?本篇文章我将给大家介绍如何用c#生成二维码,先说一下生成二维码需要的三个类qrcodegenerator、qrcodedata、qrcode。供后面好理解。他们的 职责 分别是什么呢?qrcodegenerator :用来通过指定的方式生成二维码存储的数据对象,也就是 q…

    2025年12月17日 好文分享
    000
  • 精选的这19道C/C+面试题,你能答对多少呢? – 个人文章 思否

    c++和c++的区别?答:c++在c的基础上增添类,c是一个结构化语言,它的重点在于算法和数据结构。软件工程师的面试,套路都差不多,这一次约到的问题,下次你可能还会遇到。 问1:请用简单的语言告诉我C++ 是什么? 答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程…

    好文分享 2025年12月17日
    000
  • 最新总结C语言中关于指针等相关理解和使用事宜

    定义:指针是一个变量,其值是另一个变量的地址,地址代表的是在内存中的位置。需要记住的是,数组变量本身就是一个指针。 地址的类型 地址是存在类型的,是不是感觉好奇怪,指针不是代表一个地址的吗,地址还有类型吗?看一个例子: int *ip; /* 一个整型的指针 */double *dp; /* 一个 …

    好文分享 2025年12月17日
    000
  • 详细介绍C# 中 ASP.NET Web API 的 ROC

    web api 是一个 面向资源(ROC)  通过 HTTP协议动词来修改资源状态的可自我寄宿(SelfHost)的接口今天 seaconch 的主要目的是实现一个简单的 ASP.NET Web API 栗子 什么是Web API 谈谈rest与asp.net web api 怎样理解 REST、R…

    2025年12月17日 好文分享
    000
  • 原来斐波拉契数列还有这种写法,你知道吗?

    百度下“斐波拉契的非递归写法”,也有不少的答案,但是并不令人满意,首先是太复制难懂,其次是性能和递归差不多。 一说到斐波拉契数列,无论是程序菜鸟,还是技术老手,首先想到的,肯定是递归写法。然后,技术老手与程序菜鸟不同的地方,就是会想到将递归的结果存起来以减少重复计算。这些都是些很常规的操作,但是你有…

    好文分享 2025年12月17日
    000
  • 采用 C# 编写的学委助手详解及实例

    该应用采用 C# 编写 WinForm 界面,Python 编写处理脚本。通过调用 Python 打包的 exe 可执行文件实现其功能。你可以在 Application  中直接下载得到。 学委助手 学委除了要收作业,最烦的就是统计谁没有交作业啦,还有就是大家的命名不统一造成文件排序混乱,更加大了学…

    2025年12月17日 好文分享
    000

发表回复

登录后才能评论
关注微信