4 Programer Cat

尚未进行身份认证

主业程序员,副业技术写作,平时搞搞服务器。

等级
TA的排名 8k+

博客停更一个月

因近期找工作,无暇再写文章发博客,因此博客停更一个月,待找到工作后,再继续更新,更新频率一周两更到三更。

2020-04-28 16:52:17

8年一线.NET开发程序员求职

本人目前找工作,8年一线.NET开发经验,从事过电子政务、AI客服和企业级文档安全系统的开发,以及互联网招聘网站的架构设计。目前薪资18K/月,最低期望薪资:20K/月。意向地:北京,意向职位:开发类、项目经理类。...

2020-04-27 15:46:15

3. 单页App

上一篇文章我们创建了 Xamarin 应用程序,当我们创建完应用程序后 VS 2019 帮我们生成了一个名为 MainPage 的 xaml 文件,这个文件在当前项目中是仅有的页面,我们称这个应用程序称为 单页应用程序 。下面我们就修改一下上一篇文章所创建的应用程序。首先我们打开 MainPage.xaml 文件,将模板中的代码修改为如下形式:<?xml version="1.0" enc...

2020-04-25 15:56:19

通过运行期类型检查实现泛型算法

Tip:本文首发于喵叔的 CSDN 博客,转载于喵叔的 InfoQ 博客,本人未授权任何网站、公众号以及其他任何形式的转载。发布不等于免费、开源不等于无所顾忌,请遵守职业道德。零、第一次优化虽然我们可以通过指定不同的类型参数来实现泛型类的复用,但是在某些情况下通用就意味着我们无法利用具体类型的优势。针对这一点 C# 允许在发现类型参数所表示的对象具有更多的功能时编写更具体的代码。这一点是利...

2020-04-25 13:46:19

2.Hello Xamarin

敬告:本文首发于 CSDN 博客喵叔的 Xamarin 基础专栏,该文章进发表于 CSDN 博客以及 InfoQ 网站,其他网站以及公众号发表皆为未授权。从这篇文章开始我们将正式进入 Xamarin 学习的课程,并且开始创建贯穿整个基础专栏的 APP (安卓APP)。零、创建项目我们打开 VS2019 选择 创建新项目在创建新项目窗口选择 项目类型 菜单中的 移动 ,并选择 ...

2020-04-22 21:54:23

规范约束条件

我们在开发时往往会对泛型指定约束条件,只有类型参数符合条件的才允许用在这个泛型上面。但是有时我们会定义过多或过少的约束条件,过多的约束条件会导致其他开发人员在使用你所编写的方法或类时做很多的工作以满足这些约束,过少的约束又会导致程序在运行的时候必须做很多的检查,并执行更多的强制类型转化操作,有时我们还需要使用反射生成运行期错误,来防止用户误用这个类。要解决这些问题,我们就必须把确实需要的约束写出来...

2020-04-21 22:51:21

1. 什么是Xamarin

Xamarin 是一个 .NET 开源的平台,主要用于通过 .NET 构建 IOS 、 Android 以及 Windows App 。利用 Xamarin 我们可以管理不同平台 APP 的共享代码与基础平台代码的通信,并且 Xamarin 上开发的 APP 是在托管环境中运行的,也就是说它会帮助我们来管理内存分配、垃圾回收等事情。Xamarin 可以让开发人员跨平台共享应用程序的代码,这样就可以...

2020-04-19 19:33:09

如何实现标准的dispose

前面的文章我们说过,如果对象包含非托管资源那么就必须要正确的清理,现在我们就来说一下如何清理。针对非托管资源 .NET 会采用一套标准的模式来完成清理工作。也就是说如果开发人员自己编写的类中存在非托管资源,那么这个类的使用者就会认为这个类遵循 .NET 的垃圾清理模式。标准的 dispose 模式即实现了 IDisposable 接口,又实现了 finalizer ,这样就可以在客户端忘记调用 I...

2020-04-18 11:09:28

禁止在构造函数里调用虚函数

在构造函数中调用虚函数会导致程序出现莫名其妙的行为,这主要是对象还没有完全构造完成。下面我们先来看一段代码:class B{ protected B() { Method(); } protected virtual void Method() { Console.WriteLine("B Method"); }...

2020-04-16 23:01:04

抛弃无所谓的对象

虽然 GC 可以帮助我们很好的管理内存,并且高效的将用不到的对象清理出去,但是这并不意味着我们可以随意创建对象。尤其是在方法中创建很多局部引用对象很有可能会降低程序的性能。 GC 的执行时机与程序所分配的内存数量以及分配的频率有关系,如果总是分配内存就会给 GC 造成很大的压力,从而使得 GC 会运行的很频繁进而降低了程序的性能。一般来说我们会将实现了 IDisposable 接口的类型中的变量提...

2020-04-14 22:52:23

整合重复的初始化逻辑

我们在开发中会在一个类中定义不同版本的构造函数,这些构造函数往往存在相同的初始化逻辑。遇到这种情况一部分开发人员会在每个构造函数中编写相同的代码,这种编写代码的方式是比较低级的,正确的做法应该是将相同的初始化逻辑提取到一个公用的构造函数中,并让其他构造函数直接或间接的调用。这样既可以减少重复的代码,又可以使得编译器根据初始化命令生成更高效的目标代码。下面我们就根据上面所说的内容来编写一下代码。p...

2020-04-12 19:44:04

确保初始化静态成员

在开发时我们习惯在创将某个实例之前先把静态成员变量初始化好,具体做法是通过静态初始化语句以及静态构造函数。静态构造函数在 c# 是比较特殊的函数,它会在第一次访问所在类定义的其他方法、变量和属性之前执行,一般我们用它来初始化静态变量、实现单例模式以及执行其他一些需要在访问其他必要的工作。如果静态字段初始化工作较为复杂或者是初始化开销很大的话,那么我们可以使用 Lazy 机制将初始化工作推迟在第一次...

2020-04-12 16:23:21

为字段设置初始值

在开发中为字段设置初始值这是最基本的要求,但是很多开发人员会在构造函数变多的时候忘记给成员变量设置初始值。为了避免这个问题,我们最好在声明的时候直接初始化,而不是在实现构造函数的时候去初始化。编译器会帮助开发人员在每个构造函数开头放入一段代码,这段代码会把开发人员在定义成员字段时所指定的初始值设置给这些成员字段。如果没有显示定义构造函数,那么编译器就会先创建默认构造函数,之后再向其中加入初始化代码...

2020-04-11 01:18:14

闲话资源管理

对于 .NET 开发人员来说程序的资源管理是必不可少的,要开发出一款优秀的应用就必须明白 .NET 的资源管理机制。在 .NET 中垃圾回收器 GC 帮助我们管理托管资源,在开发时我们不需要过多的关注大多数内存问题(例如:内存泄漏、dangling pointer)。零、托管资源在 .NET 中一个经典的资源管理的例子就是 GC 对循环引用的管理。 GC 的 Mark and Compact ...

2020-04-09 00:34:38

正确使用 new 修饰符

几乎 .NET 所有开发人员都知道 new 修饰符可以重新定义从基类中继承的非虚成员,但是大部分开发人员并不知道怎么才能正确使用,甚至出现了滥用的情况。零、纠正常犯错误讲解如何正确使用 new 修饰符前我们先来看一个段代码。public class DemoBase{ public void Method() { Console.WriteLine("Hel...

2020-04-06 16:32:56

减少装箱与拆箱

在 .NET 中存在一个的冲突,值类型不应该被设计为多态类型,但是 .NET Framework 又必须把 System.Object 设计为引用类型,并把它作为整个对象体系的基础。针对这一冲突 .NET 引入了装箱与拆箱。所谓的装箱就是把值类型放在非类型化的引用对象中,使得需要使用引用类型的地方也可以使用值类型,而拆箱指的是把已经装箱的值复制出来一份。在只能使用 System.Object 类型...

2020-04-05 20:09:05

正确调用事件处理程序

不管是刚接触 C# 还是已经具有多年开发经验的大部分人会觉得事件处理很简单,只需要把事件定义好然后在需要的时候出发它就可以了。其实这种想法是错误的,这里面有很多需要注意的问题。下面这段代码是大部分开发人员经常使用的定义事件处理程序的方法。public class EventDemo{ private EventHandler<int> demo; public vo...

2020-03-29 11:06:20

非.NET内容迁移

即日起该博客只发布与.NET有关的文章,其他文章转至喵叔和蟒蛇

2020-03-24 23:13:36

委托表示回调

敬告:本篇文章是我原创所写,首发于 CSDN Blog,未经本人授权任何网站、公众号、App 不允许转载,授权的网站、公众号、App 需明确标识本篇文章首发地址。需转载请联系 494324190@qq.com回调是一种由服务端提供一部反馈的机制,它在某些情况下会涉及到多线程或者为同步更新提供入口,在 C# 中如果要编写良好的回调那么就必须用委托来表示回调。委托我们经常用在事件处理的时候,我...

2020-03-21 13:58:20

一文搞定泛型知识

敬告:本篇文章是我原创所写,首发于 51CTO 技术网站,未经本人授权任何网站、公众号、App 不允许转载,授权的网站、公众号、App 需明确标识本篇文章首发地址。需转载请联系 494324190@qq.com泛型是程序设计语言的一种风格,允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。泛型在 .NET 中应用尤其广泛,泛型是在 .NET...

2020-03-21 12:44:58

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-前二十名
    博客之星-前二十名
    授予每年博客之星评选结果第11-20名的用户
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。